当前位置:   article > 正文

基于webgl高性能地图解决方案:二次开发keper.gl地图可视化分析工具 - openstreetmap街道地图离线部署(一)_openstreetmap离线部署

openstreetmap离线部署

离线部署openstreetmap街道地图将原始文件*.pbf文件转换为mapbox地图文件*.mbtiles

1、osm pbf 地图文件下载

可以点击进入只下载某个地区或国家: https://download.geofabrik.de/
全球数据:https://planet.openstreetmap.org/
用种子下载最新pbf:

docker run -v $(pwd)/aria2-downloads:/downloads -v $(pwd)/aria2:/config --rm p3terx/aria2-pro \
    aria2c https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf.torrent --dir=/downloads
  • 1
  • 2

2、数据准备

必须-海洋和海洋的多边形shp: https://osmdata.openstreetmap.de/
https://osmdata.openstreetmap.de/download/water-polygons-split-4326.zip 解压*.shp文件放到coastline目录中

可选-其他自然相关数据集(Natural Earth):
https://github.com/fraxen/naturalearth_wagnerVII/
https://www.naturalearthdata.com/

3、开始转换

方案一:openmaptiles

1)git clone https://github.com/openmaptiles/openmaptiles.git
2)全文替换 name_de,name:de 为 name_zh,name:zh
3) cd openmaptiles 修改 .env 配置文件: 如 MAX_ZOOM=10
4)下载 海洋多边形shp与Natural Earth的shp放到data目录
5)下载 china.osm.pbf 放到data目录
6)按照README.md文件依次执行如下操作
make clean                            # clean / remove existing build files
make                                  # generate build files
make start-db                         # start up the database container.
make import-data                      # Import external data from OpenStreetMapData, Natural Earth and OpenStreetMap Lake Labels.
# make download area=albania          # download albania .osm.pbf file -- can be skipped if a .osm.pbf file already existing
make import-osm area=china            # import data into postgres
# make import-wikidata                # import Wikidata
make import-sql                       # create / import sql funtions 
make generate-bbox-file area=china    # compute data bbox -- not needed for the whole planet
make generate-tiles-pg                # generate tiles
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

方案二:tilemaker

参考地址:
https://blog.kleunen.nl/blog/tilemaker-generate-map
https://zhuanlan.zhihu.com/p/390797186

1)获取配置文件
git clone https://github.com/systemed/tilemaker.git
cd resources
  • 1
  • 2
1)配置osm导出的语言

编辑: process-openmaptiles.lua

tilemaker v2.0 及以下:

function SetNameAttributes(obj)
    if obj:Holds("name:zh") then
       	obj:Attribute("name:latin", obj:Find("name:zh"))
    elseif obj:Holds("name:en") then
       	obj:Attribute("name:latin", obj:Find("name:en"))       	  
    else
       	obj:Attribute("name:latin", obj:Find("name"))
    end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

OR

function SetNameAttributes(obj)
    obj:Attribute("name:latin", obj:Find("name"))
    obj:Attribute("name:en", obj:Find("name:en"))
    obj:Attribute("name:zh", obj:Find("name:zh"))
  • 1
  • 2
  • 3
  • 4
2)提取指定区域pbf文件(无需裁剪可跳过)
根据geojson区域数据提取指定区域pbf文件 中国边界提取为例

https://docs.osmcode.org/osmium/latest/osmium-extract.html

下载中国边界数据
http://datav.aliyun.com/portal/school/atlas/area_selector#&lat=31.769817845138945&lng=104.29901249999999&zoom=4
重命名为:china_EPSG4326.geojson

新建 extracts.json

{
  "extracts": [
    {
      "output": "/srv/china.osm.pbf",
      "description": "China",
      "polygon": {
        "file_name": "/srv/china_EPSG4326.geojson",
        "file_type": "geojson"
      }
    }
  ],
  "directory": "/srv/tmp/"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

开始提取

docker run -v $(pwd):/srv --rm blackmount8/osmium-tool osmium extract \
-v -c /srv/extracts.json \
    planet-latest.osm.pbf
  • 1
  • 2
  • 3
3) 开始转换

将 resources下的文件与coastline文件夹放在同一个文件夹下面,执行命令:

docker run -v $(pwd):/srv -v $(pwd)/coastline:/coastline --rm stadtnavi/tilemaker \
 /srv/planet-latest.osm.pbf --output=/srv/planet.mbtiles --store=/srv/tmp/ \
 --process /srv/process-openmaptiles.lua --config /srv/config-openmaptiles.json \
 --threads=10
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/834911
推荐阅读
相关标签
  

闽ICP备14008679号