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

    /*
    public IFeatureWorkspace OpenShpFeaWS(string strShapeFolder, string strShapeName)
    {

    IWorkspaceFactory pWSF = new ShapefileWorkspaceFactoryClass();
    IFeatureWorkspace pWS = (IFeatureWorkspace)pWSF.OpenFromFile(strShapeFolder, 0);

    return pWS;
    }

    public IFeatureWorkspace OpenMdbFeaWS(string strMdbPath)
    {
    string mdbfileName = System.IO.Path.GetFileNameWithoutExtension(strMdbPath); //test
    string fileName = System.IO.Path.GetFileName(strMdbPath);//返回文件名 test.mdb
    string fileDirectory = System.IO.Path.GetDirectoryName(strMdbPath);//返回文件目录 f://temp

    IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
    IWorkspaceName workspaceName = pWorkspaceFactory.Create(fileDirectory, mdbfileName, null, 0);
    IName name = workspaceName as IName;
    IWorkspace workspace = (IWorkspace)name.Open();
    //IFeatureWorkspace pFeWs = workspace as IFeatureWorkspace;

    //通过已有工作空间创建
    ESRI.ArcGIS.Geodatabase.IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory();
    ESRI.ArcGIS.Geodatabase.IFeatureWorkspace pFeWs = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)wsf.OpenFromFile(strMdbPath, 0);

    return pFeWs;
    }

    public bool CreateMdbfile(string strMdbFileName)
    {
    if (!File.Exists(strMdbFileName))
    {
    string mdbfileName = System.IO.Path.GetFileNameWithoutExtension(strMdbFileName); //test
    string fileName = System.IO.Path.GetFileName(strMdbFileName);//返回文件名 test.mdb
    string fileDirectory = System.IO.Path.GetDirectoryName(strMdbFileName);//返回文件目录 f://temp
    if (mdbfileName == "") return false;
    IWorkspaceFactory workspaceFactory = new AccessWorkspaceFactoryClass();
    IWorkspaceName workspaceName = workspaceFactory.Create(fileDirectory, mdbfileName, null, 0);
    IName name = workspaceName as IName;
    IWorkspace workspace = (IWorkspace)name.Open();
    IFeatureWorkspace pFeWs = workspace as IFeatureWorkspace;

    return true;
    }
    else
    {
    return false;
    }

    }

    /// <summary>
    /// 创建要素集 konghuifang 20171017
    /// </summary>
    /// <param name="strGeoFolder"></param>
    /// <param name="pFeatureClassName"></param>
    /// <param name="wkt"></param>
    /// <returns></returns>
    public IFeatureClass CreateFeatureClass(string pFeatureClassName, string wkt, IFeatureWorkspace pWS)
    {

    //打开工作空间
    const string strShapeFieldName = "shape";

    //设置字段集
    IFields pFields = new FieldsClass();
    IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields;

    //设置字段
    IField pField = new FieldClass();
    IFieldEdit pFieldEdit = (IFieldEdit)pField;


    //创建类型为几何类型的字段
    pFieldEdit.Name_2 = strShapeFieldName;
    pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;

    //为esriFieldTypeGeometry类型的字段创建几何定义,包括类型和空间参照
    IGeometryDef pGeoDef = new GeometryDefClass(); //The geometry definition for the field if IsGeometry is TRUE.

    //创建地理坐标系对象
    ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
    ISpatialReference spatialReference = spatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(@"E: empSuzhou_1954_3_Degree_GK_CM_120E.prj");//.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

    if (wkt.ToUpper().Contains("POLYGON") || wkt.ToUpper().Contains("MULTIPOLYGON"))
    {

    IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;
    pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
    pGeoDefEdit.SpatialReference_2 = spatialReference;
    }

    else if (wkt.ToUpper().Contains("POLYLINE"))
    {
    IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;
    pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
    pGeoDefEdit.SpatialReference_2 = spatialReference;
    }

    else if (wkt.ToUpper().Contains("POINT"))
    {
    IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;
    pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
    pGeoDefEdit.SpatialReference_2 = spatialReference;
    }

    pFieldEdit.GeometryDef_2 = pGeoDef;
    pFieldsEdit.AddField(pField);

    //添加其他的字段
    pField = new FieldClass();
    pFieldEdit = (IFieldEdit)pField;
    pFieldEdit.Name_2 = "wkt";
    pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
    pFieldsEdit.AddField(pField);

    IField pField2 = new FieldClass();
    IFieldEdit pFieldEdit2 = (IFieldEdit)pField2;
    pFieldEdit2.Type_2 = esriFieldType.esriFieldTypeOID;
    pFieldsEdit.AddField(pField2);

    IField pField3 = new FieldClass();
    IFieldEdit pFieldEdit3 = (IFieldEdit)pField3;
    pFieldEdit3.Name_2 = "str1";
    pFieldEdit3.Type_2 = esriFieldType.esriFieldTypeString;
    pFieldsEdit.AddField(pField3);

    IField pField4 = new FieldClass();
    IFieldEdit pFieldEdit4 = (IFieldEdit)pField4;
    pFieldEdit4.Name_2 = "str2";
    pFieldEdit4.Type_2 = esriFieldType.esriFieldTypeString;
    pFieldsEdit.AddField(pField4);

    //创建shapefile
    IFeatureClass pFeatureClss = pWS.CreateFeatureClass(pFeatureClassName, pFields, null, null, esriFeatureType.esriFTSimple, strShapeFieldName, "");

    return pFeatureClss;

    }

    */

  • 相关阅读:
    Ext JS学习第三天 我们所熟悉的javascript(二)
    Ext JS学习第二天 我们所熟悉的javascript(一)
    Ext JS学习第十七天 事件机制event(二)
    Ext JS学习第十六天 事件机制event(一)
    Ext JS学习第十五天 Ext基础之 Ext.DomQuery
    Ext JS学习第十四天 Ext基础之 Ext.DomHelper
    Ext JS学习第十三天 Ext基础之 Ext.Element
    Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
    针对错误 “服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF” 的原因分析
    C# 使用HttpWebRequest通过PHP接口 上传文件
  • 原文地址:https://www.cnblogs.com/khfang/p/7685572.html
Copyright © 2011-2022 走看看