使用TCPDF将Openstreetmaps自定义平铺映射为PDF

时间:2014-12-13 11:04:58

标签: php openstreetmap tcpdf

我想在PHP中使用TCPDF将地图图像添加到pdf文件中。 我怎样才能做到这一点?另外我想使用自定义磁贴提供程序(Mapnik,German Style)。是否有任何解决方案或方法可以使其发挥作用?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用本地mapnik副本和Nik4执行此操作。

您需要:

  1. 安装postgresql,postgis,mapnik,Nik4
  2. 获取Mapnik,德国风格,风格xml。
  3. 将您感兴趣的区域的数据上传到postgis(通过osm2pgsql)
  4. 现在您可以使用Nik4和Nik4 cgi。
  5. 这是一个相当困难的方式,但也有好消息:你可以使用Docker dkiselev/nik4web图像,预装postgis,mapnik,nik4和其他一些东西。

    sudo apt-get install docker
    
    # as root
    docker pull dkiselev/nik4web
    

    创建容器并运行它

    docker run -i -t -P dkiselev/nik4web /bin/bash
    
    #from container 
    startup
    

    之后打开localhost / nik4,你就可以获得俄罗斯其中一个州的vith 2样式的地图。因此,您需要改变风格和区域。

    首先,改变风格

    默认样式位于/home/osm/styles/openstreetmap-carto子文件夹中。它在carto css中。所以得到"德国风格",如果它在carto css然后用carto编译。

    su - osm
    
    # save default compiled osm style
    mv styles/openstreetmap-carto/osm.xml styles/openstreetmap-carto/osm-def.xml 
    
    # compile german style
    carto german_stye.mml > german_style_mapnik.xml
    
    #replace default osm style
    mv -f german_style_mapnik.xml styles/openstreetmap-carto/osm-def.xml 
    

    如果它已在xml中作为mapnik渲染规则分发,请替换styles/openstreetmap-carto/osm.xml

    第二步是使用osm2pgsql上传新的区域。默认osm样式的osm2pgsql样式文件(我认为德语样式使用相同的样式)是/home/osm/styles/openstreetmap-carto/openstreetmap-carto.style

    osm2pgsql --create --slim --cache 1000 --number-processes 2 --hstore --style /home/osm/styles/openstreetmap-carto/openstreetmap-carto.style --multi-geometry --database gis /path/to/osm/data/for/your/region.pbf
    

    多数民众赞成。在您启动postgresql,apache2和mapnik(请参阅/bin/startup)后,您将获得自己的风格,并使用svg,pdf和png导出。