使用tilestache构建瓦片地图服务器

Tilestache是一款开源的瓦片地图服务器,其安装和使用较简单,但官方的文档感觉还是偏简单了些。在这儿记录一下最近安装和使用tilestache的方法。

1、 安装

在Ubuntu服务器上安装tilestache还是比较简单的:

sudo apt-get install tilestache python-pil python-gdal

tilestache默认并没有绑定python-pil和python-gdal两个库,若开始只是安装了tilestache,后面可能可能会出现返回空白地图的问题。

2. 使用

tilestache使用时要构建一个cfg的配置文件,同时若采用mapnik来进行渲染,还必须提供每个对应图层的渲染配置文件。

一个简要的配置文件示例如下:

{
  "cache": {
    "name": "Disk",
    "path": "cache/"
  },
  "layers":
  {
   "landuse2005":
        {
        "provider":{"name":"mapnik","mapfile":"landuse2005.xml"}, "projection": "spherical mercator",
        "preview":   {        "lat": 33.4,       "lon": 97.3,        "zoom": 15      }
        },
    "roads":
   {
        "provider":{"name":"proxy","url":"http://tile.openstreetmap.org/{Z}/{X}/{Y}.png"},
	"preview":   {        "lat": 33.4,       "lon": 97.3,        "zoom": 15      }
    }
  }
}

示例中有两个图层,landuse2005采用mapnik进行渲染,roads采用OSM的瓦片并直接进行代理。mapnik的渲染文件入门不易,可以采用tilemill来生成处理。

3. 预制瓦片

上述图层的landuse2005应该预先生成,用户访问时才能提高速度。tilestache同时也提供了一个程序来生成:

tilestache-seed -b 31.8 89.3 36.3 102.3 -c tilestache.cfg -l landuse2005 10 11 12 13 14 15

4. 启动

最简单的方法就是使用tilestache-server来启动对应的服务:

tilestache-server -c tilestache.cfg -i 192.168.13.13

参数比较简单,-i就是要绑定的网络接口,然后用浏览器访问:

http://192.168.13.13:8080/landuse2005/preview.html

 

 

2 thoughts on “使用tilestache构建瓦片地图服务器”

  1. 你好,很抱歉很晚打扰你。我在使用tilestache的时候遇到了一些问题:我用”example”:
    {
    “provider”: {“name”: “mapnik”, “mapfile”: “/home/******/osm/style/test.xml”}
    }来配置渲染文件时,发现无法连接到postgesql数据库,最后http://localhost:8080/example/0/0/0.png 渲染的图片只是一张蓝色的底图,上面没有内容,我截取 xml文件的片段为:<Layer name=”landuse_gen0″
    status=”on”
    srs=”+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over”>
    <StyleName>landuse_gen0</StyleName>
    <Datasource>
    <Parameter name=”dbname”><![CDATA[gis]]></Parameter>
    <Parameter name=”extent”><![CDATA[-20037508.34,-20037508.34,20037508.34,20037508.34]]></Parameter>
    <Parameter name=”geometry_field”><![CDATA[way]]></Parameter>
    <Parameter name=”host”><![CDATA[localhost]]></Parameter>
    <Parameter name=”id”><![CDATA[landuse_gen0]]></Parameter>
    <Parameter name=”key_field”><![CDATA[]]></Parameter>
    <Parameter name=”password”><![CDATA[whu]]></Parameter>
    <Parameter name=”port”><![CDATA[5432]]></Parameter>
    <Parameter name=”project”><![CDATA[osm-bright-imposm]]></Parameter>
    <Parameter name=”srs”><![CDATA[+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over]]></Parameter>
    <Parameter name=”table”><![CDATA[( SELECT way, way_area AS area, COALESCE(landuse, leisure, “natural”, highway, amenity, tourism) AS type
    FROM planet_osm_polygon
    WHERE way_area > 100000
    ORDER BY way_area DESC
    ) AS data]]></Parameter>
    <Parameter name=”type”><![CDATA[postgis]]></Parameter>
    <Parameter name=”user”><![CDATA[postgres]]></Parameter>
    </Datasource>
    </Layer>

    谢谢你!

  2. 你好,很抱歉很晚打扰你。我在使用tilestache的时候遇到了一些问题:我用”example”:
    {
    “provider”: {“name”: “mapnik”, “mapfile”: “/home/******/osm/style/test.xml”}
    }来配置渲染文件时,发现无法连接到postgesql数据库,最后http://localhost:8080/example/0/0/0.png 渲染的图片只是一张蓝色的底图,上面没有内容,我截取 xml文件的片段为:<Layer name=”landuse_gen0″
    status=”on”
    srs=”+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over”>
    <StyleName>landuse_gen0</StyleName>
    <Datasource>
    <Parameter name=”dbname”><![CDATA[gis]]></Parameter>
    <Parameter name=”extent”><![CDATA[-20037508.34,-20037508.34,20037508.34,20037508.34]]></Parameter>
    <Parameter name=”geometry_field”><![CDATA[way]]></Parameter>
    <Parameter name=”host”><![CDATA[localhost]]></Parameter>
    <Parameter name=”id”><![CDATA[landuse_gen0]]></Parameter>
    <Parameter name=”key_field”><![CDATA[]]></Parameter>
    <Parameter name=”password”><![CDATA[whu]]></Parameter>
    <Parameter name=”port”><![CDATA[5432]]></Parameter>
    <Parameter name=”project”><![CDATA[osm-bright-imposm]]></Parameter>
    <Parameter name=”srs”><![CDATA[+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over]]></Parameter>
    <Parameter name=”table”><![CDATA[( SELECT way, way_area AS area, COALESCE(landuse, leisure, “natural”, highway, amenity, tourism) AS type
    FROM planet_osm_polygon
    WHERE way_area > 100000
    ORDER BY way_area DESC
    ) AS data]]></Parameter>
    <Parameter name=”type”><![CDATA[postgis]]></Parameter>
    <Parameter name=”user”><![CDATA[postgres]]></Parameter>
    </Datasource>
    </Layer>

    谢谢你!

Leave a Reply

Your email address will not be published. Required fields are marked *