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跨域问题: 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 许可文件详解》 ArcGIS Server是Esri公司开发的一款强大的地理信息系统(GIS)服务器软件,它允许用户在互联网、内联网或局域网环境下发布、管理和共享地理空间数据。在这个场景中,我们...
**ArcGIS Server 10.4 许可文件详解** ArcGIS Server是Esri公司推出的一款强大的地理信息系统(GIS)服务器软件,它允许用户在分布式环境中发布、管理和共享地理空间数据和服务。在ArcGIS Server 10.4版本中,许可...
ArcGIS Server是Esri公司的一款强大的地理信息系统(GIS)服务器软件,用于在组织内部或互联网上发布、管理和共享地理信息和服务。版本10.8.1代表了该软件的一个更新迭代,提供了更多功能和性能改进。"授权"是使用...
地理处理是GIS的核心功能之一,10.5版本的ArcGIS Server支持创建和执行复杂的地理处理模型,并将其作为服务发布。这使得用户能够远程执行分析,例如缓冲区分析、地形分析、网络分析等,无需拥有ArcGIS Desktop等...
ArcGIS Server是Esri公司的一款强大的地理信息系统(GIS)服务器软件,它允许用户在Web环境中发布、管理和共享地理信息。这个压缩包包含了从10.0到10.5版本的ArcGIS Server的ecp文件,这些文件对于理解和操作ArcGIS ...
【ArcGIS Server 10.2】是一款强大的地理信息系统(GIS)服务器软件,由Esri公司开发,用于在企业级环境中发布、管理和共享地理服务。它允许用户将地图、地理处理工具、空间数据以及应用程序部署到网络上,使得多个...
在日常工作中,很多用户在安装并配置好ArcGIS Server之后,由于工作性质或其他原因,可能会有一段时间不使用该系统。随着时间的推移,很容易忘记之前设置的登录密码。一旦忘记密码,将无法正常访问和管理ArcGIS ...
ArcGIS Server 10.5 是一款由Esri公司开发的强大的地理信息系统(GIS)服务器软件,用于在组织内部或互联网上发布、管理和共享地理空间数据和服务。它提供了丰富的地图和地理处理服务,使得用户可以在线进行地理分析...
arcgis server 10.7.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 是一款由 Esri 开发的企业级地理信息系统平台,它支持多种地理空间数据的管理与分发。通过 ArcGIS Server,用户可以发布地图服务、地理处理服务等,...
创建`.ecp`文件的步骤通常包括在ArcGIS Server Manager中选择“导出”选项,然后指定一个目标位置来保存`.ecp`文件。这个文件包含了服务器的元数据,包括所有服务的详细信息,如服务的定义、地图、数据源、安全设置...
首先,需要创建一个专门的用户来运行 ArcGIS Server,例如 arcgis user。然后,需要创建一个安装目录,例如 /arcgis,用于存储 ArcGIS Server 的安装文件。最后,需要添加 hosts 文件,以便 ArcGIS Server 可以正确...
"ArcgisServer103.ecp" 文件是与这个版本相关的特定文件,它可能包含了一系列配置参数、服务定义和元数据,用于设置和管理ArcGIS Server实例。 1. **ECP文件的含义**:ECP是“Enterprise Configuration Package”的...
1. **地图服务创建**:首先,用户在ArcGIS Server上创建一个地图服务,该服务基于地图文档(MXD)或其他数据源。地图服务包含了地图的层、样式、比例尺等信息。 2. **设置缓存参数**:在地图服务的配置中,用户需要...
4. **数据管理**:ArcGIS Server可以管理各种地理数据,如Shapefiles、Geodatabases、栅格数据等,并支持数据的缓存,提升服务响应速度。 5. **地理处理**:内置的地理处理工具集使得用户可以在服务器端执行复杂的...
8. **发布和管理服务**:通过ArcGIS Server Manager或ArcGIS Desktop创建和发布地图服务,与其他用户共享地理信息。 9. **安全性和访问控制**:配置身份验证机制,如Active Directory集成,以及服务和数据的访问...
### 局域网内以ArcGIS Server Local的方式连接ArcGIS Server服务器 #### 一、目的 在局域网环境中,当Web站点与ArcGIS Server服务不在同一台机器上时,或者是在多人协作开发的情况下需要共享同一台服务器上的服务...
- 在命令行中,定位到 AGSSOM.exe 所在的路径,例如 "C:\arcgisserver\directories\arcgisserver\tools\agsadmin"(具体路径取决于你的安装位置)。 - 输入命令 `AGSSOM.exe -admin -s <server_url> -u <username>...