将2500个geoJSON多边形渲染到leaflet地图上。

8
我一直在寻找解决方案,但似乎找不到。
我有一个大小为170MB的GeoJSON文件。它包含约2500个多边形。我需要将其渲染到叶片地图上。显然,这么大的文件我没有机会做到。
最简单的方法是什么?我能否创建一个完全透明的PNG,只需在世界地图上呈现即可。巨大的大小是由于多边形的复杂性和数量。此时,我不需要它是交互式的。
谢谢, Brian
4个回答

14
最简单的方法是基于该数据创建自己的地图瓦片。实现这一目标的方法有几种,但我的建议是使用TileMill。它是免费的,并且非常容易使用。因此,你需要:
  • 使用TileMill并将你的GeoJSON文件指定为数据源

  • 使用TileMill内部类似CSS的语言配置地图的显示方式(例如多边形颜色)

  • 生成瓦片

  • 在你的Leaflet地图中加载一个引用你的文件的新的TileLayer

我实际上曾经写过一个教程,使用的是.shp而不是GeoJson,但应该足够相似:http://build-failed.blogspot.pt/2012/03/custom-map-tiles-part-2-tilemill.html

这些博客文章包含一些非常宝贵的信息。 - Jonno
2
TileMill现在位于https://github.com/tilemill-project/tilemill,仍然是v0.10版本 - 其继任者是Mapbox Studio - 请参见https://www.mapbox.com/mapbox-studio/。 - Brian Burns


7
我不能反驳psousa的建议。对于简单的演示,TileMill是一个很好的选择。
然而,如果你想将你的多边形叠加到另一张地图上,我认为唯一的方法就是使用Mike Bostock的TopoJSON和D3。
主要的TopoJSON页面: https://github.com/mbostock/topojson/wiki 在你所说的比例尺下的一个例子: http://bl.ocks.org/mbostock/4206573 你将不得不在Mike的github上搜寻他出色的例子,看如何将leaflet与D3覆盖在一起。
我目前已经成功地使用数百个复杂的多边形进行了这样的操作。但还没有需要超过数千个的情况...

1
TopoJSON在处理连续的多边形数据方面表现出色,例如州/城市/国家等,但我不确定这里是否适用。 - psousa
3
“only way”是一个大胆的说法。 - Eric Hartford
1
@EricHartford 我同意。不知道Mapbox是否有解决方案。 - arcsum
@arcsum 他们是这样的。我在下面添加了一个指针链接 - j08lue

3

只是一个谦虚的建议。 我已经成功地加载了10000多个多边形并通过自己的Geoserver和PostgreSQL DB + PostGIS实例查询属性,并生成了WMS(而不是WFS),如您所见。

10000+ polygons

但是,这并不是直接实现的,特别是如果geojson数据是原始(也是唯一)数据的话

在这方面,我同意psousa的答案,使用TileMill。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接