0

我使用 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。谢谢!

4

1 回答 1

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 允许生成图像并使用其他输出格式(pdf、kml 等),除了 MVT(如果需要)和许多其他很酷的功能,如标签、查询、地理转换等。使用 MVT 需要客户端样式,但图像图块完全在服务器上呈现。但 PostGIS 方式轻巧、快速且非常简单。

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

于 2018-12-28T11:12:50.537 回答