gestion dynamique de carte dans Google Earth
-
22-09-2019 - |
Question
Mon but est d'afficher différentes formes (polygones, points, LineString) sur Google Maps en utilisant les données saisies dans une base de données PostGIS dynamiquement (je veux dire par là, nous pouvons voir des modifications dans la carte en temps réel). Je cherchais une façon de faire qui a utilisé la structure spatiale déjà prévu dans postgis (désignant déjà si la forme est une chaîne de lignes ou d'un polygone, etc.) au lieu d'analyser les coordonnées, puis re-entrer dans la structure spatiale dans Google Maps. J'ai vu que google maps api est maintenant compatible avec les formats de données kml. Et puis je lis que je dois convertir des données PostGIS au format kml. Je l'ai fait un peu de lecture dans les forums sur le processus réel de conversion des données PostGIS kml via FWTools, mais ne vois rien qui me aider. Je suis nouveau à kml mais je suis familier avec PostGIS et Perl et PHP. Y at-il un tutoriel pour le processus de conversion des données PostGIS kml? Où puis-je commencer? Merci pour toute aide
La solution
Vous pouvez obtenir une représentation textuelle des données spatiales d'une base de données Postgres en utilisant une fonction de conversion de texte, comme
SELECT AsText(MyGemoetry) from MyTable
vous analyser la chaîne, créez vos objets en utilisant différentes fonctions de l'API - en fonction du type de géométrie PostGIS -. Et ajouter ces objets à l'objet principal de plug-in GE dans un DOM comme chemin
Si vous êtes familier avec JavaScript et avoir une connaissance de base de XML, un bon départ est ici , affichez le fichier « locator.js » liés et regarder à la fonction PaintSubField (Coord) ... ceci est une autre façon, le bit brut mais efficace, en évitant de mess avec trop d'objets parents individuels / enfants et structures
Vous pouvez également consulter exemples d'applications et utiliser la aire de jeux code pour "prototypage rapide"
re « temps réel » vous avez besoin au moins d'un événement que vous pouvez lier votre génération / redessiner routines à.
Bonne chance MikeD
Autres conseils
Vous pouvez utiliser PostGIS pour convertir en KML directement:
SELECT ST_AsKML(geometry) from MyTable;
ST_AsKML est l'un de plusieurs formats de sortie, y compris WKT, GML, GeoJSON, etc.
Pour afficher des données dynamiques dans Google Earth, un modèle commun est d'utiliser KML avec l'élément de NetworkLink. Avoir le viewRefreshMode
du lien égal à onStop
et Google Earth fera des demandes (à une URL servi par PHP, probablement) avec des paramètres du cadre de sélection ci-joints. La boîte de sélection pour interroger la base de données caractéristiques dans PostGIS, et obtenir des résultats en tant que KML. Ceci est très bien si vous avez beaucoup et beaucoup de fonctionnalités, mais voulez seulement récupérer ceux de la région, l'utilisateur regarde.
En fonction de la complexité de votre application, vous pouvez également regarder GeoDjango . (Familiarité avec PostGIS est une grosse tête commence!)