如果我们的KML对于Google Maps API而言太大/太复杂,该怎么办?[关闭]


29

我们的网络应用程序包括简单的地图功能(目前仅是嵌入式Google地图上的标记和KML叠加层)。这很好用;我们面临的唯一真正的限制是KML叠加层,它超出了Google 对KML大小和复杂性的限制

我们正在考虑建立自己的服务器(例如GeoServer或ArcGIS Server);但这似乎是一个巨大的步骤,例如,当Google的上限为10 MB时,仅提供1​​5 MB的KML。

我需要进行完备性检查:在Google的免费KML叠加层API和设置我自己的tile服务器之间是否有中间立场?


5
将您的一个KML分成2个较小的KML文件-不需要的可选开关数据。
Mapperz


@mapperz您一次只能上传100MB的数据,但随后可以将更多的行导入同一表,最大存储量为250MB。
geographika

尽管我看到您已经知道了这一点..gis.stackexchange.com/questions/6615/…
geographika

Fusion Tables服务将于2019年12月3日关闭,因此我看到的选择是使用软件-QGIS Desktop缩小kml文件。还有qgis python库。我将QGIS桌面与使用0.0005的“简化几何图形”选项一起使用。然后,将创建的图层导出为kml。您也可以从同一菜单将其作为批处理作业进行。然后,您可以在单独的项目中打开所有创建的层,并使用QGIS桌面内的控制台将所有.shp文件转换为.kml
makkasi,

Answers:


12

由于您已经投资了Google Maps开发,因此我强烈建议将所有数据推送到Google Fusion Tables中,然后以类似于KML的方式将其解析为具有出色性能的KML(请参阅WNYC Fusion Tables应用程序)。考虑将其升级为KML,而无需大幅度修改前端。


如果您的数据更新时间不超过24小时,我认为这是个好主意。这就是谷歌刚刚告诉我们的(如果kml降低了浏览器使用融合表的速度),所以我会说这是最好的答案。
史蒂夫

1
感谢您指出Fusion Tables,这真使我完全没注意到,非常酷。不幸的是,对于频繁更改的数据来说,这有点笨拙。而且总体存储限制(每位用户250MB)无法扩展。
赫尔·卡迪尔

2
请注意,实验性Fusion Tables服务将于2019
Jonas

12

您可以使用引用较小KML的父KML将您的KML分解为多个KML。至少这将使文件大小降低到可观的水平,并使您可以引用更大的数据集作为KML。

老实说,KML实际上仅适用于具有少量功能和相关属性的小型数据集。我不会接近它作为文件数据源。如果您正在查看这些文件越来越大,那么我会考虑另一种数据类型,或者肯定是沿着GeoServer / MapServer路线查找分布式数据集。


2
但是Network KML(带有Superoverlays是为大型数据集设计的),但需要Web服务器和渲染软件Geoserver在此类KMZ方面做得很好-与Google Earth配合使用效果最好,因为Google Maps API限制了KML的使用。
Mapperz

除了Google Earth Enterprise Client之外,我从来没有对超级叠加感到好运。虽然我没有花很多时间在这上面。绝对可以探索,+ 1 @Mapperz
OptimizePrime

1
将GeoServer与Oracle一起使用并能很好地呈现KMZ(超级叠加层)-实时(不断更新)对用户非常有用的数据-必须调整geoserver以加快刷新速度。
Mapperz

8

如果您没有在Google Maps API上花费太多时间,则可以切换到OpenLayers,该客户端具有可以读取您自己的KML文件的客户端KML解析器-请参见以下示例:

http://openlayers.org/dev/examples/kml-layer.html

但是,对于15MB的文件,这可能会使浏览器停顿下来。当您接近文件大小限制时,通过Google服务器的速度可能也相当慢。

确实需要15MB的详细信息级别,还是可以简化KML而不丢失太多信息?

您是否需要在客户端访问向量/几何?可以将这些数据用作图像吗?

如果上述两种方法都不可行,则您必须查看某种地图服务类型的软件。与ArcGIS Server的GeoServer一起,您可以考虑将MapServer用作KML或作为WFS。使用地图服务器的好处是请求将仅返回地图中的数据-减少了网络流量并减少了加载时间。


试用完Google Fusion表之后,Guddie的方法是迄今为止最容易实现的方法。您一次只能上传100MB的KML,但是每个用户都有250MB的存储选项(在撰写本文时)。
geographika

2

如果您使用的是版本3,则可以去除唯一标识符以外的所有属性信息,并在用户单击功能时通过对Web服务的Ajax调用来请求信息。如果您拥有超过10 MB的点,那么最好进行某种群集而不是一次显示所有这些点。另外,您可以将地面叠加层分成单独的KML文件。



2

MapLarge有一个有趣的解决方案-他们可以在服务器上复制您的数据,然后使用其专有软件即时繁琐地生成切片。他们提供Javascript API,然后可以将这些API覆盖在Google Maps,OpenLayers等的基础地图上。

看看他们的一些例子-速度令人印象深刻:

它不是免费的,但是对于那些不想麻烦和花钱建立单独的服务器来生成这些层的人来说,这可能是一个不错的选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.