- 浏览: 872249 次
文章分类
最新评论
-
mxdxm:
总结不错,赞
NoSQL学习笔记(三)之BigTable -
itbj00:
不错,有实际案例的文章,看着简单。
以公司实际应用讲解OpenStack到底是什么 -
追梦--:
赞一个!
数据库插入百万数据 -
enet_java:
<artifactId>PM_Member_EAR ...
使用maven2 打ear包
基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)-AE常用操作代码
本来打算睡觉了,但是突然看到自己保留的一个单独的C#文件,原来是AE常用操作的代码,这也是自己在做ArcGIS空间数据管理平台的项目时积累下来的,这里贴出来供需要使用的人。
/******************************************************** * * 本类部分功能接口依附于_workSpaceInstance * 必须首先使用CreateWorkspace或者OpenWorkspaceFromFile * 实例化_workSpaceInstance,才能使用 * ********************************************************/ using System; using System.Windows.Forms; using System.IO; using System.Data; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.CatalogUI; namespace ControlLibrary { class RuleDBCreater { private static IWorkspace _workSpaceInstance; public RuleDBCreater() { // // TODO: 在此处添加构造函数逻辑 // } public static void setWorkSpaceInstance(IWorkspace ws) { _workSpaceInstance = ws; } public static IWorkspace getWorkSpaceInstance() { return _workSpaceInstance; } /// <summary> /// 创建规则数据库workspace /// </summary> /// <param name="workspaceType"></param> /// <param name="WorkspaceDirectory"></param> /// <returns>返回workspace实例</returns> public static IWorkspace CreateWorkspace(string pName, string pPath) { IWorkspaceFactory workspaceFactory = null; Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory"); workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); Directory.CreateDirectory(pPath); IWorkspaceName workspaceName = workspaceFactory.Create(pPath, pName,null, 0); IName Name = (IName)workspaceName; _workSpaceInstance = (IWorkspace)(Name.Open()); return _workSpaceInstance; } /// <summary> /// 从文件创建规则数据库workspace /// </summary> /// <param name="WorkspaceDirectory"></param> /// <returns>返回workspace实例</returns> public static IWorkspace OpenWorkspaceFromFile(string WorkspaceDirectory) { IWorkspaceFactory workspaceFactory = null; Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory"); workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); _workSpaceInstance = workspaceFactory.OpenFromFile(WorkspaceDirectory, 0); return _workSpaceInstance; } /// <summary> /// 创建要素数据集 /// </summary> /// <param name="name"></param> /// <returns>IFeatureDataset</returns> public static IFeatureDataset CreateFeatureDataSet(/*string name,ISpatialReference srf*/) { IFeatureDatasetDialog fdlg = new FeatureDatasetDefDialog(); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)_workSpaceInstance; return fdlg.DoModalCreate(featureWorkspace, 0); //if (_workSpaceInstance == null) return null; //IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)_workSpaceInstance; //IFeatureDataset tmp = featureWorkspace.CreateFeatureDataset(name, srf); //return tmp; } /// <summary> /// 删除要素数据集 /// </summary> /// <param name="name"></param> /// <param name="srf"></param> /// <returns></returns> public static void DeleteFeatureDataSet(string name) { IFeatureDataset fds = GetFeatureDataSet(name); if (fds != null) fds.Delete(); } /// <summary> /// 获取数据库中IFeatureDataset /// </summary> /// <param name="name"></param> /// <returns></returns> public static IFeatureDataset GetFeatureDataSet(string name) { if (_workSpaceInstance == null) return null; IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)_workSpaceInstance; IFeatureDataset tmp = featureWorkspace.OpenFeatureDataset(name); return tmp; } /// <summary> /// 重命名DataSet /// </summary> /// <param name="fds"></param> /// <param name="newname"></param> public static void RenameFeatureDataSet(IFeatureDataset fds,string newname) { if (fds.CanRename()) { fds.Rename(newname); } } /// <summary> /// 获取IFeatureDataset空间参照 /// </summary> /// <param name="ds"></param> /// <returns></returns> public static ISpatialReference GetFdsSpatialReference(IFeatureDataset ds) { IGeoDataset gds = ds as IGeoDataset; return gds.SpatialReference; } /// <summary> /// 设置IFeatureDataset空间参照 /// </summary> /// <param name="ds"></param> /// <returns></returns> public static void SetFdsSpatialReference(IFeatureDataset ds) { IGeoDataset gds = ds as IGeoDataset; // Cast the geodataset to the IGeoDatasetSchemaEdit interface and set the Spatial Reference. IGeoDatasetSchemaEdit geoDatasetSchemaEdit = (IGeoDatasetSchemaEdit)gds; if (geoDatasetSchemaEdit.CanAlterSpatialReference) { geoDatasetSchemaEdit.AlterSpatialReference(EditSpatialReferenceDlg(gds.SpatialReference)); } } /// <summary> /// 创建属性字段 /// </summary> /// <param name="shapeType"></param> /// <param name="dgrc"></param> /// <param name="spr"></param> /// <returns></returns> public static IFields CreateFields(string shapeType, DataTable dt, ISpatialReference spr,bool hasM,bool hasZ) { IField oField = new FieldClass(); IFieldEdit oFieldEdit = oField as IFieldEdit; IFields oFields = new FieldsClass(); IFieldsEdit oFieldsEdit = oFields as IFieldsEdit; IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit geometryDefEdit = geometryDef as IGeometryDefEdit; foreach(DataRow dr in dt.Rows) { switch (dr[1].ToString()) { case "Object ID": oFieldEdit.Name_2 = "ObjectID"; oFieldEdit.AliasName_2 = "FID"; oFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; oFieldsEdit.AddField(oField); break; case "Multipoint Features": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = "SHAPE"; oFieldEdit.IsNullable_2 = true; oFieldEdit.Required_2 = true; geometryDefEdit.AvgNumPoints_2 = 1; geometryDefEdit.GridCount_2 = 0; geometryDefEdit.HasM_2 = hasM; geometryDefEdit.HasZ_2 = hasZ; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryMultipoint; geometryDefEdit.SpatialReference_2 = spr; oFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; oFieldEdit.GeometryDef_2 = (GeometryDef)geometryDefEdit; oFieldsEdit.AddField(oField); break; case "MultiPatch Features": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = "SHAPE"; oFieldEdit.IsNullable_2 = true; oFieldEdit.Required_2 = true; geometryDef = new GeometryDefClass(); geometryDefEdit = geometryDef as IGeometryDefEdit; geometryDefEdit.AvgNumPoints_2 = 1; geometryDefEdit.GridCount_2 = 0; geometryDefEdit.HasM_2 = hasM; geometryDefEdit.HasZ_2 = hasZ; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryMultiPatch; geometryDefEdit.SpatialReference_2 = spr; oFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; oFieldEdit.GeometryDef_2 = (GeometryDef)geometryDefEdit; oFieldsEdit.AddField(oField); break; case "Point Features": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = "SHAPE"; oFieldEdit.IsNullable_2 = true; oFieldEdit.Required_2 = true; geometryDef = new GeometryDefClass(); geometryDefEdit = geometryDef as IGeometryDefEdit; geometryDefEdit.AvgNumPoints_2 = 1; geometryDefEdit.GridCount_2 = 0; geometryDefEdit.HasM_2 = hasM; geometryDefEdit.HasZ_2 = hasZ; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; geometryDefEdit.SpatialReference_2 = spr; oFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; oFieldEdit.GeometryDef_2 = (GeometryDef)geometryDefEdit; oFieldsEdit.AddField(oField); break; case "Line Features": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = "SHAPE"; oFieldEdit.IsNullable_2 = true; oFieldEdit.Required_2 = true; geometryDef = new GeometryDefClass(); geometryDefEdit = geometryDef as IGeometryDefEdit; geometryDefEdit.AvgNumPoints_2 = 1; geometryDefEdit.GridCount_2 = 0; geometryDefEdit.HasM_2 = hasM; geometryDefEdit.HasZ_2 = hasZ; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryLine; geometryDefEdit.SpatialReference_2 = spr; oFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; oFieldEdit.GeometryDef_2 = (GeometryDef)geometryDefEdit; oFieldsEdit.AddField(oField); break; case "Polygon Features": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = "SHAPE"; oFieldEdit.IsNullable_2 = true; oFieldEdit.Required_2 = true; geometryDef = new GeometryDefClass(); geometryDefEdit = geometryDef as IGeometryDefEdit; geometryDefEdit.AvgNumPoints_2 = 1; geometryDefEdit.GridCount_2 = 0; geometryDefEdit.HasM_2 = hasM; geometryDefEdit.HasZ_2 = hasZ; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPolygon; geometryDefEdit.SpatialReference_2 = spr; oFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; oFieldEdit.GeometryDef_2 = (GeometryDef)geometryDefEdit; oFieldsEdit.AddField(oField); break; case "Short Int": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = dr[0].ToString(); oFieldEdit.Type_2 = esriFieldType.esriFieldTypeSmallInteger; oFieldEdit.IsNullable_2 = true; oFieldsEdit.AddField(oField); break; case "Long Int": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = dr[0].ToString(); oFieldEdit.Type_2 = esriFieldType.esriFieldTypeInteger; oFieldsEdit.AddField(oField); break; case "Float": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = dr[0].ToString(); oFieldEdit.Type_2 = esriFieldType.esriFieldTypeSingle; oFieldsEdit.AddField(oField); break; case "Double": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = dr[0].ToString(); oFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble; oFieldsEdit.AddField(oField); break; case "Text": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = dr[0].ToString(); oFieldEdit.Length_2 = 30; // Only string fields require that you set the length. oFieldEdit.Type_2 = esriFieldType.esriFieldTypeString; oFieldsEdit.AddField(oField); break; case "Date": oField = new FieldClass(); oFieldEdit = oField as IFieldEdit; oFieldEdit.Name_2 = dr[0].ToString(); oFieldEdit.Type_2 = esriFieldType.esriFieldTypeDate; oFieldsEdit.AddField(oField); break; //case "Guid": // IField fld12 = new FieldClass(); // IFieldEdit fldedt12 = (IFieldEdit)fld12; // fldedt12.Name_2 = dr[0].ToString(); // fldedt12.Type_2 = esriFieldType.esriFieldTypeGUID; // fieldsEdit.set_Field(i, fld12); // break; //case "Geomery": // IField fld13 = new FieldClass(); // IFieldEdit fldedt13 = (IFieldEdit)fld13; // fldedt13.Name_2 = dr[0].ToString(); // fldedt13.IsNullable_2 = true; // fldedt13.Required_2 = true; // IGeometryDef geometryDef13 = new GeometryDefClass(); // IGeometryDefEdit geometryDefEdit13 = (IGeometryDefEdit)geometryDef13; // geometryDef13 = new GeometryDefClass(); // geometryDefEdit13 = (IGeometryDefEdit)geometryDef13; // geometryDefEdit13.AvgNumPoints_2 = 1; // geometryDefEdit13.GridCount_2 = 0; // geometryDefEdit13.HasM_2 = hasM; // geometryDefEdit13.HasZ_2 = hasZ; // fldedt13.Type_2 = esriFieldType.esriFieldTypeGeometry; // geometryDefEdit13.GeometryType_2 = esriGeometryType.esriGeometryAny; // //Generate a default Spatial Reference // geometryDefEdit13.SpatialReference_2 = spr; // fldedt13.GeometryDef_2 = (GeometryDef)geometryDefEdit13; // fldedt13.Type_2 = esriFieldType.esriFieldTypeGeometry; // fieldsEdit.set_Field(i, fld13); // break; //case "Raster": // IField fld14 = new FieldClass(); // IFieldEdit fldedt14 = (IFieldEdit)fld14; // fldedt14.Name_2 = dr[0].ToString(); // fldedt14.Type_2 = esriFieldType.esriFieldTypeRaster; // fieldsEdit.set_Field(i, fld14); // break; } } return oFields; } /// <summary> /// 创建要素类 /// </summary> /// <param name="workspace"></param> /// <param name="featureDataset"></param> /// <param name="featureClassName"></param> /// <param name="fields"></param> /// <param name="CLSID"></param> /// <param name="CLSEXT"></param> /// <param name="strConfigKeyword"></param> /// <returns></returns> public static IFeatureClass CreateFeatureClass(IFeatureDataset featureDataset, String featureClassName, IFields fields) { if (_workSpaceInstance == null) return null; IFeatureClass featureClass = null; IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)_workSpaceInstance; // assign the class id value if not assigned ESRI.ArcGIS.esriSystem.UID CLSID = null; ESRI.ArcGIS.esriSystem.UID CLSEXT = null; string strConfigKeyword = ""; if (CLSID == null) { CLSID = new ESRI.ArcGIS.esriSystem.UIDClass(); CLSID.Value = "esriGeoDatabase.Feature"; } System.String strShapeField = ""; // locate the shape field for (Int32 j = 0; j < fields.FieldCount; j++) { esriFieldType dd = fields.get_Field(j).Type; if (dd == esriFieldType.esriFieldTypeGeometry) { strShapeField = fields.get_Field(j).Name; } } // finally create and return the feature class if (featureDataset != null) { featureClass = featureDataset.CreateFeatureClass(featureClassName, fields, CLSID, CLSEXT, esriFeatureType.esriFTSimple, strShapeField, strConfigKeyword); } return featureClass; } /// <summary> /// 获取FeatureClass从IFeatureDataset /// </summary> /// <param name="featDs"></param> /// <param name="className"></param> /// <returns></returns> public static IFeatureClass GetFeatureClassFromFeatureDataset(IFeatureDataset featDs, string className) { IFeatureClass featClass; IFeatureClassContainer fcContainer = featDs as IFeatureClassContainer; for (int i = 0; i < fcContainer.ClassCount; i++) { featClass = fcContainer.get_Class(i); if (RuleDBCreater.GetFeatureClassName(featClass) == className) { return featClass; } } return null; } /// <summary> /// 重命名FeatureClass /// </summary> /// <param name="fds"></param> /// <param name="newname"></param> public static void RenameFeatureClass(IFeatureClass fc,string newname) { IDataset ds = fc as IDataset; if (ds.CanRename()) { ds.Rename(newname); } } /// <summary> /// 从数据集删除要素类 /// </summary> /// <param name="featureDataset"></param> /// <param name="featureClassName"></param> /// <param name="fields"></param> /// <returns></returns> public static void DeleteFeatureClass(IFeatureDataset featureDataset, String featureClassName) { IFeatureClass fc = GetFeatureClassFromFeatureDataset(featureDataset, featureClassName); if (fc != null) { IDataset ds = fc as IDataset; if (ds.CanDelete()) { ds.Delete(); } } } /// <summary> /// 编辑空间参照 /// </summary> /// <param name="inputSpr"></param> /// <returns></returns> public static ISpatialReference EditSpatialReferenceDlg(ISpatialReference inputSpr) { ESRI.ArcGIS.CatalogUI.ISpatialReferenceDialog2 spatialReferenceDialog2 = new ESRI.ArcGIS.CatalogUI.SpatialReferenceDialogClass(); ISpatialReference spf = spatialReferenceDialog2.DoModalEdit(inputSpr, false, false, false, false, false, false, false, 0); return spf; } /// <summary> /// 创建空间参照 /// </summary> /// <param name="coordinateSystem"></param> /// <returns></returns> public static ISpatialReference CreateSpatialReferenceDlg()// { ESRI.ArcGIS.CatalogUI.ISpatialReferenceDialog2 spatialReferenceDialog2 = new ESRI.ArcGIS.CatalogUI.SpatialReferenceDialogClass(); ISpatialReference spatialReference = spatialReferenceDialog2.DoModalCreate(true, false, false, 0); //ISpatialReferenceTolerance spatialReferenceTolerance = spatialReference as ISpatialReferenceTolerance; return spatialReference; } public static ISpatialReference SetXYZMTolerance(ISpatialReference srf,double xytolerance,double ztolerance,double mtolerance) { ISpatialReferenceTolerance spatialReferenceTolerance = srf as ISpatialReferenceTolerance; //spatialReferenceTolerance.XYTolerance = xytolerance; //spatialReferenceTolerance.ZTolerance = ztolerance; //spatialReferenceTolerance.MTolerance = mtolerance; return srf; } public static void GetXYZMTolerance(ISpatialReference srf,out double xytolerance,out double ztolerance,out double mtolerance) { ISpatialReferenceTolerance spatialReferenceTolerance = srf as ISpatialReferenceTolerance; xytolerance = spatialReferenceTolerance.XYTolerance; ztolerance = spatialReferenceTolerance.ZTolerance; mtolerance = spatialReferenceTolerance.MTolerance; } /// <summary> /// 获取工作区内所有数据集名称 /// </summary> /// <param name="ws"></param> /// <returns></returns> public static IEnumDatasetName GetFeatureDataSetNames(IWorkspace ws) { return ws.get_DatasetNames(esriDatasetType.esriDTFeatureDataset); } public static bool IsArcDbFile(string path) { IWorkspaceFactory workspaceFactory = null; Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory"); workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); return workspaceFactory.IsWorkspace(path); } public static string GetFeatureClassName(IFeatureClass fc) { IDataset ds = fc as IDataset; return ds.Name; } public static IEnumFeatureClass GetFeatureClasses(IFeatureDataset fds) { IFeatureClassContainer pFeatureclassContainer = (IFeatureClassContainer)fds; return (IEnumFeatureClass)pFeatureclassContainer.Classes; } public static bool IsFeatureDataSetExist(string name) { //if (_workSpaceInstance == null) return true; IEnumDatasetName iEdn = GetFeatureDataSetNames(_workSpaceInstance); iEdn.Reset(); IDatasetName iDsn = iEdn.Next(); while (iDsn is IFeatureDatasetName) { if (iDsn.Name == name) return true; iDsn = iEdn.Next(); } return false; } public static bool IsFeatureClassExist(string dsname, string fcname) { IEnumFeatureClass iEfc = GetFeatureClasses(GetFeatureDataSet(dsname)); iEfc.Reset(); IFeatureClass fcn = iEfc.Next(); while (fcn is IFeatureClass) { if (fcname == fcn.AliasName) return true; fcn = iEfc.Next(); } return false; } /// <summary> /// 设置VerticalCoordinateSystem /// </summary> public static ISpatialReference3 SetVerticalCoordinateSystem(ISpatialReference3 spatialReference3) { ISpatialReferenceFactory3 spatialReferenceFactory3 = new SpatialReferenceEnvironmentClass(); IVerticalCoordinateSystem verticalCoordinateSystem = spatialReferenceFactory3.CreateVerticalCoordinateSystem((int)esriSRVerticalCSType.esriSRVertCS_NAVD1988); spatialReference3.VerticalCoordinateSystem = verticalCoordinateSystem; return spatialReference3; } } } //public static bool IsNameValid(string str) //{ // System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z]\w{0,17}{1}quot;); // if (reg.IsMatch(s)) // { // return true; // } // else // { // return false; // } //}
相关推荐
1.几何网络下路径分析程序,根据10.0的新功能更新了代码,可在VS2010+ArcGis10.0+C#下完美运行。 2.不在是单纯的算法,而是形成一个完整程序,傻瓜式操作即可实现功能。
ArcGIS10.0空间数据挖掘介绍,详细介绍了基于ArcGIS10.0的空间数据挖掘技术教程。
ArcGIS10.0破解安装步骤+注册机
ArcGis DeskTop 10.0 汉化包 ,安装前关闭所有DeskTop ,运行安装文件,安装完毕后,再次打开DeskTop 即可显示为中文版。
arcgis10.0_license
GIS数据 一、加载数据 1.数据准备(随书光盘中有,将数据安装到自己电脑的硬盘上,我放在C:/,如下图) …… 二、数据介绍 1.数据类型介绍(可以选中一个数据之后,查看属性) ……
ArcGIS 10 ,ArcSDE 10,ArcGIS Server 10的配置安装 方法
很多朋友对arcGIS10.0的安装注册感觉麻烦,打开“注册机”,功能选择arc/info,版本:10.0;然后点击右下角的所有,把产生的注册信息全部复制到:c:\program files\arcgis\\License10.0\bin下的service.txt中。 把...
基于arcgis10.0做dem和坡度分析图
arcgis10.0安装license永久版,安装时将license文件目录内Bin文件下license替换就行
win7下的ArcGIS10.0安装说明,包括ArcGIS desktop,ArcSDE、ArcGIS server
ArcGIS 10.0 破解详解 同时另外在文档中提到的注册机也同时分享了。大家可以下载 。
提供ArcGIS10.0破解所需的文件,和授权ecp文件
ArcGIS 10.0软件的安装和破解教程,里面附有注册机和其他资源,很容易破解。(只适用学习,请支持正版)
arcgis10.0的授权文件,可以覆盖,编辑里面的机器名称为你本机名称。
Arcgis10.0安装
arcgis10.0中文版下载地址,完全中文版,内核汉化。比9.3更简单更稳定
Arcgis10.0破解文件 1、安装完 Desktop 以及License Manager。 2、将ARCGIS.exe、service.txt覆盖License Manager安装主目录下bin文件夹内的内容(弱覆盖不能进行,停止ArcGIS License Manager)。 3、打开License ...
Arcgis10.0完全中文版下载,将下载地址复制进讯雷里即可。