初探arcgis的python脚本的使用 (二)

最近要给分局部署软件,需要一系列数据,首当其冲的是要做单独的区的一个影像切片,有趣的是,单位只有全市的影像切片,居然没有分区的,而且原始的tif影像数据也是全市杂糅在一起的,我只能自己来处理数据。

拿到几百个G的原始tif数据后,

发现几个特点和问题:

一  数据的横坐标不带41

二 数据是以图幅网格的副图名

三 数据量巨大

我的目的:

一 将数据转为带41的  

二  将转换完的数据按行政区选择出来

三  进行切片

解决方案

对于一,(1)传统的就是使用arcgis平移工具了,由于数据量大,要使用批处理工具。有三个个问题,第一由于数据量打,速度极慢;第二在选择输出栅格数据集时,若想摒弃繁琐的人工操作,那么就要有所牺牲,就是新生成的数据无法保留原来数据的命名(欢迎指教,也可能是我不会用);第三,由于数据量很大,占据巨大的磁盘空间,而arcgis这个工具是要生成新的数据,相当于又生成一份数据,这样很浪费(这个问题当然有所争论,原始数据放在移动硬盘里,新生成数据放在电脑里,不但解决了空间问题,还解决了数据备份问题)

初探arcgis的python脚本的使用 (二)_第1张图片

(2) 进一步的思路是,使用我上一篇文章提到的arcpy工具,上一篇,我提到过,使用python小程序代替arctoolbox的批处理工具,会有更为高效的结果,具体代码请翻上一篇文章,这里就不列出了,使用的是Shift_management()。这种方式,其实只解决了(1)的第二个问题,不过也可以使用了。

(3) 最好的思路是,原始tif影像中,有一个tfw文件,用记事本打开,可以看到最后两行的数字分别是这个影像的横坐标和纵坐标,那么思路来了,只需用程序批量读取tfw文件,修改第五个值,将它加上41000000即可。程序写完,一跑,3437个tif,两秒钟,就搞定了。这要是用1或者2,不可想象。当然,这种方法有没有问题,不太清楚,目前只知道,金字塔缓存要重新构建。

初探arcgis的python脚本的使用 (二)_第2张图片

对于二,(1)传统做法是,把全市的影像都加到arcmap中,按照行政区界线或者图幅结合表人工选出tif影像,这种方法。。。不用多说,眼睛累瞎了一天两天也未必能干完,加载这么多tif数据,就够等一壶的。

(2) 据说,程序员行业有一句名言——所有的重复性劳动其实都有办法用程序解决,如果没找到办法,那是能力问题。我这种技术渣,连程序员边都不沾的,还算想到了办法。基本思路是,遍历分区的图幅结合表,用其中的副图名属性字段去查找原始影像中的影像(当然,要处理字符串),如果存在,就将这个影像copy出来。

初探arcgis的python脚本的使用 (二)_第3张图片

 

对于三,就不多说了,用arcgis切个片就完了,当然,这个也可以写程序,关键不解决问题的程序有特么什么用,炫技啊,还是雕虫小技。。。

总结,可以看出,用python写arcgis处理程序,代码几行就够,方便极了。我说我平时工作,总结起来是——数据清洗,数据处理,数据分析,数据可视化展示,会有人信么?如果有人信,那在数据前面加上地理信息数据,还会有人care吗?

你可能感兴趣的:(GIS)