arcgis输出地图时options不见了_邪门歪道:地图截获器栅格批量配准方法【2019017】...

c60b1b5915a67f8f2aa4671fb45b3bd6.png

Highlights

1、PNG文件不能内嵌坐标信息;

2、切换变换方法可避免异常拉伸BUG;

3、保存链接表可以简化配准流程;

4、复制外置坐标文件可实现批量配准;

5、通过WMTS服务器可以添加底图;

6、适应显示范围是个神奇的功能;

7、链接中有示例数据代码

嗨~多磨,久违的正篇更新,今天分享一个与众不同的配准方法,主要用于将地图截获器【2018-002】输出的栅格数据批量配准到正确的坐标上。感谢韩泽华同学留言提出栅格配准的问题,并特别鸣谢GISer学习团公众号(非商业互吹d18aeabdd3665c6578a3733e35d29a1c.png还不快去关注一波5bb61433e7a6d57eb35ae4adf9d5e1d4.png)的张云金老师,本文介绍的配准方法是在张老师作品的启发下产生的。(登录公众平台发现素材编辑页面的表情按钮不见了8a4a4e433b49706c7c8a00071b874432.png正文里暂时就不插入表情了,让干货的纯度再提高一点儿吧ee85c99dd0fec389643bdbad5ebb8b43.png)

【常规的栅格配准三部曲】

【步骤1:准备参照物】简单介绍一下常规的栅格配准操作,首先,需要有一个待配准的栅格,然后需要有一个作为配准目标的参照物,可以是电子地图图层(强力推荐!文末会演示如何在ArcGIS中添加电子地图的,比SimpleGIS插件速度更快哦~)或者已经配准好的其他数据。准备好这两个东西后,将待配准的栅格和参照物添加到ArcMap中并在栅格图层属性的显示选项卡中将透明度调整一下(图1)。

73e82c382fa470dbc499396bd8d4bfa5.gif

图1 添加待配准栅格

(横屏查看可放大动图,下同~)

【步骤2:建立位移链接】在菜单栏空白处单击右键调出【地理配准】工具条(【空间校正】工具条是用于配准矢量要素的,两个工具的操作方式很相似),打开链接表窗口放在旁边备用,点击【地理配准】工具条上的添加控制点按钮,点击栅格上的位置A,然后点击参照物上的对应位置A‘(读作A撇),建立一条位移链接,切换一下变化方法(这是为了避免BUG,后文有相关演示),并继续添加位移链接,一般添加2-3个链接就可以较好地配准了(图2)。如果配准效果不理想,可以试着添加更多链接,添加足够多的链接就能切换到更复杂的变化方法,具体效果可以结合ArcGIS帮助文件的“地理配准栅格数据集的基础知识”词条自行尝试(总之就是配到你满意为止啦)。

a85ec111103a7111942ee34384c8765a.gif

图2 建立位移链接

【步骤3:输出配准结果】然后点击【地理配准】工具条的地理配准-校正,选择输出的目录(这里需要注意的是,如果你想输出到D:\2019_017路径下,那么需要在其上一级目录,即D:\路径下选中2019_017文件夹并点击添加才可以,不太好描述,仔细看动图吧),选择一个合适的压缩方式(TIFF文件推荐LZW)以便减小输出文件的体积,点击保存即可(图3)。

这里之所以采用TIFF格式输出,是因为该格式的坐标信息是内嵌在.tif文件里的,而PNG格式栅格的坐标信息则外置于一个.xml文件中(该结论可能仅在ArcGIS环境下成立,QGIS用什么存储PNG坐标我就不知道了)。坐标信息是否内嵌的一个重要区别体现在文件的管理上,TIFF格式栅格的分享仅需拷贝.tif一个文件(比如我分享的建筑栅格数据【2019-016】时刻不忘打广告),分享PNG格式栅格则需要拷贝.png和.xml两个文件,万一把.xml文件弄丢了,那就麻烦大啦(后文会反过来利用这一点带你见证奇迹)。

46dd956a91bbd3b07605e8bed6a63431.gif

图3 完成校正并输出TIFF

敲黑板】刚才有一步切换变换方法的操作,这里演示一下“正常”操作可能会引发的BUG(图4)。

405b6a770e4a1c23763461f2ed6c6206.gif

图4 栅格配准时出现异常拉伸

为了更好地看清楚位移链接的问题,点击地理配准-重置变换,重置栅格位置后可以看到链接1没有问题,而链接2的起点位置并不在原栅格的路口处(图5),正确的链接应该是图6的样子。

4e0d97c5c34cc2cb74343e48c5f903c7.png

图5 错误的配准链接(请点开大图查看)

331b5de9dae0f6511e6d26bad84e7cb5.png

图6 正确的配准链接(请点开大图查看)

这说明,地理配准工具的自动校正功能错误地判断了第二个链接的坐标来源,以至于链接2的原坐标和目标坐标都是基于参照物计算的,造成了栅格的异常拉伸。解决办法有两个,方法一如图2所示,输入完第一个链接之后将变换方法切换至零阶多项式,然后切回一阶多项式即可;方法二是先关闭自动校正功能,输入完全部链接后再勾选自动校正查看配准效果。(尚不确定该BUG是否仅限于ArcGIS 10.2.2,请自行测试一下~)

常规栅格配准的简化

常规配准也是可以近似批量化的(实为配准操作的部分简化),点击链接表窗口的保存按钮(图7),可以把当前的链接保存为文本,以便后续栅格配准时直接加载,用起来的效果大概是图8的样子。

cb55b4492bfb5966a77e52e3742901cb.png

图7 链接表可将链接保存为文本

218879181908c89ba1554050ba120a41.gif

图8 简化后的配准操作

对于需要配准多张栅格的情况,此方法确实可以大幅提高操作效率,然而,这个方法也存在一种可能不太适用的情况,那就是待配准栅格数量过多(比如几十甚至上百张,嗯?你说没有这种情景?等0.6Beta版的地图截获器发布,你就会知道这是什么情景了,先卖个关子~),一种可行的办法是使用【数据管理工具】-【投影和变换】-【栅格】-【从文件变换】工具,配合ArcGIS模型构建器的循环模块实现自动化水平极高的批量化配准,这个流程当然也可以通过使用Python调用arcpy来实现(这可能也是最好的解决办法,也许以后会单独写一篇)。可是呢,如果我既不想学模型构建器,更不想碰Python,还想尽可能减少重复劳动(毕竟保存链接表也只简化了一部分),有这么好的办法么?

批量配准栅格的邪道办法

办法当然是有滴,不然也没这篇推文了。PNG+XML文件对于ArcGIS来说与单个的TIFF文件其实没什么区别,既然已经有了PNG,是否可以干脆不生成TIFF呢?【地理配准】工具条确实提供了这样的功能,输入完所有的位移链接后,点击地理配准-更新地理配准即可将当前的坐标信息写入对应的XML文件(图9),并且不生成额外的栅格数据,效果如图10所示,更新过地理配准的PNG文件已经记住了正确的位置。

19080636b89967c7bceeffa4f8f51325.png

图9 更新地理配准

482b24f1ffd50bc5bc74b653d42f1d6e.gif

图10 更新地理配准后的效果

我们还知道,PNG文件的坐标信息全都存放在XML文件中,那么对于同一组需要配准的PNG文件来说,逐一配准后,它们的XML文件应该也是一样的,所以呢,邪道办法就来了(嘿嘿嘿),对第一张栅格进行配准后,将其XML文件复制多个,并按照其余栅格的文件名逐一修改,这不就完事儿了么!赶紧动手改一个(图11),再放到ArcMap中瞅瞅(图12)。

b59d5d94d8437970284428a3673fe99d.gif

图11 复制and改名

ae022630cbc4e545237e237842a2be5d.gif

图12 添加进来就配准好啦!

如果你连复制和改名都嫌麻烦的话……这回就没有太邪道的方法了,稍微学点儿Python吧,代码如下

import os
root=os.getcwd()+'\\'
PNGlist=[]
t=''
for i in os.listdir(root):
    if i[-4:]=='.png':
        PNGlist.append(i)
    elif i[-4:]=='.xml':
        t=open(root+i).read()
if len(t)>0:
    for png in PNGlist:
        if os.path.isfile(root+png+'.png.aux.xml')==False:
            xml=open(root+png+'.aux.xml','w')
            xml.write(t)
            xml.close()
    raw_input('XML files copying finished, press ENTER to quit')
else:
    raw_input('No XML files founded, press ENTER to quit')

把代码复制到TXT文本文档中并保存,然后将后缀名从.txt修改为.py,放到存放PNG的目录下运行,其效果如图13所示,将处理过的PNG加载到ArcMap的效果如图14所示。

a784bebb56ead6779b39d9eec61460bb.gif

图13 学点儿Python真的不亏

01f42434ffe0821bd99dcc974d57aaf3.gif

图14 见证奇迹!

栅格配准的其他注意事项

最后再补充三则注意事项。其一,作为参照物的电子地图图层可以通过ArcMap目录窗口的添加WMTS服务器来添加(ArcGIS 10.0好像只支持WMS服务器,可以自行搜索相关的服务器URL),双击添加WMTS服务器,在URL一栏中输入http://xdc.at/map/wmts/并点击确定,然后双击目录中刚刚添加的那个服务器(请无视链接错误的小红叉),展开后就能查看可用的电子地图了,将所需的图层拖动到内容列表即可(图15),在此特别感谢该服务器的搭建者谢栋灿的分享。(其实撰文时已经不记得出处了,所以临发布前专门查了一下,原作者那里还有好多硬核内容啊,特附上原文地址供同学们查阅https://i.xdc.at/2017/10/28/add-google-map-to-arcmap/)

0ec03b3e605be282b7a0f1af8ae3bd11.gif

图15 添加WMTS服务器

(实际加载没这么快,中间剪掉了一段)

其二,如果有同学还在坚持使用百度地图截获器矢量版1.0Beta,那么在参考此方法进行批量配准之前,请删除矢量版输出的栅格附带的.pgw文件,如果带着这个文件进行操作,那么批量配准时不仅需要复制XML文件,也需要复制.pgw文件,留着它反而会凭添麻烦。

其三(紧接着第二条),对于单独的PNG文件而言,加载到ArcMap后默认会出现在坐标原点附近,差不多是在加纳首都阿克拉正南方向的几内亚湾海面,那么如何快速地把栅格定位到目标区域呢,这个也很简单,添加好待配准栅格和电子地图后,首先缩放到配准的目标区域,然后点击地理配准-适应显示范围,即可将待配准栅格立刻适配到当前窗口(图16),后续的配准操作参考本文开头的三部曲即可(好的,首尾呼应了)~

cecf7b21a97fc11bf12061e79018ab24.gif

图16 适应显示范围效果演示

【后记】

开启三连更模式,今天先更批量配准的邪道流程,周二中午更新例行的建筑栅格数据(也该给正篇更新让一回路了ee85c99dd0fec389643bdbad5ebb8b43.png),周三中午更新ArcGIS导出三维模型效率测试与备选方法,至此,最基础的一些铺垫内容可能就差不多了,下个月会发布0.6Beta版的地图截获器,上线交通拥堵状态的定时循环截图,可以配合今天分享的邪道批量配准方法进行处理。

【全文3294字,撰文耗时9h40m】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值