将kml转换为属性齐全的shp,看这篇就够了!
The following article is from 数读城事 Author 帅青青
目标:将kml转换为shp
问题:kml中的属性以html方式存储,无法直接读取出来
处理方法:使用FME,读取kml,并使用正则来提取kml中的信息,组织好之后写出标准数据
02数据情况
很久很久以前,菌菌有一个kml数据。
数据是长这样的:
这个数据里有信息,但信息是存储在HTML里的。
这种数据直接转格式无法拿到里面的内容,所以需要借助工具来提取数据中的有效信息。
03数据处理
本次数据处理,我选择了FME平台。数据处理的工具、方法有很多,各位读者也可以选择合适自己的工具。
◐ 读取数据
然后找到属性信息存储字段(kml_description),并把属性信息暴露出来:
经过这样的设置,数据就被读取到FME中了:
这里需要注意的是:FME的格式属性默认是不勾选的。在FME的后续处理中,如果想要使用某个属性,就必须把想要的属性给暴露出来。暴露属性有两种方式,一种是像本文中在读取的时候勾选上,另一种是使用AttributeExposer转换器进行暴露。两种方式都可以,只是我喜欢尽量减少转换器的数量,来让界面更清爽一些。
回到本文中的信息提取,在这里我选取了FME的StringSearcher转换器,并对其进行了如下所示的设置:
经过这样的设置,就可以把所有属性及字段信息取到名为ll的列表中:
经过上一步的提取,现在有效信息都在列表里了。接下来要做的,就是从列表里把信息取出来,并赋值给相应字段。处理方式也很简单,只需进行如下图所示的设置:
处理后数据:
经字段组织之后,就可以把数据进行写出了,写模块设置如下图所示:
点击运行之后,就得到了一份shp数据:
输出转换完成之后,可以加载到ArcMap中查看一下,数据是否正常。
可以看到数据还行,该有的字段都在,该有的内容也都填上了,到这基本上转换也就完成了。
下面再增加点内容,介绍下怎么在ArcMap中进行分式注记的标注。而想要进行分式注记,就需要了解一下ArcMap的格式化标签(偷个懒,直接上大图了)。
而分式注记,也就是给上面的那行字加了一个下划线,也就是加个标签的事情,非常简单
图中表达式:"<UND>"&[级别]&"</UND>"&vbCrLf&[保护区名称]
我们可以更进一步,让标注色彩更加丰富一些
图中表达式:"<BOL><UND><CLRred = '255' >"&[级别]&"</CLR></UND></BOL>"&vbCrLf&"<BOL><CLR green='255'>"&[保护区名称] &"</CLR></BOL>"
分式注记,是不是到这,就完成了分式注记,是不是很简单?
05总结
本文使用FME软件完成了kml到shp数据的处理,并把结果数据进行了一个简单的可视化(也许叫ArcMap可视化之分式注记比较合适)。
作者|帅青青
排版|数读菌
校阅|数读菌
转载自:数读城事 版权归原作者所有,如有侵权请告知删除
一文让你全面了解DEM DTM DLG DRG DOM DSM
ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图