Wie geht es weiter, wenn unser KML für die Google Maps-API zu groß / komplex ist? [geschlossen]

29

Unsere Web-App enthält einfache Zuordnungsfunktionen (derzeit nur Markierungen und KML-Overlays auf einer eingebetteten Google Map). Das funktioniert ziemlich gut; Die einzige wirkliche Einschränkung sind KML-Overlays, die über die Größen- und Komplexitätsbeschränkungen von Google für KML hinausgehen .

Wir überlegen, einen eigenen Server (z. B. GeoServer oder ArcGIS Server) einzurichten. Dies scheint jedoch ein großer Schritt zu sein, um beispielsweise 15 MB KML bereitzustellen, wenn das Google-Limit bei 10 MB liegt.

Ich benötige eine Sicherheitsüberprüfung: Gibt es einen Mittelweg zwischen Googles kostenloser und einfacher API für KML-Overlays und dem Einrichten meines eigenen Kachelservers?

Herb Caudill
quelle
5
Teilen Sie eine KML-Datei in zwei kleinere KML-Dateien auf. Optional können Sie Daten ein- und ausschalten, die Sie nicht benötigen.
Mapperz
1
Optionale Verwendung von Fusionstabellen (maximal 100 KB
Mapperz
@mapperz Sie können nur 100 MB Daten gleichzeitig hochladen, aber Sie können dann weitere Zeilen bis zu 250 MB Speicher in dieselbe Tabelle importieren.
Geographika
Obwohl ich sehe, dass du das schon wusstest
geographika
Der Fusion Tables-Dienst wird am 3. Dezember 2019 heruntergefahren. Die Option, die ich sehe, besteht darin, die kml-Dateien mit der Software QGIS desktop zu verkleinern. Es gibt auch eine QGIS-Python-Bibliothek. Ich habe QGIS Desktop mit der Option Geometrie vereinfachen unter Verwendung von 0,0005 verwendet. Dann exportiere ich die erstellte Ebene als kml. Sie können dies auch als Batch-Job über dasselbe Menü ausführen. Dann können Sie alle erstellten Schichten in separatem Projekt öffnen und mit Hilfe der Konsole innerhalb des QGIS Desktop alle der SHP - Dateien zu konvertieren , um zu .KML
makkasi

Antworten:

12

Da Sie bereits in die Entwicklung von Google Maps investiert haben, empfehle ich dringend, alle Daten in Google Fusion Tables zu übertragen, die dann auf ähnliche Weise wie KML mit einer unglaublichen Leistung auf die Karte geparst werden können (siehe WNYC Fusion Tables-App ). Betrachten Sie es als Upgrade auf KML, ohne das Front-End drastisch ändern zu müssen.

Gady
quelle
Ich denke, dies ist eine großartige Idee, wenn Ihre Daten nicht innerhalb eines> 24-Stunden-Aktualisierungsplans vorliegen. Dies ist, was uns Google gerade gesagt hat (wenn kml den Browser verlangsamt, verwende Fusion-Tabellen), um dies zu tun. Ich würde sagen, dies ist die beste Antwort.
Steve
1
Vielen Dank für den Hinweis auf Fusion Tables - irgendwie war mir das völlig entgangen, sehr cool. Leider wäre die Arbeit mit Daten, die sich häufig ändern, etwas umständlich. Aufgrund der allgemeinen Speicherbeschränkungen (250 MB pro Benutzer) können wir nicht skalieren.
Herb Caudill
2
Beachten Sie, dass der experimentelle Fusion Tables-Dienst am 3. Dezember 2019 heruntergefahren wird.
Jonas
12

Sie können Ihre KML-Datei in mehrere KML-Dateien aufteilen, wobei eine übergeordnete KML-Datei auf die kleineren kmls verweist. Zumindest wird dies Ihre Dateigröße auf ein respektables Maß reduzieren und es Ihnen ermöglichen, auf viel größere Datensätze als KML zu verweisen.

Ehrlich gesagt ist KML nur für kleine Datensätze mit wenigen Funktionen und zugehörigen Attributen geeignet. Ich würde es nicht als Dateidatenquelle verwenden. Wenn diese Dateien größer werden, würde ich mir einen anderen Datentyp ansehen oder definitiv die GeoServer / MapServer-Route für verteilte Datensätze durchgehen.

OptimizePrime
quelle
2
Network KML (mit Superoverlays sind für große Datenmengen konzipiert) erfordert jedoch einen Webserver und eine Rendering-Software. Geoserver leistet gute Arbeit mit dieser Art von KMZ - funktioniert am besten mit Google Earth, da die Verwendung von KML in Google Maps API eingeschränkt ist.
Mapperz
Ich hatte nie viel Glück mit Superoverlays, außer mit Google Earth Enterprise Client. Obwohl ich nicht viel Zeit damit verbracht habe. Auf jeden Fall eine Option zum Erkunden, +1 @Mapperz
OptimizePrime
1
Verwenden Sie GeoServer mit Oracle und rendern Sie KMZ (Superoverlay) - Live-Daten (ständig aktualisiert), die für die Benutzer sehr nützlich sind. Sie mussten den Geoserver optimieren, um die Aktualisierungsgeschwindigkeit zu erhöhen.
Mapperz
8

Wenn Sie nicht zu viel Zeit in Ihre Google Maps-API investiert haben, können Sie zu OpenLayers wechseln, das über einen clientseitigen KML-Parser verfügt, der Ihre eigenen KML-Dateien lesen kann - siehe Beispiel unten:

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

Bei einer 15-MB-Datei würde dies den Browser jedoch wahrscheinlich zum Stillstand bringen. Wahrscheinlich ist es auch auf den Google-Servern ziemlich langsam, wenn Sie sich der Dateigrößenbeschränkung nähern.

Besteht wirklich ein Bedarf an 15 MB Detailtiefe oder können Sie die KML-Datei vereinfachen, ohne zu viele Informationen zu verlieren?

Müssen Sie clientseitig auf den Vektor / die Geometrie zugreifen? Könnten diese Daten als Bilder geliefert werden?

Wenn beides nicht möglich ist, müssen Sie sich eine Art von Software ansehen, die Karten bereitstellt. Zusammen mit GeoServer von ArcGIS Server könnten Sie MapServer in Betracht ziehen , um das KML oder als WFS bereitzustellen. Der Vorteil der Verwendung eines Kartenservers besteht darin, dass die Anforderungen nur die Daten in der Karte zurückgeben, wodurch der Netzwerkverkehr verringert und die Ladezeiten verkürzt werden.

geographika
quelle
Nach dem Ausprobieren von Google Fusion-Tabellen ist Guddies Ansatz bei weitem am einfachsten zu implementieren. Sie können jeweils nur 100 MB KML hochladen, aber jeder Benutzer verfügt über eine Speicheroption von 250 MB (zum Zeitpunkt des Schreibens).
Geographika
2

Wenn Sie Version 3 verwenden, können Sie alle Attributinformationen mit Ausnahme eines eindeutigen Bezeichners entfernen und die Informationen über Ajax-Aufrufe an einen Webdienst anfordern, wenn ein Benutzer auf ein Feature klickt. Wenn Sie Punkte im Wert von über 10 MB haben, ist es wahrscheinlich eine gute Idee, eine Art Clustering durchzuführen, anstatt alle diese Punkte gleichzeitig anzuzeigen. Sie können Ihre Bodenüberlagerungen auch in separate KML-Dateien aufteilen.

Peter Smith
quelle
2

MapLarge hat eine interessante Lösung: Sie können Ihre Daten auf ihren Servern replizieren und dann mithilfe ihrer proprietären Software im Handumdrehen Kacheln erstellen . Sie bieten Javascript-APIs an, die diese dann auf Basiskarten von Google Maps, OpenLayers usw. überlagern können.

Schauen Sie sich einige ihrer Beispiele an - die Geschwindigkeit ist beeindruckend:

Es ist nicht kostenlos, aber es könnte eine gute Option für jemanden sein, der nicht die Mühe und die Kosten wollte, einen separaten Server aufzubauen, um diese Ebenen zu generieren.

Herb Caudill
quelle