使用tilelive-copy命令进行矢量切片

切片命令:

tilelive-copy bridge:///home/bygis/data/daolutest.xml "foxgis+mongodb://localhost/dbname?tileset_id=daolu&owner=foxgis" --timeout=200000000

命令参数说明:
“bridge://” 文件协议,指定文件类型
“/home/bygis/data/daolutest.xml” 配置文件,配置切片参数
“foxgis+mongodb://” 自定义协议
“localhost/dbname” mongodb数据库地址
“tileset_id=daolu” 为矢量瓦片指定一个id,id名称可自定义
“owner=foxgis” 指定瓦片集的所有者
“–timeout=200000000” 设置超时时长,单位ms

一、配置文件说明

切片配置文件是一个xml文件,基本格式如下:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+init=epsg:3857" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34">

<Parameters>
  <Parameter name="bounds">25.6,-11.1,154,55.5</Parameter>
  <Parameter name="center">0,0,0</Parameter>
  <Parameter name="format">pbf</Parameter>
  <Parameter name="minzoom">0</Parameter>
  <Parameter name="maxzoom">12</Parameter>
  <Parameter name="json"><![CDATA[{"vector_layers":[
  {"id":"asia_a","description":"亚洲面","fields":{"gid":"Number"}},
  {"id":"china_l","description":"国界线","fields":{"gid":"Number","gb":"Number"}}
]}]]></Parameter>
</Parameters>


<Layer name="asia_a" buffer-size="8"
  srs="+init=epsg:3857">

    <Datasource>
       <Parameter name="type"><![CDATA[postgis]]></Parameter>
       <Parameter name="geometry_field"><![CDATA[the_geom_webmercator]]></Parameter>
       <Parameter name="extent"><![CDATA[-20037508.3,-20037508.3,20037508.3,20037508.3]]></Parameter>
       <Parameter name="srid"><![CDATA[3857]]></Parameter>
       <Parameter name="max_size"><![CDATA[10]]></Parameter>
       <Parameter name="user"><![CDATA[ngcc]]></Parameter>
       <Parameter name="password"><![CDATA[123456]]></Parameter>
       <Parameter name="host"><![CDATA[192.9.105.123]]></Parameter>
       <Parameter name="port"><![CDATA[5432]]></Parameter>
       <Parameter name="table"><![CDATA[(SELECT * FROM data.admin_map_asia_a) as data]]></Parameter>
       <Parameter name="dbname"><![CDATA[ngcc-storage]]></Parameter>
    </Datasource>
  </Layer>


<Layer name="china_l" buffer-size="8"
  srs="+init=epsg:3857">

    <Datasource>
       <Parameter name="type"><![CDATA[postgis]]></Parameter>
       <Parameter name="geometry_field"><![CDATA[the_geom_webmercator]]></Parameter>
       <Parameter name="extent"><![CDATA[-20037508.3,-20037508.3,20037508.3,20037508.3]]></Parameter>
       <Parameter name="srid"><![CDATA[3857]]></Parameter>
       <Parameter name="max_size"><![CDATA[10]]></Parameter>
       <Parameter name="user"><![CDATA[ngcc]]></Parameter>
       <Parameter name="host"><![CDATA[192.9.105.123]]></Parameter>
       <Parameter name="port"><![CDATA[5432]]></Parameter>
       <Parameter name="table"><![CDATA[(SELECT * FROM data.admin_map_china_l) as data]]></Parameter>
       <Parameter name="dbname"><![CDATA[ngcc-storage]]></Parameter>
       <Parameter name="password"><![CDATA[123456]]></Parameter>
    </Datasource>
  </Layer>

</Map>

其中每一个<Layer></Layer>标签指定一个图层,由包含在其中的<Datasource></Datasource> 定义数据源。
<Parameter></Parameter> 标签中定义的json参数是写入tilejson中的属性,按此格式定义每个图层中有哪些字段以及这些字段的数据类型(“String”或“Number”),便于以后配图使用。

二、DataSource标签的配置模板

1 postgis例子

<Layer name="asia_a" buffer-size="8"
  srs="+init=epsg:3857">

    <Datasource>
       <Parameter name="type"><![CDATA[postgis]]></Parameter>
       <Parameter name="geometry_field"><![CDATA[the_geom_webmercator]]></Parameter>
       <Parameter name="extent"><![CDATA[-20037508.3,-20037508.3,20037508.3,20037508.3]]></Parameter>
       <Parameter name="srid"><![CDATA[3857]]></Parameter>
       <Parameter name="max_size"><![CDATA[10]]></Parameter>
       <Parameter name="user"><![CDATA[ngcc]]></Parameter>
       <Parameter name="password"><![CDATA[123456]]></Parameter>
       <Parameter name="host"><![CDATA[192.9.105.123]]></Parameter>
       <Parameter name="port"><![CDATA[5432]]></Parameter>
       <Parameter name="table"><![CDATA[(SELECT * FROM data.admin_map_asia_a) as data]]></Parameter>
       <Parameter name="dbname"><![CDATA[ngcc-storage]]></Parameter>
    </Datasource>
  </Layer>

2 shapefile例子

<Layer name="vector" srs="+init=epsg:4236">
   <Datasource>
      <Parameter name="type">shape</Parameter>
      <!-- you can also point to your shapefile without the 'shp' extention -->
      <Parameter name="file">/path/to/your/shapefile.shp</Parameter>
   </Datasource>
</Layer>

3 geojson例子

<Layer name="layer" srs="+init=epsg:4326">
    <Datasource>
        <Parameter name="type">geojson</Parameter>
        <Parameter name="file">/path/to/your/XXXX.geojson</Parameter>
    </Datasource>
 </Layer>

<Layer name="layer" srs="+init=epsg:4326">
   <Datasource>
      <Parameter name="type">geojson</Parameter>
      <Parameter name="inline"><![CDATA[{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[0,0]},"properties":{"marker-color":"#ace","marker-size":"medium","symbol":"-","marker-symbol":"bus","marker-path":"/var/folders/6v/g9fjq5g12s7dh4r3717gkkrc0000gn/T/geojson-mapnikify-6349d0013c0834c3c9379580763c07cb.png"}},{"type":"Feature","geometry":{"type":"LineString","coordinates":[[0,0],[10,10]]},"properties":{"stroke":"#f0f0f0","stroke-width":2,"stroke-opacity":1}}]}]]></Parameter>
   </Datasource>
</Layer>

4 gpx/ogr例子

<Layer name="gps_waypoints">
   <Datasource>
      <Parameter name="type">ogr</Parameter>
      <Parameter name="file">test_point_line.gpx</Parameter>
      <Parameter name="layer">waypoints</Parameter>
   </Datasource>
</Layer>

5 tiff/gdal例子

<Layer name="GDAL Layer from TIFF file">
     <Datasource>
         <Parameter name="type">gdal</Parameter>
         <Parameter name="file">/path/to/your/data/raster.tiff</Parameter>
     </Datasource>
</Layer>

更多详见:https://github.com/mapnik/mapnik/wiki/XMLConfigReference

三、更新tilejson

运行以上命令进行切片,完成后会在mongodb数据库中的”tilesets”集合中生成一个tilejson,可以通过mongo shell运行db.tilesets.find({tileset_id:"daolu"}).pretty() 进行查看。同时会生成一个”tiles_daolu”集合,存储所有的矢量瓦片。
自动生成的tilejson会有某些属性缺失,需要手动更新,主要需要新增或更新以下属性:

{
    name:"admin_data",
    tiles:["http://192.168.1.101:3000/api/v1/tilesets/foxgis/daolu/{z}/{x}/{y}.vector.pbf"]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值