我已经使用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。谢谢!
答案 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)支持图层。