"Sans imagination il ne pourrait y avoir création."
Albert Jacquard.

"L'imagination est plus importante que le savoir."
Albert Einstein.

vendredi 11 juin 2010

Plugin PgAdmin III : PostGIS vers Google Earth

Un plugin PgAdmin III : PostGIS vers Google Earth


 Présentation

Le plugin d'export de PostGIS vers Google Earth a été développé en VB.Net 2008




Installation
La version de PgAdmin III utilisée pour ce tutorial est la 1.10.3, lien ci-dessous pour la télécharger :
PgAdmin3-1.10.3

Le plugin d'export de PostGIS vers Google Earth est téléchargeable ici :
 
PostGIS2GE

et a décompresser dans le répertoire : C:\Program Files\pgAdmin III\1.10 qui correspond au répertoire d'installation de pgAdmin III.

La version de Google Earth utilisé pour ce tutorial est la 5.1.3535.3218, lien ci-dessous pour la télécharger :
Google Earth


Configurer PgAdmin III


PgAdmin III 1.10 donne la possibilité d'ajouter très facilement des applications externes dans le menu plugins.
Pour activer la disponibilité de ces applications:  

  • Ouvrir PgAdmin III, dans le menu Fichier sélectionner Préférences
 











 
  •  Dans l'onglet Général donner le chemin de l'application PgAdmin III (pgadmin3.exe)

  
















  • Sortir de PgAdmin III,
  • Aller dans le répertoire C:\Program Files\pgAdmin III\1.10, faire une copie du fichier plugins.ini,
  • Ouvrir le fichier plugins.ini et copier les lignes suivantes a la fin du fichier :

    ;
    ; PostGIS2GE (Windows)
    ;
    [Separator]
    Title=PostGis2GE
    Command="$$PGBINDIR\PostGIS2GE\PostGIS2GE.exe"  "host=$$HOSTNAME" "port=$$PORT" "username=$$USERNAME" "password=$$PASSWORD" "database=$$DATABASE" "schema=$$SCHEMA"  "table=$$TABLE"
    Description=PostGIS vers Google Earth
    KeyFile=$$PGBINDIR\
    PostGIS2GE\PostGIS2GE.exe
    Platform=windows
    ServerType=postgresql
    Database=Yes
    ;AppliesTo=database
    SetPassword=Yes
    •  Les variables  utilisées, contiendront respectivement :
    • $$PGBINDIR       :  répertoire dans lequel se trouve pgadmin3.exe,
    • $$HOSTNAME    :  adresse du serveur,
    • $$PORT                :  port,   
    • $$USERNAME     :  utilisateur ,
    • $$PASSWORD     :  mot de passe,
    • $$DATABASE      :  base de données,
    • $$SCHEMA          :  schéma courant,
    • $$TABLE              :  table sélectionné.
  • Enregistrer le fichier,
  • Ouvrir PgAdmin III et dans le menu plugins vous devriez voir ceci :







Comment utiliser le plugin


  • Ouvrir PgAdmin III, se connecter a une base de données, sélectionner un schéma, Tables, ouvrir un éditeur SQL, puis saisir une ou plusieurs requêtes séparées par des points virgules (voir   )




































 
  • Puis exécuter le plugin PostGIS2GE qui va créer deux fichiers kml a partir des requêtes, et charger ces fichiers dans google Earth.




























  • query1.kml est le résultat de la requête :


SELECT ST_Askml(ST_Force_2D(wkb_geometry)) as geom,ogc_fid,nom
FROM commune 
WHERE nom='Sainte-Croix-de-Quintillargues';


  • query2.kml est le résultat de la requête :
 

SELECT ST_Askml(ST_Force_2D(a.wkb_geometry)) as geom,a.ogc_fid,a.nature,a.hauteur as extrude
FROM batiment a,commune b
WHERE b.nom='Sainte-Croix-de-Quintillargues'
AND a.wkb_geometry && b.wkb_geometry
AND ST_Contains(b.wkb_geometry,a.wkb_geometry);

  • Sous Google Earth passer en mode relief et changer l'affichage de query1.kml













 



  • Incliner la vue (touche Maj + roulette souris) et..

 




























    ... les bâtiments sont extrudés, revoyons la requête:
    SELECT ST_Askml(ST_Force_2D(a.wkb_geometry)) as geom,a.ogc_fid,a.nature,a.hauteur as extrude
    FROM batiment a,commune b
    WHERE b.nom='Sainte-Croix-de-Quintillargues'
    AND a.wkb_geometry && b.wkb_geometry
    AND ST_Contains(b.wkb_geometry,a.wkb_geometry);
     C'est le champ hauteur qui permet de réaliser cette extrusion, pour que cela soit possible, ce champ doit contenir la hauteur (ici du batiment) et avoir pour alias extrude. Le plugin saura alors qu'il doit rajouter les balises suivantes dans le kml après la balise <Polygon> :

    <extrude>1</extrude><tessellate>1</tessellate><altitudeMode>relativeToGround</altitudeMode>

    et donnera comme valeur Z, la valeur du champ hauteur.


    A suivre....

    1 commentaire:

    1. Hello Jerome,
      I have been searching for a good way to synchronize Microstation V8 2004 edition with Google Earth and I ran across your submissions in the Bentley discussion groups from 2008. However, I have found most of the links to your files no longer work. Is that tool still available? I still use V8 2004 at my work and I would find it a tremendous help to be able to link to a Google Earth view of my project. Thanks!

      RépondreSupprimer