Qual è il prossimo passo se il nostro KML è troppo grande / complesso per l'API di Google Maps? [chiuso]


29

La nostra app Web include semplici funzionalità di mappatura (attualmente solo marcatori e overlay KML su una mappa Google incorporata). Funziona abbastanza bene; l'unica vera limitazione che affrontiamo sono gli overlay KML che vanno oltre le restrizioni di Google per dimensioni e complessità per KML .

Stiamo pensando di mettere in piedi il nostro server (ad es. GeoServer o ArcGIS Server); ma sembra un grande passo solo per servire (ad esempio) 15 MB di KML quando il limite di Google è di 10 MB.

Ho bisogno di un controllo di integrità: esiste una via di mezzo tra l'API facile e gratuita di Google per gli overlay KML e la configurazione del mio server di tile?


5
dividi il tuo unico KML in 2 file KML più piccoli - attivazione e disattivazione facoltativa dei dati non necessari.
Mapperz

1
tabelle di fusione uso facoltativo (limite di riga 100k o 100mb nei dati) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/… vedi groups.google.com/group/fusion-tables-users-group/browse_thread/…
Mapperz

@mapperz Puoi caricare solo 100 MB di dati alla volta, ma puoi quindi importare ulteriori righe nella stessa tabella fino a 250 MB di spazio di archiviazione.
geographika,

Anche se vedo che lo sapevi già .. gis.stackexchange.com/questions/6615/…
geographika,

Il servizio Fusion Tables si chiuderà il 3 dicembre 2019, quindi l'opzione che vedo è quella di ridurre i file kml con il software: il desktop QGIS. c'è anche la libreria qgis python. Ho usato il desktop QGIS con l'opzione Semplifica geometria usando 0.0005. Quindi esporto il livello creato come kml. È possibile eseguire questa operazione anche come processo batch dallo stesso menu. Quindi puoi aprire tutti i livelli creati in un progetto separato e usare la console all'interno del desktop QGIS per convertire tutti i file .shp in .kml
makkasi il

Risposte:


12

Dato che hai già investito nello sviluppo di Google Maps, ti consiglio vivamente di inserire tutti i dati in Google Fusion Tables, che possono quindi essere analizzati sulla mappa in modo simile a KML con prestazioni incredibili (vedi l' app WNYC Fusion Tables ). Consideralo un aggiornamento a KML senza dover modificare drasticamente il front-end.


Penso che questa sia un'ottima idea se i tuoi dati non seguono un programma di aggiornamento> 24 ore. Questo è ciò che Google ci ha appena detto (se kml sta rallentando il browser, usa le tabelle di fusione) per fare questo, direi che questa è la risposta migliore.
Steve,

1
Grazie per aver segnalato Fusion Table: in qualche modo questo è completamente sfuggito alla mia attenzione, molto bello. Sfortunatamente questo sarebbe un po 'goffo con cui lavorare per i dati che cambiano frequentemente; e le limitazioni generali di archiviazione (250 MB per utente) non ci consentirebbero di ridimensionare.
Herb Caudill,

2
Si noti che il servizio sperimentale di Fusion Tables verrà chiuso il 3 dicembre 2019.
Jonas

12

Puoi suddividere il tuo KML in più KML con un KML principale che fa riferimento ai kml più piccoli. Almeno questo ridurrà le dimensioni dei tuoi file a un livello rispettabile e ti consentirà di fare riferimento a set di dati molto più grandi come KML.

Onestamente KML è davvero utile solo per piccoli set di dati con poche funzionalità e attributi associati. Non ci avvicinerei come fonte di dati di file. Se stai guardando questi file sempre più grandi, guarderei un altro tipo di dati o sicuramente dirigerei verso il basso il percorso GeoServer / MapServer per set di dati distribuiti.


2
Ma Network KML (con Superoverlays è progettato per set di dati di grandi dimensioni) ma richiede un server Web e un software di rendering Geoserver fa un buon lavoro con questo tipo di KMZ - funziona meglio con Google Earth poiché l'API di Google Maps ha limitato l'utilizzo di KML.
Mapperz

Non ho mai avuto molta fortuna con i superoverlay, tranne quelli con Google Earth Enterprise Client. Anche se non ho trascorso molto tempo con questo. Sicuramente un'opzione da esplorare, +1 @Mapperz
OptimizePrime

1
Usa GeoServer con Oracle e funziona molto bene eseguendo il rendering di KMZ (superoverlay) - i dati live (costantemente aggiornati) estratti molto utili per gli utenti - hanno dovuto modificare il geoserver per aumentare la velocità di aggiornamento.
Mapperz

8

Se non hai investito troppo tempo nell'API di Google Maps, potresti passare a OpenLayers che ha un parser KML lato client in grado di leggere i tuoi file KML - vedi esempio di seguito:

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

Tuttavia, per un file di 15 MB questo probabilmente arresterebbe il browser. Probabilmente è abbastanza lento anche attraverso i server di Google quando ti avvicini al limite della dimensione del file.

C'è davvero bisogno del livello di dettaglio di 15 MB o potresti semplificare il KML senza perdere troppe informazioni?

Devi accedere al vettore / geometria sul lato client? Questi dati potrebbero essere forniti come immagini?

Se nessuno di questi è possibile, dovrai guardare qualche tipo di software che serve mappe. Insieme a GeoServer di ArcGIS Server potresti considerare MapServer per servire il KML o come WFS. Il vantaggio dell'utilizzo di un server di mappe è che le richieste restituiranno solo i dati all'interno della mappa, riducendo il traffico di rete e diminuendo i tempi di caricamento.


Dopo aver provato le tabelle di Google Fusion, l'approccio di Guddie è di gran lunga il più semplice da implementare. Puoi caricare solo 100 MB di KML alla volta, ma ogni utente ha un'opzione di archiviazione di 250 MB (al momento della scrittura).
geographika,

2

Se si utilizza la versione 3, è possibile eliminare tutte le informazioni sugli attributi ad eccezione di un identificatore univoco e richiedere le informazioni tramite chiamate ajax a un servizio Web ogni volta che un utente fa clic su una funzione. Se hai più di 10 MB di punti, è probabilmente una buona idea fare un qualche tipo di clustering invece di visualizzare tutti quei punti contemporaneamente. Inoltre potresti separare le tue sovrapposizioni di terreno in file KML separati.



2

MapLarge ha una soluzione interessante: possono replicare i tuoi dati sui loro server e quindi eseguire il pesante sollevamento di generazione di tessere al volo usando il loro software proprietario. Offrono API Javascript che possono quindi sovrapporle su mappe di base da Google Maps, OpenLayer, ecc.

Dai un'occhiata ad alcuni dei loro esempi: la velocità è impressionante:

Non è gratuito, ma potrebbe essere una buona opzione per qualcuno che non voleva il problema e la spesa di alzare in piedi un server separato per generare questi livelli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.