我们的网络应用程序包含简单的地图绘制功能(目前仅是嵌入式Google地图上的标记和KML叠加层)。这很好用;我们面临的唯一真正的限制是KML叠加层,它超出了Google对KML的大小和复杂性的限制。
我们正在考虑建立自己的服务器(例如GeoServer或ArcGIS Server);但是这似乎是迈出了一大步(例如),当Google的上限为10 MB时,要提供15 MB的KML。
我需要进行一次健全性检查:Google的免费与便捷之间是否有中间立场用于KML叠加层的API,以及设置自己的图块服务器?
#1 楼
由于您已经投资了Google Maps开发,因此我强烈建议将所有数据推送到Google Fusion Tables中,然后以类似于KML的方式将其解析到地图上,并具有出色的性能(请参阅WNYC Fusion Tables应用程序)。考虑将其升级为KML,而无需大幅度修改前端。评论
如果您的数据未按24小时更新时间表,我认为这是个好主意。这就是谷歌刚刚告诉我们的(如果kml降低了浏览器使用融合表的速度),所以我会说这是最好的答案。
–史蒂夫
2011年5月18日在21:16
感谢您指出Fusion Tables-某种程度上,这完全使我脱颖而出,非常酷。不幸的是,对于经常变化的数据来说,这有点笨拙。而且总体存储限制(每位用户250MB)无法扩展。
–草药Caudill
2011年5月19日下午14:50
请注意,实验性Fusion Tables服务将于2019年12月3日关闭。
–乔纳斯(Jonas)
19 Mar 28 '19在9:41
#2 楼
您可以通过引用较小KML的父KML将您的KML分解为多个KML。至少这将使文件大小降低到可观的水平,并允许您引用更大的数据集作为KML。老实说,KML实际上仅适用于具有少量功能和相关属性的小型数据集。我不会接近它作为文件数据源。如果您正在查看这些文件越来越大,我会考虑另一种数据类型,或者肯定是沿着GeoServer / MapServer路线查找分布式数据集。
评论
但是Network KML(带有Superoverlays是为大型数据集设计的),但需要Web服务器和渲染软件Geoserver在这种类型的KMZ上做得很好-与Google Earth配合使用效果最好,因为Google Maps API限制了KML的使用。
– Mapperz♦
2011年5月18日在20:32
除了Google Earth Enterprise Client之外,我从未对超级叠加感到好运。虽然我没有花很多时间在这上面。绝对是探索的选择,+ 1 @Mapperz
–OptimizePrime
2011年5月18日20:50
将GeoServer与Oracle一起使用并能很好地呈现KMZ(超级叠加层)-实时(不断更新)对用户非常有用的数据-必须调整geoserver以加快刷新速度。
– Mapperz♦
2011年5月18日20:50
#3 楼
如果您没有在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的存储选项(在撰写本文时)。
– geoographika
2011年6月23日12:25
#4 楼
您是否尝试过Google Fusion Tables。http://www.google.com/fusiontables/public/tour/index.html
您最多可以免费加载100mb的数据。
评论
更新:Google Fusion表不再可用。
–David Perlmutter
20年6月16日在13:51
#5 楼
如果您使用的是版本3,则可以去除唯一标识符以外的所有属性信息,并在用户单击功能时通过对Web服务的Ajax调用来请求信息。如果您拥有超过10 MB的点,那么最好进行某种群集而不是一次显示所有这些点。另外,您可以将地面叠加层分成单独的KML文件。#6 楼
MapLarge有一个有趣的解决方案-他们可以在服务器上复制您的数据,然后使用其专有软件即时繁琐地生成切片。他们提供了Javascript API,然后可以将这些API覆盖在Google Maps,OpenLayers等的基础地图上。查看一些示例-速度惊人:
http://beta.maplarge.com/Map/USDemographics
http://lobbydata.com/donors
它不是免费的,但它可能是一个不错的选择对于那些不想麻烦并花钱建立单独的服务器来生成这些层的人来说是一个选择。
评论
将您的一个KML分成2个较小的KML文件-可以选择打开和关闭不需要的数据。可选使用融合表(行数限制为100k或数据为100mb)-gmaps-samples.googlecode.com/svn/trunk/fusiontables/…请参见groups.google.com/group/fusion-tables-users-group/browse_thread/…
@mapperz您一次只能上传100MB的数据,但随后可以将更多的行导入同一表,最大存储量为250MB。
尽管我知道您已经知道了..gis.stackexchange.com/questions/6615/…
Fusion Tables服务将于2019年12月3日关闭,因此我看到的选择是使用软件-QGIS Desktop缩小kml文件。还有qgis python库。我将QGIS桌面与使用0.0005的“简化几何图形”选项一起使用。然后,将创建的图层导出为kml。您也可以从同一菜单将其作为批处理作业进行。然后,您可以在单独的项目中打开所有创建的层,并使用QGIS桌面内的控制台将所有.shp文件转换为.kml