Arcgis中spatialJoin工具的实现思路

在arcgis中有一个经常用到的分析工具spatialJoin(空间链接),就是将两个图层做空间叠加分析,根据要素之间的空间关系来得到数据相应的属性。
第一次接触这个工具,是在2010年一家昆明公司实习时候,当公司的老板娘听说我作为一个GIS专业的学生,居然还没有听说过这个工具,她从她那副不经常戴的近视眼镜上面,露出两只惊奇的眼睛,撇着嘴使劲盯了我一会。回到宿舍后,我就不停的拿数据来做试验,那是时候用的还是arcgis9.2,好像还没有最近距离这个选项。从此以后,我深深的记住了这个工具。

言归正传,上面讲smoothpolygon这个工具的时候,由于ConstructPolygonsFromFeaturesFromCursor这个方面没有实现将labels作为属性来构成面,所以不得不用另外一个接口ISpatialJoin来完成空间链接将原属性赋值给生成的平滑面。而且这个接口是desktop才有权限的。所以我下决心来自己写一个类似的功能。最后功能实现,思路分享如下:先将两个图层命名,一个是目标图层,即需要属性的图层;另一个是属性图层,即提供属性的图层。


1、遍历属性图层的字段,让用户选择需要哪个字段。(arcgis中是遍历两个图层的字段,默认全要,不需要则删除)

2、目标图层中增加字段。遍历每一个要素。

3、每一个要素与属性图层做空间分析,这个要选择空间关系类型,可以使intersect、contain、within等等。

4、选择出来属性图层的要素集后,在此可以增加一个选项。如果目标要素不重复,则随机选择一个要素属性赋值目标图层的字段。如果目标要素可以重复,则遍历选择要素集,每次创建一个要素,将原目标要素的Geometry赋值给新建要素的shape,每个属性要素的属性赋值给新建要素。保存,spatialJoin完成。

当然,如果你不在原图层上做操作,也可以开始就将目标图层复制一个出来。

最重要的其实是3、4步,3要用到ISpatialFilter接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值