zoukankan      html  css  js  c++  java
  • ArcEngine创建ShapeFile文件3


    /*

    /// <summary>
    /// 将wkt转换为shapefile konghuifang 20171017
    /// </summary>
    /// <param name="strShapeFolder"></param>
    /// <param name="strShapeName"></param>
    /// <param name="wkt"></param>
    public void ConvertFeaClaToShp(string strShapeFolder, string strShapeName, string wkt)
    {

    IFeatureClass pointFC = null;
    IFeatureClass polylineFC = null;
    IFeatureClass polygonFC = null;


    IFeatureWorkspace pFWS = OpenShpFeaWS(strShapeFolder, strShapeName);

    if (wkt.ToUpper().Contains("POLYGON"))
    {
    //创建面要素集
    polygonFC = CreateFeatureClass(strShapeName, wkt, pFWS);

    }
    else if (wkt.ToUpper().Contains("POLYLINE"))
    {
    //创建线要要素集
    polylineFC = CreateFeatureClass(strShapeName, wkt, pFWS);
    }

    else if (wkt.ToUpper().Contains("POINT"))
    {
    //创建点要素集(String featureClassName, esriGeometryType type, ISpatialReference sr, IFeatureWorkspace featureWorkspace, List<IField> fieldList)
    pointFC = CreateFeatureClass(strShapeName, wkt, pFWS);
    }


    string[] wktArray = wkt.Split(';');
    string geoType = string.Empty;
    foreach (string s in wktArray)
    {
    //geoType = s.Substring(0, s.IndexOf("(")).Trim().ToLower();

    IGeometry geo = GeometryConverter.ConvertWKTToGeometry(s);
    if (geo.GeometryType == esriGeometryType.esriGeometryPoint ||
    geo.GeometryType == esriGeometryType.esriGeometryMultipoint)
    {
    IFeature pfea = pointFC.CreateFeature();
    pfea.Shape = geo;
    pfea.Store();
    }
    else if (geo.GeometryType == esriGeometryType.esriGeometryLine ||
    geo.GeometryType == esriGeometryType.esriGeometryPolyline)
    {
    IFeature pfea = polylineFC.CreateFeature();
    pfea.Shape = geo;
    pfea.Store();
    }
    else if (geo.GeometryType == esriGeometryType.esriGeometryPolygon)
    {
    IFeature pfea = polygonFC.CreateFeature();
    pfea.Shape = geo;

    int fieldIndex = pfea.Fields.FindField("wkt");
    object obc = s as object;

    pfea.set_Value(fieldIndex, obc);

    pfea.Store();

    }
    else
    {
    throw new Exception("WKT生成shapefile错误");
    }

    }

    }

    /// <summary>
    /// 将wkt转换为shapefile konghuifang 20171017
    /// </summary>
    /// <param name="strMdbFolder"></param>
    /// <param name="strMdbName"></param>
    /// <param name="wkt"></param>
    public void ConvertFeaClaToMdb(string strMdbPath, string pFeatureClassName, string wkt)
    {

    IFeatureClass pFeatureClass = CreateFeatureClass(strMdbPath, pFeatureClassName, wkt);

    string[] wktArray = wkt.Split(';');
    string geoType = string.Empty;
    foreach (string s in wktArray)
    {

    IGeometry geo = GeometryConverter.ConvertWKTToGeometry(s);
    if (geo.GeometryType == esriGeometryType.esriGeometryPoint ||
    geo.GeometryType == esriGeometryType.esriGeometryMultipoint)
    {
    IFeature pfea = pFeatureClass.CreateFeature();
    pfea.Shape = geo;
    pfea.Store();
    }
    else if (geo.GeometryType == esriGeometryType.esriGeometryLine ||
    geo.GeometryType == esriGeometryType.esriGeometryPolyline)
    {
    IFeature pfea = pFeatureClass.CreateFeature();
    pfea.Shape = geo;
    pfea.Store();
    }
    else if (geo.GeometryType == esriGeometryType.esriGeometryPolygon)
    {
    IFeature pfea = pFeatureClass.CreateFeature();
    pfea.Shape = geo;

    //int fieldIndex = pfea.Fields.FindField("wkt");
    //object obc = s as object;
    //pfea.set_Value(fieldIndex, obc);

    pfea.Store();

    }
    else
    {
    throw new Exception("WKT生成要素类错误");
    }

    }

    }

    */

  • 相关阅读:
    Android Studio 快捷键(包含自定义)终极版
    C#开发模式——dll多级引用的问题
    WPF实现QQ群文件列表动画(二)
    WPF实现QQ群文件列表动画(一)
    VS2010Datatable查看器查看超时(Microsoft.VisualStudio.DebuggerVisualizers)
    WPF里ItemsControl的分组实现
    WPF触控程序开发(四)——MultiTouchVista_-_second_release_-_refresh_2的救赎
    WPF异步回调时回调函数如何获取异步函数产生的变量
    裸奔着造房子——对政府禁止采购Win8系统的一些看法
    全球征集-如何实现回文SQL的查询
  • 原文地址:https://www.cnblogs.com/khfang/p/7685574.html
Copyright © 2011-2022 走看看