OSM数据
OSM数据全称OpenStreetMap数据,是开源的全球路网数据,也是时空分析时较为常见的基础数据,本篇主要讲解如何用python优雅地处理OSM数据为下游任务做支撑。
01
OSM数据结构
空间数据的基本类型有点、线、面三种,这三种类型依据场景的不同可以用不同的存储方式存储。常见的OSM文件类型有以下三种,点、线、面对象在不同的文件类型中对应下图的不同名称。
![627408e2d8b81f11ac1c63273712a451.png](https://i-blog.csdnimg.cn/blog_migrate/e6809f0bedb975c5c338f5999ac281e3.png)
图1 // OSM文件类型及各自内部对象名称
其中shp格式是常见的空间数据存储格式,如果经常使用ArcGIS等空间分析软件会经常与这类文件打交道,但是这类文件的体积还是偏大的。另一种xml格式则是为了方便跨平台操作而使用的文件存储格式,对于没有shp文件处理的环境而言,xml的存储方式也可以用其他的基础编译环境解析使用,但这类存储方式的存储效率还是相对偏低的。而pbf格式则是xml的protobuf版本,相比xml来说解析难度提升了,但是相对的,存储效率也大幅提高,12G的xml文件其pbf格式仅600M左右。
02
文件解析方式
不同的文件类型有不同的处理方式,笔者主要使用python进行时空数据分析,因此接下来主要介绍利用python进行这三类文件的解析方式。
![bfecc12a054d74a766db465f0817d475.png](https://i-blog.csdnimg.cn/blog_migrate/c90ea535dfb690238a327e16a34c616d.png)
图2 // OSM文件解析姿势
对于shp文件,笔者认为geopandas结合shapely进行解析处理是最为优雅的处理方式。至于shp文件的处理方式……日常挖坑,今后结合其他案例补上。
对x