如何在非地理地图上显示vectorTile

时间:2018-07-13 06:14:17

标签: leaflet gis vector-tiles

我已经使用Leaflet L.TitleLayer在地图上显示了网格图块图层。现在,我有一个geojson文件,想在地图上显示。

{
   "type":"FeatureCollection",
   "features":[
      {
         "type":"Feature",
         "id":1,
         "properties":{
            "Entity":"LWPolyline",
            "Handle":"5D11",
            "Layer":"JMD",
            "LyrFrzn":0,
            "LyrLock":0,
            "LyrOn":1,
            "LyrVPFrzn":0,
            "LyrHandle":"16D",
            "Color":6,
            "EntColor":-1,
            "LyrColor":6,
            "BlkColor":0,
            "Linetype":"Continuous",
            "EntLinetyp":"Continuous",
            "LyrLnType":"Continuous",
            "BlkLinetyp":null,
            "Elevation":0.000000,
            "Thickness":0.000000,
            "LineWt":0,
            "EntLineWt":0,
            "LyrLineWt":0,
            "BlkLineWt":-1,
            "RefName":null,
            "LTScale":1.000000,
            "ExtX":0.000000,
            "ExtY":0.000000,
            "ExtZ":1.000000,
            "DocName":"03.dxf",
            "DocPath":"F:\\dataChange\\03.dxf",
            "DocType":"DXF",
            "DocVer":"AC1021",
            "height":0.000000,
            "Shape_Leng":18.192087
         },
         "geometry":{
            "type":"LineString",
            "coordinates":[
               [
                  3121034.4810791016,
                  534863.26330566406
               ],
               [
                  3121039.9448852539,
                  534866.55871582031
               ],
               [
                  3121041.3472900391,
                  534864.23352050781
               ],
               [
                  3121035.8834838867,
                  534860.93811035156
               ],
               [
                  3121034.4810791016,
                  534863.26330566406
               ]
            ]
         }
      }
   ]
}

我应该选择哪种地图来完成?因为geojson太大(上面的代码只是其中的一部分),所以我需要使用vectorTile。谢谢!

1 个答案:

答案 0 :(得分:0)

我的建议:

1)将数据放入PostGIS数据库中;

2)使用PostGIS ST_ASMVT,ST_ASMVTGEOM函数从后端(nodejs / asp.net / php等)获取矢量切片数据(pbf二进制文件);

3)可以使用mapnik(nodejs绑定)或mapserver(fastcgi,mascript无法产生mvt输出)来获取矢量图块。 Mapnik和mapserver可以直接使用geojson源(无需postgis应用层)。

4)使用openlayers(我的选择)或Leaflet或MapBox GL js客户端在浏览器中显示矢量切片。我更喜欢OL,因为它更具可定制性,并且可以在不同的投影中显示矢量切片(不仅在Web墨卡托中)。 使用mapserver或mapnik可以生成图像并使用MVT(如果需要)以及其他许多很酷的功能(如标签,查询,地理转换等)以及其他输出格式(pdf,kml等)。使用MVT需要客户端样式,但图像图块完全在服务器上呈现。但是PostGIS方式轻巧,快速且非常容易。

还有许多其他方法可以产生矢量图块。例如,gdal ogr实现(https://www.gdal.org/drv_mvt.html)支持图层。