查看原文
其他

将kml转换为属性齐全的shp,看这篇就够了!

The following article is from 数读城事 Author 帅青青


01前言介绍

目标:将kml转换为shp

问题:kml中的属性以html方式存储,无法直接读取出来

处理方法:使用FME,读取kml,并使用正则来提取kml中的信息,组织好之后写出标准数据


02数据情况

很久很久以前,菌菌有一个kml数据。

数据是长这样的:


菌菌乱入一下:这个数据其实是保护区名录里面的数据,包含了保护区的边界、名称、类型、面积、主要保护对象等信息,下载网址如下:http://www.papc.cn/html/folder/13100752-1.htm

这个数据里有信息,但信息是存储在HTML里的。


这种数据直接转格式无法拿到里面的内容,所以需要借助工具来提取数据中的有效信息。


03数据处理

本次数据处理,我选择了FME平台。数据处理的工具、方法有很多,各位读者也可以选择合适自己的工具。


◐ 读取数据
首先把数据读取到FME中


然后找到属性信息存储字段(kml_description),并把属性信息暴露出来:


经过这样的设置,数据就被读取到FME中了:



这里需要注意的是:FME的格式属性默认是不勾选的。在FME的后续处理中,如果想要使用某个属性,就必须把想要的属性给暴露出来。暴露属性有两种方式,一种是像本文中在读取的时候勾选上,另一种是使用AttributeExposer转换器进行暴露。两种方式都可以,只是我喜欢尽量减少转换器的数量,来让界面更清爽一些。

◐ 提取信息
前面已经介绍过本文要处理的这个数据属性信息都存储在HTML中,要提取HTML中的信息,有多种方式。比如常见的xpath select、css slect等方法,都可以很方便的从HTML中取出想要的信息,但本文选用了正则提取的方式。原因也很简单,相比其他方式,正则的适用面更广,只要是文本都可以用正则来处理,无论是提取还是替换,正则都很好用。

回到本文中的信息提取,在这里我选取了FME的StringSearcher转换器,并对其进行了如下所示的设置:


经过这样的设置,就可以把所有属性及字段信息取到名为ll的列表中:


◐ 属性组织

经过上一步的提取,现在有效信息都在列表里了。接下来要做的,就是从列表里把信息取出来,并赋值给相应字段。处理方式也很简单,只需进行如下图所示的设置:


处理后数据:


◐ 数据写出

经字段组织之后,就可以把数据进行写出了,写模块设置如下图所示:


点击运行之后,就得到了一份shp数据:



04可视化

输出转换完成之后,可以加载到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可视化之分式注记比较合适)。

作者|帅青青

排版|数读菌

校阅|数读菌

转载自:数读城事  版权归原作者所有,如有侵权请告知删除


END


一文让你全面了解DEM DTM DLG DRG DOM DSM

CASS土石方工程计算软件实战演示

ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图

Google earth engine具体的价格

25个ArcMap常用各种文件扩展名,你都知道吗?

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存