Quelle est la prochaine étape si notre KML est trop grand / complexe pour l'API Google Maps? [fermé]

29

Notre application Web comprend des capacités de cartographie simples (actuellement uniquement des marqueurs et des superpositions KML sur une carte Google intégrée). Cela fonctionne assez bien; la seule véritable limitation à laquelle nous sommes confrontés est les superpositions KML qui vont au-delà des restrictions de taille et de complexité de Google pour KML .

Nous envisageons de créer notre propre serveur (par exemple GeoServer ou ArcGIS Server); mais cela semble être une étape énorme pour servir (par exemple) 15 Mo de KML lorsque la limite de Google est de 10 Mo.

J'ai besoin d'un examen de santé mentale: existe-t-il un juste milieu entre l'API gratuite et facile de Google pour les superpositions KML et la configuration de mon propre serveur de tuiles?

Herbe Caudill
la source
5
divisez votre seul KML en 2 fichiers KML plus petits - activez et désactivez en option les données dont vous n'avez pas besoin.
Mapperz
1
tables de fusion d'utilisation facultative (limite de 100 000 lignes ou 100 Mo de données) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/… voir groups.google.com/group/fusion-tables-users-group/browse_thread/…
Mapperz
@mapperz Vous ne pouvez télécharger que 100 Mo de données à la fois, mais vous pouvez ensuite importer d'autres lignes dans la même table jusqu'à 250 Mo de stockage.
geographika
Bien que je vois que vous le saviez déjà .. gis.stackexchange.com/questions/6615/…
geographika
Le service Fusion Tables s'arrête le 3 décembre 2019, donc l'option que je vois est de réduire la taille des fichiers kml avec le logiciel - QGIS desktop. il y a aussi la bibliothèque qgis python. J'ai utilisé QGIS desktop avec l'option Simplify geometry en utilisant 0,0005. Ensuite, j'exporte la couche créée en kml. Vous pouvez également le faire en tant que tâche par lots à partir du même menu. Ensuite, vous pouvez ouvrir toutes les couches créées dans un projet séparé et utiliser la console dans le bureau QGIS pour convertir tous les fichiers .shp en .kml
makkasi

Réponses:

12

Étant donné que vous avez déjà investi dans le développement de Google Maps, je vous suggère fortement de transférer toutes les données dans Google Fusion Tables, qui peuvent ensuite être analysées sur la carte de la même manière que KML avec des performances incroyables (voir l'application WNYC Fusion Tables ). Considérez cela comme une mise à niveau vers KML sans avoir à modifier radicalement le front-end.

Gady
la source
Je pense que c'est une excellente idée si vos données ne sont pas sur un calendrier de mise à jour> 24 heures. C'est ce que Google vient de nous dire (si kml ralentit le navigateur, utilisez des tables de fusion) pour ce faire, je dirais que c'est la meilleure réponse.
Steve
1
Merci d'avoir souligné Fusion Tables - d'une manière ou d'une autre, cela avait totalement échappé à mon attention, très cool. Malheureusement, ce serait un peu maladroit de travailler avec des données qui changent fréquemment; et les limitations globales de stockage (250 Mo par utilisateur) ne nous permettraient pas d'évoluer.
Herb Caudill
2
Notez que le service expérimental Fusion Tables ferme ses portes le 3 décembre 2019.
Jonas
12

Vous pouvez décomposer votre KML en plusieurs KML avec un KML parent référençant les plus petits kmls. Au moins, cela réduira la taille de vos fichiers à un niveau respectable et vous permettra de référencer des ensembles de données beaucoup plus volumineux que ceux de KML.

Honnêtement, KML n'est vraiment bon que pour les petits ensembles de données avec peu de fonctionnalités et d'attributs associés. Je ne m'approcherais pas comme source de données de fichiers. Si vous regardez ces fichiers devenir plus gros, je regarderais un autre type de données, ou je descendrais certainement la route GeoServer / MapServer pour les jeux de données distribués.

OptimizePrime
la source
2
Mais Network KML (avec Superoverlays sont conçus pour de grands ensembles de données) mais nécessite un serveur Web et un logiciel de rendu Geoserver fait un bon travail avec ce type de KMZ - fonctionne mieux avec Google Earth car l'API Google Maps a restreint l'utilisation de KML.
Mapperz
Je n'ai jamais eu beaucoup de chance avec les super-superpositions, sauf avec Google Earth Enterprise Client. Bien que je n'aie pas passé beaucoup de temps là-dessus. Certainement une option à explorer, +1 @Mapperz
OptimizePrime
1
Utilisez GeoServer avec Oracle et fonctionne très bien avec le rendu KMZ (superposition) - des données en direct (constamment mises à jour) très utiles aux utilisateurs - ont dû modifier le géoserveur pour accélérer la mise à jour.
Mapperz
8

Si vous n'avez pas investi trop de temps dans votre API Google Maps, vous pouvez passer à OpenLayers qui a un analyseur KML côté client qui peut lire vos propres fichiers KML - voir l'exemple ci-dessous:

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

Cependant, pour un fichier de 15 Mo, cela bloquerait probablement le navigateur. Il est probablement également assez lent sur les serveurs Google lorsque vous approchez de la taille limite des fichiers.

Le niveau de détail de 15 Mo est-il vraiment nécessaire ou pourriez-vous simplifier le KML sans perdre trop d'informations?

Avez-vous besoin d'accéder au vecteur / à la géométrie côté client? Ces données pourraient-elles être servies d'images?

Si aucun de ces éléments n'est possible, vous devrez examiner un type de logiciel de service de carte. Avec GeoServer d'ArcGIS Server, vous pouvez envisager MapServer pour servir le KML ou en tant que WFS. L'avantage d'utiliser un serveur de carte est que les demandes ne renverront que les données dans la carte, ce qui réduit le trafic réseau et les temps de chargement.

geographika
la source
Après avoir essayé les tables Google Fusion, l'approche de Guddie est de loin la plus facile à mettre en œuvre. Vous ne pouvez télécharger que 100 Mo de KML à la fois, mais chaque utilisateur dispose d'une option de stockage de 250 Mo (au moment de la rédaction).
geographika
2

Si vous utilisez la version 3, vous pouvez supprimer toutes les informations d'attribut à l'exception d'un identifiant unique et demander ces informations via des appels ajax à un service Web chaque fois qu'un utilisateur clique sur une fonctionnalité. Si vous avez plus de 10 Mo de points, c'est probablement une bonne idée de faire une sorte de clustering au lieu d'afficher tous ces points à la fois. Vous pouvez également séparer vos superpositions au sol dans des fichiers KML distincts.

Peter Smith
la source
2

MapLarge a une solution intéressante - ils peuvent répliquer vos données sur leurs serveurs et ensuite faire le gros du travail pour générer des tuiles à la volée en utilisant leur logiciel propriétaire. Ils proposent des API Javascript qui peuvent ensuite les superposer sur les cartes de base de Google Maps, OpenLayers, etc.

Découvrez certains de leurs exemples - la vitesse est impressionnante:

Ce n'est pas gratuit, mais cela pourrait être une bonne option pour quelqu'un qui ne voulait pas les ennuis et les dépenses liés à la création d'un serveur séparé pour générer ces couches.

Herbe Caudill
la source