Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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);
         }
     }
 }
Exemplo n.º 3
0
 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);
     }
 }
Exemplo n.º 4
0
        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);
        }