public static IUniversalVectorDataReader GetUniversalDataReader(string filename, params object[] args) { if (DataReaderRegister == null || DataReaderRegister.Length == 0) { Log.WriterError("AgileMap", "GetUniversalDataReader(...)", "没有已经注册的数据读取器!"); return(null); } if (!File.Exists(filename)) { Log.WriterWarning("AgileMap", "GetUniversalDataReader(...)", "输入的参数文件名为空!"); return(null); } byte[] bs = null; try { using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { using (BinaryReader sr = new BinaryReader(fs)) { long len = 1024; if (fs.Length < 1024) { len = fs.Length; } bs = sr.ReadBytes((int)len); } } } catch (Exception ex) { Log.WriterWarning("AgileMap.DataReaderFactory", "GetUniversalDataReader(...)", ex.Message); return(null); } // foreach (Type readerType in DataReaderRegister) { try { IUniversalVectorDataReader rd = GetDataReader(readerType); if (rd == null) { continue; } if (rd.TryOpen(filename, bs)) { return(rd); } } catch (Exception Ex) { Log.WriterException("AgileMap.DataReaderFactory", "GetUniversalDataReader(...)", Ex); continue; } } return(null); }
public override void BeginRead() { try { IUniversalVectorDataReader udr = VectorDataReaderFactory.GetUniversalDataReader(_fileUrl); _reader = udr as IVectorFeatureDataReader; _reader.SetArgsOfLeveling(_argOfLeveling); _readIsFinished = false; } finally { if (GlobalCacher.VectorDataGlobalCacher != null && GlobalCacher.VectorDataGlobalCacher.IsEnabled && GlobalCacher.VectorDataGlobalCacher.IsGllPrjOfActiveViewer) { GlobalCacher.VectorDataGlobalCacher.Request(_fileUrl); } } }
protected override bool Execute(IContextMessage contextMessage) { try { IUniversalVectorDataReader urd = VectorDataReaderFactory.GetUniversalDataReader(_filename); if (urd == null) { contextMessage.AddError("读取矢量文件\"" + _filename + "\"失败。"); return(false); } Feature[] fets = (urd as IVectorFeatureDataReader).Features; using (IDataImporter imp = new DataImporter()) { imp.Import(fets, _featureClassDef, _dbConnection, _tracker); } return(true); } catch (Exception ex) { contextMessage.AddError(ex.Message); return(false); } }
private bool ResFieldIsOK(out IVectorFeatureDataReader vdr) { vdr = null; IUniversalVectorDataReader udr = VectorDataReaderFactory.GetUniversalDataReader(_shapefile); if (udr == null) { return(false); } vdr = udr as IVectorFeatureDataReader; string[] fields = vdr.Fields; if (fields == null || fields.Length == 0) { return(false); } for (int i = 0; i < fields.Length; i++) { fields[i] = fields[i].ToUpper(); } foreach (FieldMap map in _fieldMaps) { if (map.ResField.FieldName.ToUpper() == "SHAPE.X") { continue; } if (map.ResField.FieldName.ToUpper() == "SHAPE.Y") { continue; } if (Array.IndexOf(fields, map.ResField.FieldName.ToUpper()) < 0) { return(false); } } return(true); }