`

ArcGIS Server SOC创建shape

阅读更多
C# - Create Shapefile Programmatically PDF Print E-mail

Written by Steve Gourley,

When I first starting looking into creating a shapefile programmatically, I thought it would be a piece of cake since there is so much reference code out there from VBA GIS users. ArcGIS Server is not a VBA editor within ArcMap though and there were a few hurdles to jump over to make this work. Below is the code, I hope it makes your day. It would have made mine to find this somewhere.

Notes: If you get this error code System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80040258 or System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80040351

try creating your objects with the IServerContext.CreateObject method.

if you get this error code System.Runtime.InteropServices.COMException: Invalid class string (Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING))

Check that your CLSID string is correct. Good luck finding a list of these - it's mostly an educated guessing game.





public static void CreateShapefile()

{

    string shapeName = "test2";

    string savePath = string.Format(@"C:\arcgisserver\arcgisoutput\{0}\", shapeName);

    string shapeFieldName = "Shape";



    ESRI.ArcGIS.Server.IServerContext sC = null;

    ESRI.ArcGIS.Geodatabase.IWorkspace wP = null;



    try

    {

        ConnectToWRI(out wP, out sC);

    }

    catch (Exception)

    {

        return;

    }



    if (Directory.Exists(savePath))

    {

        Directory.Delete(savePath, true);

    }



    Directory.CreateDirectory(savePath);



    ShapefileWorkspaceFactory workspaceFactory = (ShapefileWorkspaceFactory)sC.CreateObject("esriDataSourcesFile.ShapefileWorkspaceFactory.1");

    IFeatureWorkspace fws = workspaceFactory.OpenFromFile(savePath, 0) as IFeatureWorkspace;



    IFields fieldCollection = (IFields)sC.CreateObject("esriGeoDatabase.Fields");

    IFieldsEdit editableFieldCollection = (IFieldsEdit)fieldCollection;



    IField field = (IField)sC.CreateObject("esriGeoDatabase.Field");

    IFieldEdit editableField = (IFieldEdit)field;



    editableField.Name_2 = shapeFieldName;

    editableField.Type_2 = esriFieldType.esriFieldTypeGeometry;



    SpatialReferenceEnvironment spatialEnviro = (SpatialReferenceEnvironment)sC.CreateObject("esriGeometry.SpatialReferenceEnvironment");

    IProjectedCoordinateSystem coordSystem = spatialEnviro.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983UTM_12N);



    IGeometryDef geometryDefinition = (IGeometryDef)sC.CreateObject("esriGeoDatabase.GeometryDef");

    IGeometryDefEdit editableGeomDefinition = (IGeometryDefEdit)geometryDefinition;

    editableGeomDefinition.GeometryType_2 = esriGeometryType.esriGeometryPolygon;

    editableGeomDefinition.SpatialReference_2 = coordSystem;



    editableField.GeometryDef_2 = geometryDefinition;

    editableFieldCollection.AddField(field);



    IField field2 = (IField)sC.CreateObject("esriGeoDatabase.Field");

    IFieldEdit editableField2 = (IFieldEdit)field2;



    editableField2.Length_2 = 25;

    editableField2.Name_2 = "Name";

    editableField2.Type_2 = esriFieldType.esriFieldTypeString;



    editableFieldCollection.AddField(field2);



    try

    {

        ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatClass = fws.CreateFeatureClass(shapeName, fieldCollection, null, null, esriFeatureType.esriFTSimple, shapeFieldName, "") as ESRI.ArcGIS.Geodatabase.IFeatureClass;

    }

    catch (Exception)

    {

        sC.ReleaseContext();

    }



    sC.ReleaseContext();

}
分享到:
评论

相关推荐

    解决arcgis server跨域问题

    解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开<ArcGIS Server> \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...

    arcgis server 10.2.2许可文件.zip

    《ArcGIS Server 10.2.2 许可文件详解》 ArcGIS Server是Esri公司开发的一款强大的地理信息系统(GIS)服务器软件,它允许用户在互联网、内联网或局域网环境下发布、管理和共享地理空间数据。在这个场景中,我们...

    ArcGIS Server 10.5 ecp

    地理处理是GIS的核心功能之一,10.5版本的ArcGIS Server支持创建和执行复杂的地理处理模型,并将其作为服务发布。这使得用户能够远程执行分析,例如缓冲区分析、地形分析、网络分析等,无需拥有ArcGIS Desktop等...

    Arcgis server 10.8.1授权. ECP

    ArcGIS Server是Esri公司的一款强大的地理信息系统(GIS)服务器软件,用于在组织内部或互联网上发布、管理和共享地理信息和服务。版本10.8.1代表了该软件的一个更新迭代,提供了更多功能和性能改进。"授权"是使用...

    ArcGIS Server 10.4.rar

    **ArcGIS Server 10.4 许可文件详解** ArcGIS Server是Esri公司推出的一款强大的地理信息系统(GIS)服务器软件,它允许用户在分布式环境中发布、管理和共享地理空间数据和服务。在ArcGIS Server 10.4版本中,许可...

    ArcgisServer10.2.ecp.zip

    【ArcGIS Server 10.2】是一款强大的地理信息系统(GIS)服务器软件,由Esri公司开发,用于在企业级环境中发布、管理和共享地理服务。它允许用户将地图、地理处理工具、空间数据以及应用程序部署到网络上,使得多个...

    ArcGIS Server 10.0-10.5的ecp文件

    ArcGIS Server是Esri公司的一款强大的地理信息系统(GIS)服务器软件,它允许用户在Web环境中发布、管理和共享地理信息。这个压缩包包含了从10.0到10.5版本的ArcGIS Server的ecp文件,这些文件对于理解和操作ArcGIS ...

    arcgis server 10.5 Crack

    ArcGIS Server 10.5 是一款由Esri公司开发的强大的地理信息系统(GIS)服务器软件,用于在组织内部或互联网上发布、管理和共享地理空间数据和服务。它提供了丰富的地图和地理处理服务,使得用户可以在线进行地理分析...

    ArcGIS server 找回密码

    在日常工作中,很多用户在安装并配置好ArcGIS Server之后,由于工作性质或其他原因,可能会有一段时间不使用该系统。随着时间的推移,很容易忘记之前设置的登录密码。一旦忘记密码,将无法正常访问和管理ArcGIS ...

    arcgis server 10.7.1 安装包

    arcgis server 10.7.1 安装包

    arcgis server + desktop 10.6.1相关全部安装包。

    arcgis server10.6.1相关全部安装包。全部都在里面,注意只有安装包哈! ArcGIS_Data_Interop_for_Desktop_1061_163752.exe ArcGIS_Data_Interop_for_Server_1061_164013.exe ArcGIS_Data_Reviewer_for_Desktop_1061...

    arcgis server 动态创建地图服务

    ### ArcGIS Server 动态创建地图服务 #### 概述 ArcGIS Server 是一款由 Esri 开发的企业级地理信息系统平台,它支持多种地理空间数据的管理与分发。通过 ArcGIS Server,用户可以发布地图服务、地理处理服务等,...

    arcgis Server10.5.ecp

    创建`.ecp`文件的步骤通常包括在ArcGIS Server Manager中选择“导出”选项,然后指定一个目标位置来保存`.ecp`文件。这个文件包含了服务器的元数据,包括所有服务的详细信息,如服务的定义、地图、数据源、安全设置...

    ArcGIS Server Linux安装文档

    首先,需要创建一个专门的用户来运行 ArcGIS Server,例如 arcgis user。然后,需要创建一个安装目录,例如 /arcgis,用于存储 ArcGIS Server 的安装文件。最后,需要添加 hosts 文件,以便 ArcGIS Server 可以正确...

    arcgisserver切图原理

    1. **地图服务创建**:首先,用户在ArcGIS Server上创建一个地图服务,该服务基于地图文档(MXD)或其他数据源。地图服务包含了地图的层、样式、比例尺等信息。 2. **设置缓存参数**:在地图服务的配置中,用户需要...

    ArcgisServer的ecp文件 10.3版本

    "ArcgisServer103.ecp" 文件是与这个版本相关的特定文件,它可能包含了一系列配置参数、服务定义和元数据,用于设置和管理ArcGIS Server实例。 1. **ECP文件的含义**:ECP是“Enterprise Configuration Package”的...

    ArcGIS Server 10.5安装包下载地址和ECP文件.rar

    8. **发布和管理服务**:通过ArcGIS Server Manager或ArcGIS Desktop创建和发布地图服务,与其他用户共享地理信息。 9. **安全性和访问控制**:配置身份验证机制,如Active Directory集成,以及服务和数据的访问...

    局域网内以ArcGIS Server Local的方式连接ArcGIS Server服务器

    ### 局域网内以ArcGIS Server Local的方式连接ArcGIS Server服务器 #### 一、目的 在局域网环境中,当Web站点与ArcGIS Server服务不在同一台机器上时,或者是在多人协作开发的情况下需要共享同一台服务器上的服务...

    重启ArcGis Server 服务工具

    - 在命令行中,定位到 AGSSOM.exe 所在的路径,例如 "C:\arcgisserver\directories\arcgisserver\tools\agsadmin"(具体路径取决于你的安装位置)。 - 输入命令 `AGSSOM.exe -admin -s <server_url> -u <username>...

    ArcGIS Server 10.2跨域jar包

    2. **放置jar包**:将jar文件添加到ArcGIS Server的`<arcgisserver_install_dir>/java/lib`目录下,这是ArcGIS Server加载自定义Java类的位置。 3. **配置服务器**:在ArcGIS Server管理器中,需要更新服务器的Web ...

Global site tag (gtag.js) - Google Analytics