目录
一、OSM文件
1.1 文件简介
OpenStreetMap (OSM) 文件包含了全球地图数据,这些数据由全球志愿者社区维护和更新。OSM 文件的内容和结构旨在描述地理信息,例如道路、建筑物、水体、绿地等。
1.2 文件格式
OSM 文件主要有两种格式:
- XML 格式:扩展名为
.osm
,使用 XML 语法描述地理数据。 - PBF 格式:扩展名为
.osm.pbf
,是一种二进制格式,具有更高的压缩效率和读取速度。
1.3 主要元素
1.3.1 节点 (Node)
<node id="123" lat="52.51631" lon="13.37777">
<tag k="amenity" v="restaurant"/>
<tag k="name" v="Example Restaurant"/>
</node>
描述地图上的一个点。
每个节点包含一个唯一的 ID 和经纬度坐标(纬度和经度)。
节点还可以有一些标签(key-value 键值对),用于描述该点的属性(例如,名称、高度、类型等)。
1.3.2 路径 (Way)
<way id="456"> <nd ref="123"/>
<nd ref="124"/>
<nd ref="125"/>
<tag k="highway" v="residential"/>
<tag k="name" v="Example Street"/>
</way>
由一系列节点组成的有序列表,表示线条(如道路、河流)或多边形(如建筑物、湖泊)。
路径也有一个唯一的 ID,并可以有标签来描述其属性。
1.3.3 关系 (Relation)
用于描述复杂的地理结构,如多边形关系(例如,多边形的内外环)、路线、边界等。
关系包含其他节点、路径或其他关系的引用,并定义它们在关系中的角色(如外环、内环)。
<relation id="789">
<member type="way" ref="456" role="outer"/>
<member type="way" ref="457" role="inner"/>
<tag k="type" v="multipolygon"/>
<tag k="landuse" v="forest"/>
</relation>
1.3.4 标签 (Tags)
标签是 OSM 文件的核心部分,用于描述地理对象的属性。每个标签由一个键(key)和值(value)组成,例如:
amenity=restaurant
:表示一个餐馆。highway=residential
:表示一条住宅道路。name=Example Street
:表示对象的名称。
1.4 文件用途
- 导航和地理定位:如 OsmAnd、Mapbox 和 MapQuest 等应用和服务。
- 地理信息系统 (GIS):用于空间分析和地理研究。
- 城市规划和管理:帮助城市规划人员和地方政府了解和管理基础设施。
- 应急响应:用于灾害管理和人道主义救援。
二、osm文件工具
2.1 osmium
osmium是一个命令行工具,用于检查osm文件的完整性。
可以适用以下命令进行安装:
# Ubuntu/Debian
sudo apt-get install osmium-tool
# macOS
brew install osmium-tool
使用以下命令进行检查:
osmium check-refs input.osm
2.2 ogr2ogr
GDAL (Geospatial Data Abstraction Library) 工具集的一部分,主要用于在不同的地理数据格式之间进行转换。
安装命令:
# Ubuntu/Debian
sudo apt-get install gdal-bin
# macOS
brew install gdal
基本用法命令如下:
ogr2ogr -f "OutputFormat" outputfile inputfile
OutputFormat:输出文件格式
outputfile:输出文件路径(转换后的文件存储路径)
inputfile:输入文件路径(要转换的文件路径)
例:将osm文件转换为kml格式需运行
ogr2ogr -f "KML" output.kml input.osm
若要单独提取points(点)或lines(线)或multipolygons(面)元素,可使用以下命令:
ogr2ogr -f "KML" output_nodes.kml input.osm points
ogr2ogr -f "KML" output_lines.kml input.osm lines
ogr2ogr -f "KML" output_polygons.kml input.osm multipolygons