本文是Python空间分析界后起之秀吴道长的倾情奉献……风格和虾神有点不太同,但是虾神灰常喜欢他这种清(猥)新(琐)的风格……对python封装Toolbox工具箱赶兴趣的,可以持续关注。
本文版权属于虎纠吴道长。
首先在我在自我定位中,我只是一个数据猿,而不是程序猿,所以噻,我运用这些工具乃至敲代码,纯粹就是为了干活时候更加方便,毕竟我的信条中,懒人创新世界,这是一条真理噻。
看我镇教神图【Python大法好】,能这么顺溜地进行啪啪,全靠python这门灵活的语言,而且第三方极其强大,典型的肉体好而且精通各种大保健技术的,请叫它‘器大活好不粘牙’。当然我是ArcGIS产品对Python的契合度非常高,so,我才能很嗨皮地玩耍摸鱼儿,不要问我:鱼儿是谁。
书归正传,来谈谈我们亚古兽噻:
如果单纯肉身处理数据,那基本上就是一只亚古兽噻,绝招就是‘小型火焰’,尼玛,面对又乱又多又复杂又要反复操作的空间数据时候,‘小型火焰’根本不够用啊,一会叫你关联属性表,一会让你做相交,很烦躁好不好。so,亚古兽要进化撒,要做暴龙兽,我要用‘超级火焰’,虐他丫的。
这时候我们就会想到ArcGIS 中比较简单的流程化操作工具——Model_Builder,一款构造地理处理工作流和脚本的图形化建模工具。在模型中,分别定义不同的图形代表输入数据、输出数据、空间处理工具,然后用流程图进行组合成处理模型模型进行空间计算。这里我习惯叫他:建模。这时候得谢,肖老师教我这个噻。
我司经常要提取某个地区行政区区划shp图层的拐点经纬度,这个需要线面转拐点,然后从属性表挨个复制到TXT文本里面。累不死你,一个宁德市,就有9000个拐点,如果中间复制错了,你就懵逼了,搜噶,我们就用模型把这个流程串联起来就有了,我自己第一代模型:等值面提取模型。当然我加了一个‘迭代’,更方便我摸鱼。
现在工作就比较轻省了,但是操作上还是有点麻烦噻,因为有个中间过渡的EXCEL文件,然后再整体复制到TXT文本中,还要命名,猴急麻烦。我又犯懒了,我就像能不能再多加功能,貌似建模不能满足我,后天还要出透明图,这个建模这小妾是万万做不到的,所以暴龙兽要进化,我们做机械暴龙兽,我们要A罩杯的Bla 放出导弹,我们要用‘究极破坏炮’。
从建模过渡到用脚本语言处理代码,这就有点质的飞跃,毕竟以前很少用Python去处理数据,最多也就是在‘字段计算器’里面写一句小花招去批量处理属性。以前没有编程经验,学了大概半个月,死气白咧地问大虾和熊爷,才勉强会了Python。在ArcGIS中,ArcPy对Python契合度很高,到了10.1版本后,内置更多实用的第三方库,更方便使用,实在不行,你就使用神器PIP。使用脚本去进行数据处理,比建模更加灵活多变,当然能处理的内容更多,至少你能跨不同格式文件进行操作,甚至能够大数据挖掘,不过有点比建模不好就是,建模内置有中间过程文件自动删除的功能,这个比较爽。当然学Python之前请先网购一个游标卡尺或者螺旋测力器。
新建一个工具箱.tbx ,然后添加你需要的脚本文件就可以了。当然在有个不好的地方就是你要有一个相对路径去存放的脚本.py,这个对于跟组员进行分享使用就不太方便。你可以在脚本中就设置好,你要处理的数据路径,当然你也可以封装成一个工具,这个就很方便其他人去使用你的工具了。
封装好的工具,就能很嗨皮有shp图层,属性表,栅格..............等等做成各种东西哦,比如我之前很猥琐的‘罩杯曲线’。通过脚本,我就做好了等值面2.0,键入一个shp,就派生多种格式的不同文件。
做完这一步,基本就很满意功能了。但是需求又来了,同事们要更人性化的可视化操作窗口,这边你这个不人性。搞得我想跟你谈人权了。同学,你要征服星辰大海嘛?好吧,要想做人性化的操作窗口,工具箱.tbx估计不能满足了。所以我们要究极进化,来吧,究极体战斗暴龙兽!!盖亚能量炮!!。
Python工具箱.pyt 说到底就是你自己自主设计你的操作窗口,比我在等值面2.0中设计的按键启动和禁用。贴一下,python工具箱.pyt结构代码。
通过这个,我完成等值面3.0模型,当然内部优化算法,外面完善了窗口可视化效果。外法虽立,内法并生。这个完善后就比较酸爽。
Ok,现在已经进化成究级暴龙兽了。虽然工具箱.tbx到python工具箱.pyt,其实变大并不大,但是工具箱python工具箱.pyt 能够上升到arcpy函数的节奏,这估计最好的地方了。哦,对了python工具箱.pyt不用特地一个相对路径存放脚本哦,更方便分享使用了。
叨比比很多了,从学python到现在,三个月了,非常感谢被我打扰的大虾和熊爷,现在我也是一技之长了。当然我舔着脸问大虾:
其实我还是一个数据员。