AE开发实现Spatial Join Analysis
public void SpatialJoin()
{
// Spatial join 功能
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true;
SpatialJoin pSpatialJoin = new SpatialJoin();
pSpatialJoin.target_features = @"E:\b.shp";//目标图层,可以是shp等文件路径或者featureclass之类的
pSpatialJoin.join_features = @"E:\a.shp"; //join的图层
pSpatialJoin.out_feature_class = @"E:\a_SpatialJoin.shp"; //输出图层文件,存在不存在无所谓
pSpatialJoin.join_operation = "JOIN_ONE_TO_ONE"; //JOIN_ONE_TO_ONE或者JOIN_ONE_TO_ONE
pSpatialJoin.match_option = "within"; //CONTAINS、within等空间关系
pSpatialJoin.join_type = "KEEP_ALL";//KEEP_ALL或者KEEP_COMMON gp.Execute(pSpatialJoin, null);
}
语法
SpatialJoin_analysis (target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
|
参数 |
说明 |
数据类型 |
|
target_features |
只要找到指定的空间关系(或匹配选项),就会将“连接要素”的属性传递到“目标要素”。“目标要素”可以是ArcGIS 支持的任意空间数据源。 |
Feature Layer |
|
join_features |
只要找到指定的空间关系(或匹配选项),就会将“连接要素”的属性传递到“目标要素”。“连接要素”可以是ArcGIS 支持的任意空间数据源。 |
Feature Layer |
|
out_feature_class |
该新要素类包含连接到“目标要素”的“连接要素”的属性。 |
Feature Class |
|
join_operation (可选) |
用于在找到多个与同一“目标要素”存在相同空间关系的“连接要素”时确定输出要素类中“目标要素”和“连接要素”的连接方式。例如,如果在两个独立的面“连接要素”中找到了同一个点“目标要素”,则可以选择使用“字段映射”合并规则 (JOIN_ONE_TO_ONE) 对两个面的属性进行聚合,也可以选择在输出中存在两个“目标要素”实例,分别包含两个面的属性 (JOIN_ONE_TO_MANY)。
|
String |
|
join_type (可选) |
确定是在输出要素类中保留所有“目标要素”(外部连接),还是仅保留那些与“连接要素”有指定空间关系的“目标要素”(内部连接)。
|
Boolean |
|
field_mapping (可选) |
控制输出要素类中要包含的属性字段。可以添加、删除、重命名字段或更改字段的属性。初始列表既包含“目标要素”中的字段,也包含“连接要素”中的字段。 |
Field Mappings |
|
match_option (可选) |
定义用于匹配行的条件。只要找到该空间关系(或匹配选项),就会将“连接要素”的属性传递到“目标要素”。匹配选项包括:
|
String |
|
search_radius (可选) |
如果“连接要素”与“目标要素”的距离在此范围内,则将进行空间连接。仅当将空间关系(或匹配选项)指定为INTERSECT 或 CLOSEST 时,搜索半径才有效。空间关系为 INTERSECT 时使用 100 米作为搜索半径表示:如果“连接要素”位于“目标要素”周围的 100 米范围内,则将“连接要素”的属性传递到“目标要素”。空间关系为CLOSEST 时使用 100 米作为搜索半径表示:如果“连接要素”位于“目标要素”周围的 100 米范围内,并且是距该“目标要素”最近的“连接要素”,则将“连接要素”的属性传递到“目标要素”。 |
Linear unit |
|
distance_field_name (可选) |
向输出要素类中添加的字段的名称,用于包含“目标要素”和最近“连接要素”之间的距离。仅当将空间关系(或匹配选项)指定为 CLOSEST 时,此选项才有效。如果未指定字段名称,将不会向输出要素类中添加该字段。 |
String |
public void GP_SpatilaJoin_Intersect_OneToMany_KeepALL(IFeatureClass pFClassReachPoints, IFeatureClass pFClassCoverage)
{
//Define Geoprocessing variables and environment
IGeoProcessor pGp = null;
IVariantArray pToolParams = null;
IDataElement pDataElement = null;
IDETable pDETableA = null;
IGPUtilities pGPU = null;
IArray pArray = null;
IGPFieldMapping pFieldMapping = null;
IField pTextField = null;
IGPFieldMap pTxtFieldMap = null; string targetFeatures = @"D:\ESRI\ETISALAT\ReachPointsApplication\Shapefiles\ReachPointsTemp1.shp";
string joinFeatures = @"Database Connections\EMEGS.sde\EMEGS.EG_ENGINEERING_DS\EMEGS.EG_COVERAGE_LIVE_PG"; //Output will be the target features, states, with a mean city population field (mcp)
string outfc = @"D:\ESRI\ETISALAT\ReachPointsApplication\Shapefiles\ReachPointsTemp5.shp";
pGp = new GeoProcessor();
pGp.AddToolbox(@"C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Spatial Analyst Tools.tbx");
// Create a new fieldmappings and add the two input feature classes.
IGpFieldMappingsObject fieldmappings = new GpFieldMappingsObject() ;
// fieldmappings = gp.CreateObject("FieldMappings")
fieldmappings.AddTable(targetFeatures);
fieldmappings.AddTable(joinFeatures); // First get the TECHNOLOGY_TYPE fieldmap in Coverage PG feature class.
IGpFieldMapObject fieldmap = fieldmappings.GetFieldMap(fieldmappings.FindFieldMapIndex("TECHNOLOGY_TYPE")) as IGpFieldMapObject;
//Set the merge rule to mean and then replace the old fieldmap in the mappings object with the updated one fieldmap.MergeRule = "join";// esriGPFieldMapMergeRule.esriGPFieldMapMergeRuleJoin; //
// fieldmap.JoinDelimiter = "_";
fieldmappings.ReplaceFieldMap(fieldmappings.FindFieldMapIndex("TECHNOLOGY_TYPE"), fieldmap); // fieldmap.FieldMap.GetField().Name
pToolParams = new VarArray();
pToolParams.Add(targetFeatures);
pToolParams.Add(joinFeatures);
pToolParams.Add(outfc);
pToolParams.Add("JOIN_ONE_TO_ONE");
pToolParams.Add("KEEP_ALL");
pToolParams.Add(fieldmappings);
pToolParams.Add("INTERSECTS");
pGp.Execute("SpatialJoin_analysis", pToolParams, null);
}
esri官网的帮助:
AE开发实现Spatial Join Analysis的更多相关文章
- AE开发概念辨析
樱木 原文 AE开发之概念辨析2,AE开发涉及相关概念,AE开发相关概念 1 AE中的类库 AE总共包括了21个子库,分别是SYSTEM,SYSTEMUI,GEOMETRY,DISPLAY,SERVE ...
- AE开发使用内存图层
AE开发中,有时需要从磁盘中读取一些文件信息如坐标点转为图层并进行分析,此过程并不需要坐标点入库之类的操作,就可以创建一个内存图层解决问题.创建内存图层需要用到InMemoryWorkspaceFac ...
- AE开发能否实现TOC Control里添加多个Data Frame
问题: 在ArcMap中,菜单Insert下Data Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Fr ...
- 将AE开发的专题图制作功能发布为WPS
AE开发可以定制化实现ArcGIS的地理处理功能,并实际运用于其他方面的工作,有时候我们还希望将AE开发的功能发布为网络地理信息处理服务(WPS),从而能在Web端更自由便利地调用所需要的地学处理算法 ...
- 【转】.NET+AE开发中常见几种非托管对象的释放
尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 今天在开发时遇到一个问题:" 未处理 System.AccessViolationException Message="尝试 ...
- AE开发技术文档--8种数据访问方法
转自原文 AE开发技术文档--8种数据访问方法 1.shapefile IWorkspaceFactory pWorkspaceFactory; pWorkspaceFactory = new Sha ...
- c# 进行AE开发时,如何在地图上定位出一个点
一.文本形式的气泡提示框 由于本人是初学,所以具体的含义尚未弄清楚,直接给出代码吧!
- AE开发实现GP工具IDW
IDW——空间插值 IDW(Inverse Distance Weighted)是一种常用而简便的空间插值方法,它以插值点与样本点间的距离为权重进行加权平均,离插值点越近的样本点赋予的权重越大. 设平 ...
- AE开发示例之RunGPAsync
using System; using System.Collections.Generic;using System.ComponentModel;using System.Data;using S ...
随机推荐
- 使用Java实现简单串口通信
最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^ 一: 首先,你需要下载一个额外的支持Java串口通信操作的jar ...
- MySQL优化概述
一. MySQL优化要点 MySQL优化是一门复杂的综合性技术,主要包括: 1 表的设计合理化(符合 3NF,必要时允许数据冗余) 2.1 SQL语句优化(以查询为主) 2.2 适当添加索引(主键索引 ...
- JavaScript 动态插入 CSS
写组件时有时想把一些组件特性相关的 CSS 样式封装在 JS 里,这样更内聚,改起来方便.JS 动态插入 CSS 两个步骤就可以 创建一个 style 对象 使用 stylesheet 的 inser ...
- MVC PartialView
参考 Updating an MVC Partial View with Ajax RenderPartial vs RenderAction vs Partial vs Action in MV ...
- POJ1061青蛙的约会[扩展欧几里得]
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 108911 Accepted: 21866 Descript ...
- python BeautifulSoup模块的简要介绍
常用介绍: pip install beautifulsoup4 # 安装模块 from bs4 import BeautifulSoup # 导入模块 soup = BeautifulSoup(ht ...
- poj[1187][Noi 01]陨石的秘密
Description 公元11380年,一颗巨大的陨石坠落在南极.于是,灾难降临了,地球上出现了一系列反常的现象.当人们焦急万分的时候,一支中国科学家组成的南极考察队赶到了出事地点.经过一番侦察,科 ...
- 基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
has(selector选择器或DOM元素) 将匹配元素集合根据选择器或DOM元素为条件,检索该条件在每个元素的后代中是否存在,将符合条件的的元素构成新的结果集. 下面举一个例子: <ul& ...
- 基于Calabash-andriod的UI自动化测试(1)-环境和原理
有时候,一些覆盖happy path的UI自动化还是很有用的.它的一些作用如下: 1.可以迅速实现端到端的功能回归,能够覆盖接口测试覆盖不到的一些地方,如GUI层和接口层的交互产生的问题. 2.非码农 ...
- Docker-compose
docker-compose:未找到命令 安装: 须切到root用户: curl -L https://github.com/docker/compose/releases/download/1.7. ...