我有3000多个代表分水岭的多边形(18个主要分水岭)。在第一阶段,将显示所有18个分水岭,其列表将放置在左侧边栏中。如果有任何用户将鼠标悬停在地图上,则仅弹出窗口将显示分水岭名称。如果任何用户单击地图上的任何主要分水岭,它将打开带有详细信息的弹出窗口。以更大的缩放比例,将显示所有分水岭。
我在征求您的意见,哪种开源解决方案最适合处理大量多边形?
我当时在考虑Leaflet或OpenLayers,但我不知道它们可以处理大量的多边形。
另外,您是否建议将它们存储在mysql中?
我有3000多个代表分水岭的多边形(18个主要分水岭)。在第一阶段,将显示所有18个分水岭,其列表将放置在左侧边栏中。如果有任何用户将鼠标悬停在地图上,则仅弹出窗口将显示分水岭名称。如果任何用户单击地图上的任何主要分水岭,它将打开带有详细信息的弹出窗口。以更大的缩放比例,将显示所有分水岭。
我在征求您的意见,哪种开源解决方案最适合处理大量多边形?
我当时在考虑Leaflet或OpenLayers,但我不知道它们可以处理大量的多边形。
另外,您是否建议将它们存储在mysql中?
Answers:
我将创建一个图像服务(栅格图层),并通过Web Map Service(WMS)提供它。这样,只要支持WMS(OpenLayers即可),您就可以使用任何感觉舒适的API框架。您可以使用WMS显示所有多边形要素的图层,然后使用WMS的GetFeatureInfo onclick来获取有关该多边形的信息。
如果出于任何原因需要地图上的矢量数据,则可以使用GetFeatureInfo响应数据在onclick上动态创建它。
请参见TileMill,它可以将UTFGrid交互栅格化为MBTiles文件,并将其托管在MapBox或诸如TileStache之类的开源MBTiles服务器实现中。
这里有很多多边形。这种方法要求您栅格化(也就是烘烤)切片,但实际上,这是在没有大量服务器资源,自定义应用程序或一组非常有限的浏览器的情况下完成所需操作的唯一方法。
比例依赖性和空间索引数据库将是此问题的关键。您应该能够使用至少两个,可能是三个或四个级别来代表分水岭。例如,您可以将数据划分为“主要”(18个),“次要”(所有属于同一“主要”的所有中尺度分水岭的某种组合)和第三类(3000个多边形)。这将为您提供三个不同的矢量层/服务。
使用比例依赖关系可以根据用户的缩放级别仅绘制适当的服务。
使用具有空间索引的数据库来确保服务能够快速绘制,并且仅绘制填充当前视图窗口所需的部分。
或者,您可以考虑创建分水岭图的图块(再次基于每个图层的适当比例创建),然后以这种方式提供服务。
该站点上已经存在许多问题,建议采用适当的开源解决方案来采用这些策略。