将openstreetmap数据转换为gis和移动地图文件格式。

osm-export-tool的Python项目详细描述


OSM导出工具

This project is under development. For the previous version of the Export Tool, see hotosm/osm-export-tool.

动机

这个程序过滤OpenStreetMap数据并将其转换为专题表格式地理信息系统格式。 过滤器是通过yaml和熟悉的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

这个程序使用pyosmium来读取osm文件,使用gdal/ogr来编写gis格式,因此它应该相当快,并且占用内存较少。还有一个用于GDAL/OGR的OSM驱动程序,但是这个程序旨在允许在转换过程中有更多的灵活性。它还可以创建非表格格式的文件,如Garmin GPS设备或OSMand Android应用程序的文件。

示例用法

osm-export-tool jakarta.osm.pbf jakarta

以下所有标志都是可选的。

  • -m,--映射:指定映射yaml。默认为example/defaults.yaml,这是一个非常广泛的osm标记选择。
  • -f,--格式:以逗号分隔的格式列表,如gpkg、shp。默认值仅为gpkg。
  • --省略osm id:默认情况下,每个层中都包含一个osm_id字段,它是点的节点id,是直线和多边形的路径id(正)或关系id(负)。这将在默认情况下阻止添加此字段,尽管它仍可以在select中指定。
  • --clip<;file>;:一个.poly或geojson文件。

yaml格式

  • SQL语句必须是键与常量的比较,首先是键。
    • 有效示例:
      • 高度>;20
      • 建筑=是
    • 无效示例:
      • 20<;高度
      • 建筑>;高度
  • 如果省略types键,则默认为pointslinespolygons
  • 至少需要一个标记作为select键的子项。
  • 如果省略where键,则默认为任何selected键都不为空的条件。
  • 如果where是一个列表,则它相当于由或连接的每个where子级。

输入格式:

  • OSM PBF
  • OSM XML

输出格式:

  • OSM PBF
  • OSM XML
  • 地质包
  • 形状文件
  • kml
  • 奥斯曼
  • maps.me
  • 加敏
  1. OGC地质包(.gpkg)
  • 这是默认的导出格式,对于现代GIS应用来说是最灵活的。
  • 将使用wkbunknown几何类型创建表,该类型允许异构几何类型。
  1. 形状文件(.shp)
  • 每种图层和几何图形类型都是一个单独的.shp文件。这是因为每个.shp文件只支持单个几何图形类型和列架构。
  1. kml(.kml)
  • 每种图层和几何图形类型都是一个单独的.kml文件。这是因为gdal/ogr kml驱动程序不支持对具有不同几何类型的要素进行交叉写入。
  1. maps.me

  2. 奥斯曼

  3. 加敏

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java iText字体显示不正确   java使用ApacheFTPClient通过代理连接到FTP服务器   java是在类常量池、字符串池还是年轻一代中为字符串文本分配的空间?GC何时可以访问字符串文字?   java如何读取excel文件并将值设置为null   验证。包含在Java中不用于验证电子邮件格式的(“@”)   两个服务器实例上的java Hibernate主键冲突   java我无法在For循环(JavaFX)中设置按钮文本   单独SocketChannels的java并发读取()对于大型字节缓冲区速度较慢   OpenPDF java分组元素以保持在同一页面上   java将组件放置在任意(x,y)坐标处   java Jackson不会序列化hibernate惰性抓取字段   从Eclipse将带有库的java项目导出到可运行jar   java为什么会出现{错误?   java如何将线性布局(作为子布局)动态添加到约束布局(父布局)?