intersect 裁剪导出要素类
来源:互联网 发布:mac os x10.12懒人版 编辑:程序博客网 时间:2024/05/16 09:30
最近我在做一个需求:就是用一个图形裁剪导出要素类。最先用Clip工具,后面发现不对,用arcmap测试下,确实不是想要的结果,后面发现用intersect工具可以。但是intersect的参数设置比较不固定,需要进行多番测试,这两天试了很多方法,查了很多资料,最后是下面这种方式成功了。要使用IGpValueTableObject 对象。网上有使用字符串的,似乎不行。
/// <summary> /// 成功方式 /// </summary> /// <param name="inputFeatClass">输入要素类</param> /// <param name="clipFeatClass">裁剪要素类</param> /// <param name="outShpFileName">不带.shp的文件名</param> private void IntersectResults(IFeatureClass inputFeatClass, IFeatureClass clipFeatClass, string outShpFileName) { IGpValueTableObject valTbl = new GpValueTableObjectClass(); valTbl.SetColumns(2); object row = ""; object rank = 1; row = inputFeatClass; valTbl.SetRow(0, ref row); valTbl.SetValue(0, 1, ref rank); row = clipFeatClass; valTbl.SetRow(1, ref row); rank = 2; valTbl.SetValue(1, 1, ref rank); Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; ESRI.ArcGIS.AnalysisTools.Intersect intersect = new ESRI.ArcGIS.AnalysisTools.Intersect(); intersect.in_features = valTbl; intersect.out_feature_class = outShpFileName; intersect.join_attributes = "NO_FID"; intersect.output_type = "INPUT"; if (gp.Execute(intersect, null) == null) { throw new DataOutputException(GetGpMessage(gp)); } }
下面是另外一种方式,但是我试了不行。
private void IntersectResults(string[] inShpFileNames, string outShpFileName) { string infeatues = ""; foreach (string str in inShpFileNames) { if (infeatues != "") { infeatues += ";"; } infeatues += str; } Geoprocessor gp = new Geoprocessor(); gp.OverwriteOutput = true; ESRI.ArcGIS.AnalysisTools.Intersect intersect = new ESRI.ArcGIS.AnalysisTools.Intersect(); intersect.in_features = infeatues;// @"E:\数据\temp\New_Shapefile.shp;E:\数据\temp\New_Shapefile_Intersect.shp"; intersect.out_feature_class = outShpFileName; //@"E:\数据\temp\intersectOne.shp"; intersect.join_attributes = "NO_FID"; intersect.output_type = "INPUT"; if (gp.Execute(intersect, null) == null) { throw new DataOutputException(GetGpMessage(gp)); } }
还有一种方式 我试了也不行:
private IFeatureClass Intersect(IFeatureClass inputfeatureclass, IFeatureClass cliplayerClass) { IBasicGeoprocessor basicGeoprocessor = new BasicGeoprocessorClass(); IFeatureClassName utFeatClassName = new FeatureClassNameClass(); outFeatClassName.FeatureType = esriFeatureType.esriFTSimple; outFeatClassName.ShapeFieldName = "Shape"; outFeatClassName.ShapeType = inputfeatureclass.ShapeType; IDataset dataset = inputfeatureclass as IDataset; string utFileName = dataset.Name + GetNextFileIdName(m_ShpPath, dataset.Name).ToString(); IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapeFileWorkspaceFactory.1"; workspaceName.PathName = m_ShpPath; IDatasetName datasetName = outFeatClassName as IDatasetName; datasetName.Name = outFileName; datasetName.WorkspaceName = workspaceName; return basicGeoprocessor.Intersect(inputfeatureclass as ITable, false, cliplayerClass as ITable, false, 0, outFeatClassName); }
- intersect 裁剪导出要素类
- ArcGIS 调用GP工具 intersect 裁剪导出要素类
- intersect
- INTERSECT
- Intersect
- 根据要素创建要素类
- SDE数据库中的要素类导出到本地文件夹shp文件
- Arcpy 随机选取部分要素并导出
- ArcGIS Engine检索要素集、要素类和要素
- 创建要素类
- 要素类的形式
- 要素类的复制
- 简单要素类ABC
- 重命名要素类
- WFS至要素类
- C++:类设计要素
- 图片裁剪自定义裁剪类(源码)
- ArcGIS API for Silverlight 使用GP服务实现要素裁剪功能
- PowerDesigner 业务处理模型( BPM )
- android 从assets和res中读取文件(转)
- linux c/c++ 用sscanf或者scanf时数值变量前请不要忘记加&&&&&&&&&&&&&&&&&&&&&
- android中调用.net web service
- vs 皮肤 主题
- intersect 裁剪导出要素类
- 什么是RTP、RTCP和RSVP?
- ios中的block
- 查看分析网站日志
- libnids分析(5)——TCP重组
- ArcGis Server queryTask有结果,但geometry为空
- 当Android遇上x86:Intel San Diego智能手机全面解析
- 未结束的字符串常量
- java的序列化