zoukankan      html  css  js  c++  java
  • gis数据格式转换(数据导入)ConvertFeaCls

    本文主要对数据导入等里 常用的不同格式数据创建、转换等 进行代码示例。主要用到IFeatureDataConverter.ConvertFeatureClass方法。

     

    代码如下,难度不大,只是个技巧问题:

     

    函数:

    private void ConvertFeaCls(IWorkspace workspaceSource, IWorkspace workspaceTar, stringsSorceFeaClsName, string sTarFeaClsName, string sFeaDTName)
    
            {
    
                IFeatureClass feaCls = (workspaceSource asIFeatureWorkspace).OpenFeatureClass(sSorceFeaClsName);
    
                String shapeFieldName = feaCls.ShapeFieldName;
    
                int shapeFieldIndex = feaCls.FindField(shapeFieldName);
    
                IField shapeField = feaCls.Fields.get_Field(shapeFieldIndex);
    
                IGeometryDef geometryDef = shapeField.GeometryDef;
    
     
    
                //create source workspace name  
    
                IDataset sourceWorkspaceDataset = (IDataset)workspaceSource;
    
                IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName;
    
                //create source dataset name  
    
                IFeatureClassName sourceFeatureClassName = new FeatureClassNameClass();
    
                IDatasetName sourceDatasetName = (IDatasetName)sourceFeatureClassName;
    
                sourceDatasetName.WorkspaceName = sourceWorkspaceName;
    
                sourceDatasetName.Name = sSorceFeaClsName;
    
     
    
                //create target workspace name  
    
                IDataset tarWorkspaceDataset = (IDataset)workspaceTar;
    
                IWorkspaceName tarWorkspaceName = (IWorkspaceName)tarWorkspaceDataset.FullName;
    
                //create target dataset name  
    
                IFeatureClassName tarFeatureClassName = new FeatureClassNameClass();
    
                IDatasetName tarDatasetName = (IDatasetName)tarFeatureClassName;
    
                tarDatasetName.WorkspaceName = tarWorkspaceName;
    
                tarDatasetName.Name = sTarFeaClsName;
    
     
    
                IFeatureDatasetName tarFeatureDatasetName = new FeatureDatasetNameClass();
    
                (tarFeatureDatasetName as IDatasetName).WorkspaceName = tarWorkspaceName;
    
                (tarFeatureDatasetName as IDatasetName).Name = sFeaDTName;
    
     
    
                if (string.IsNullOrEmpty(sFeaDTName))
    
                {
    
                    tarFeatureDatasetName = null;
    
                }
    
     
    
                IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();
    
                featureDataConverter.ConvertFeatureClass(sourceFeatureClassName, null, tarFeatureDatasetName, tarFeatureClassName, geometryDef, feaCls.Fields, "", 1000, 0);    // Check for errors.
    
            }

     

    调用:

               

     IWorkspaceFactory2 workspaceFactory = new ShapefileWorkspaceFactoryClass() asIWorkspaceFactory2;
    
                IWorkspace workspace = workspaceFactory.OpenFromFile(@"E:jhl", 0);
    
                IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
    
                IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(Functions.g_ROAD);
    
               
    
                IWorkspace workspace2 = workspaceFactory.OpenFromFile(@"E:", 0);
    
                DeleteShapeFileIFExist(@"E:", "test6");
    
                ConvertFeaCls(workspace, workspace2, Functions.g_ROAD,  "test6",string.Empty);
  • 相关阅读:
    (转)android头像设置:从本地照片库或拍照获取并剪裁
    获取短信验证码之后按钮背景变化并且出现倒计时
    欢迎界面的下方指示位置圆
    android 关于Toast重复显示解决方法
    判断是不是电话号码
    (转)根据ImageView的大小来压缩Bitmap,避免OOM
    (转)android屏幕适配
    GSON解析JSON
    Linux-命令-cut
    Linux-自疑惑
  • 原文地址:https://www.cnblogs.com/jhlong/p/5394477.html
Copyright © 2011-2022 走看看