免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 5400|回复: 14
收起左侧

[二次开发] 针对区域面积极值分析引发的思考,稍稍扩展

  [复制链接]

4

主题

2万

铜板

57

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
25705

贡献勋章宣传勋章

发表于 2015-1-14 09:34 | 显示全部楼层 |阅读模式
本帖最后由 daitianci 于 2015-1-15 10:56 编辑

之前在论坛里看到zaiciyun坛友发的一个求助,内容是如何选取各个区域内面积最小的点位,其中区域字段为bh,而面积字段为Area,以这个为起点做了一系列的思考。

方案一:

在我刚刚看到这个问题的时候,我首先想到的是group by,然后 order by,就是先分类,然后再排序。这个问题如果放到.net中结合linq来分析,分分钟的事。所以当时我给的建议是添加点x,y坐标,然后属性表导出,用自己写的工具分析一下,然后再回来展点。但是后来我又思考了挺多,证明这样做是麻烦的,首先,属性表导入导出就很烦,再来,这样不通用。

方案二:

用arcpy定制自己的工具箱,这样肯定是比较正确的做法。思路是这样的,首先,先在python里读取属性表,然后group by bh,order by Area,这样就可以分析出我们要的结果:{bh1,(Area1,Area2...)} {bh2,(Area1,Area2...)}。接下来我们就可以得到我们要的各个区域最小面积。然后就可以利用这两个条件查询出各个点位,然后生成新的shp即可。里面涉及到的python知识还是蛮多的,首先是group by的方法,然后是字典表的建立,都是比较令人烦恼,因为对python不够熟悉。在这过程中还有一些蛮有意思的地方,就是按区域去循环分析,然后选取结果要累加,然后再复制,之前没想到arcpy开发其实也非常智能。

扩展:

透过这个问题,抽象需求,我们可以这么看待这个事。但凡有一个字段是类型,一个字段是值的,我们都可以用这样去统计分析。例如:类型为商店中的最大最小营业额、某等级道路中的最大最小通行量、某等级医院中的最大最小受益群众数等等。所以在设计这个工具箱的时候,我并没有针对这个面积统计问题来设计,而是做成灵活可变的,因为确实有一定的意义。

附上一个可以使用的工具箱,针对此类问题。

坛友下载以后发现不可用,问题检测以后如下,区域字段的应该为string类型,面积要为数字,例如double类型,这样即可。之前区域我给设置成int了,拼查询sql的时候出的问题。




工具界面.png
数据源.png
最小面积统计.png
最大面积统计.png

DaiTianCiTool.zip

4.59 KB, 下载次数: 49

评分

参与人数 1铜板 +1 收起 理由
shufff + 1 顶一个

查看全部评分

20

主题

1万

铜板

58

好友

至尊VIP

千里始于足下

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
1463
发表于 2015-1-14 12:41 | 显示全部楼层
赞一个!!!!!!!
千里始于足下
回复

使用道具 举报

28

主题

1万

铜板

23

好友

地信名人堂

Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

积分
1172

宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组贡献勋章名人堂勋章成就学员勋章

发表于 2015-1-14 20:33 | 显示全部楼层
是不是9.3版本不能添加你这个工具?我用10.2才添加的上。但是运行失败,请问是哪方面的原因?请高手指教,谢谢!
回复 支持 反对

使用道具 举报

28

主题

1万

铜板

23

好友

地信名人堂

Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

积分
1172

宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组贡献勋章名人堂勋章成就学员勋章

发表于 2015-1-14 20:39 | 显示全部楼层
一下就是执行报的错。
Traceback (most recent call last):
  File "E:\DaiTianCiTool.tbx#RegionExtremeValue.py", line 23, in <module>
  File "c:\program files\arcgis\desktop10.2\arcpy\arcpy\management.py", line 6494, in SelectLayerByAttribute
    raise e
ExecuteError: ERROR 000358: 无效的表达式
执行(SelectLayerByAttribute)失败。


执行(RegionExtremeValue)失败。

点评

是的。估计是这样,这样吧,你把数据源发一份上来我下载,我在我这里试试,我们先测测问题在哪里  详情 回复 发表于 2015-1-15 08:36
回复 支持 反对

使用道具 举报

4

主题

2万

铜板

57

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
25705

贡献勋章宣传勋章

 楼主| 发表于 2015-1-15 08:36 | 显示全部楼层
zaiciyun 发表于 2015-1-14 20:39
一下就是执行报的错。
Traceback (most recent call last):
  File "E:\DaiTianCiTool.tbx#RegionExtreme ...

是的。估计是这样,这样吧,你把数据源发一份上来我下载,我在我这里试试,我们先测测问题在哪里
回复 支持 反对

使用道具 举报

28

主题

1万

铜板

23

好友

地信名人堂

Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

积分
1172

宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组贡献勋章名人堂勋章成就学员勋章

发表于 2015-1-15 09:44 | 显示全部楼层
daitianci 发表于 2015-1-15 08:36
是的。估计是这样,这样吧,你把数据源发一份上来我下载,我在我这里试试,我们先测测问题在哪里

好的,非常感激。这是测试的数据。 测试点.rar (4.07 KB, 下载次数: 26)

点评

可以去下载了,调试通过了,可能跟版本还没什么关系,你再试试,可以的话跟我说一声  详情 回复 发表于 2015-1-15 10:58
回复 支持 反对

使用道具 举报

4

主题

2万

铜板

57

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
25705

贡献勋章宣传勋章

 楼主| 发表于 2015-1-15 10:58 | 显示全部楼层
zaiciyun 发表于 2015-1-15 09:44
好的,非常感激。这是测试的数据。

可以去下载了,调试通过了,可能跟版本还没什么关系,你再试试,可以的话跟我说一声
回复 支持 反对

使用道具 举报

28

主题

1万

铜板

23

好友

地信名人堂

Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19

积分
1172

宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组贡献勋章名人堂勋章成就学员勋章

发表于 2015-1-15 11:25 | 显示全部楼层
daitianci 发表于 2015-1-15 10:58
可以去下载了,调试通过了,可能跟版本还没什么关系,你再试试,可以的话跟我说一声

可以了,太感谢了。{:soso_e113:}
回复 支持 反对

使用道具 举报

22

主题

5万

铜板

62

好友

钻石会员

一个人幸运的前提,其实是他有能

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6187

宣传勋章爱心勋章组织勋章地信元老灌水勋章荣誉会员勋章活跃勋章地信专家组贡献勋章成就学员勋章

发表于 2015-1-26 16:43 | 显示全部楼层
:zt:zt:zt
该会员没有填写今日想说内容.
回复

使用道具 举报

113

主题

1万

铜板

173

好友

地信贵宾

Rank: 13Rank: 13Rank: 13Rank: 13

积分
39141

精华勋章宣传勋章爱心勋章组织勋章优秀斑主地信元老灌水勋章荣誉会员勋章活跃勋章官方团队地信专家组VIP勋章贡献勋章名人堂勋章成就学员勋章

发表于 2015-2-9 10:17 | 显示全部楼层
属性表输出
01.png
02.png

点评

可是刚刚试了下你的方法,其实这个工具跟融合的统计还是类似的,虽然能统计出信息,却无法得出最大或者最小面积的点,不够直观  详情 回复 发表于 2015-2-9 13:26
学习啦,谢谢指导  详情 回复 发表于 2015-2-9 12:57
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表