将OpenStreetMap数据转换为GIS和移动地图文件格式。
项目描述
OSM导出工具
该项目在Linux和Mac上处于可用状态。当前的导出工具网络服务存储库位于hotosm/osm-export-tool。
动机
此程序通过YAML映射文件中嵌入的SQL过滤并转换OpenStreetMap数据为专题、表格GIS格式。例如,特征的过滤是通过SQL指定的
buildings_with_addresses: # creates a thematic layer called "buildings_with_addresses"
types:
- polygons
select:
- building
- height
- addr:housenumber
where:
- building = 'yes' and addr:housenumber IS NOT NULL
它还可以创建非表格格式的文件,例如用于Garmin GPS设备或OSMAnd Android应用程序的文件。(即将推出)
安装
- 通过
pip install osm-export-tool
安装。需要 Python 3 和一个可工作的 GDAL 安装。在 Mac 上可以通过 Homebrew 安装 GDAL,或者在 Ubuntu 上通过ubuntugis
PPAs 安装。
PyOsmium 用于读取 OSM 文件,GDAL/OGR 用于写入 GIS 文件,因此该程序应该运行得相对快速且内存占用小。GDAL/OGR 有内置的 OSM 读取器,但此程序更加灵活。
此库不会自动安装 GDAL,因为它需要匹配您系统上的版本。您需要单独运行 pip install GDAL==2.3.2
(将 2.3.2 更改为与 gdalinfo --version
匹配的版本)
使用 Docker 运行
如果您想避免在系统上安装正确版本的 GDAL,可以运行程序作为 Docker 容器。
要构建 Docker 镜像,请使用以下命令。
docker build -t osm-export-tool .
要作为容器运行工具,使用当前目录作为工作目录,请使用以下命令。
docker run -it --rm -v $(pwd):/work osm-export-tool INPUT_FILE.pbf OUTPUT_NAME
示例用法
osm-export-tool INPUT_FILE.pbf OUTPUT_NAME
将创建 OUTPUT_NAME.gpkg。
以下所有标志都是可选的。
- -m, --mapping : 指定映射 YAML。默认为
osm_export_tool/mappings/defaults.yaml
,这是一个从 imposm3 默认值 转移的非常广泛的 OSM 标签的选择。 -f, --formats
: 用逗号分隔的格式列表,如gpkg,shp
。默认仅为 gpkg。--omit-osm-ids
: 默认情况下,每个表都将有一个osm_id
列。关系 ID 是负数。--clip <file>
: 一个 .poly 或 GeoJSON 文件。- GeoJSON 必须是 Polygon 或 MultiPolygon 几何形状,或者是一个包含一个 Polygon 或 MultiPolygon 特征的 FeatureCollection。
- 裁剪是通过 Shapely 进行的,可能会很慢。建议使用类似 osmium-tool 的工具对输入 PBF 进行过滤。
YAML 映射
- SQL 语句必须是键与常量之间的比较,键在前。
- 有效示例
height > 20
amenity='parking' OR (building = 'yes' and height > 5)
- 无效示例
20 < height
building > height
- 有效示例
- 更多示例可以在 映射目录 中找到。
- 如果省略了
types
键,则默认为points
、lines
和polygons
。 - 至少需要一个标签作为
select
键的子标签。 - 如果省略了
where
键,则默认为选择包含任何select
键的任何特征的要素。 - 如果
where
是 SQL 列表,则与将列表中的每个 SQL 用OR
连接起来等效。
输出格式
- OGC GeoPackage (gpkg)
- 这是默认的导出格式,对于现代 GIS 应用程序来说非常灵活。
- 将创建具有 wkbUnknown 几何类型的表,这允许异构几何类型。
- Shapefile (shp)
- 每个图层和几何类型都是一个单独的 .SHP 文件。这是因为每个 .SHP 文件只支持单一几何类型和列模式。
- KML (kml)
- 每个图层和几何类型都是一个单独的 .KML 文件。这是因为 GDAL/OGR KML 驱动程序不支持不同几何类型要素的交错写入。
-
Maps.ME(即将推出)
-
OsmAnd(即将推出)
-
Garmin(即将推出)