"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













 

vendredi 4 juin 2010

Plugin PgAdmin III : PostGISViewer suite

Plugin PgAdmin III : PostGISViewer  suite

Nouvelle version


Multi-géométrie

J'ai mis en place la prise en compte des multi-géométries  :
  • MULTIPOLYGON
  • MULTILINESTRING
  • MULTIPOINT

Requêtes
  
J'ai rajouté la possibilité d'exécuter les requêtes présente dans l'éditeur SQL de PgAdmin III, mais pour que cela soit possible, il faut respecter certaines règles:
  • Un seul éditeur SQL de PgAdmin III doit être ouvert.
  • Pour que la ou les requête(s) soient exécutées, il ne faut pas être positionné sur un nom de table dans le navigateur d'objets de PgAdmin III , ou alors que la table soit déjà chargée dans le visualiseur.  Une table sélectionnée prendra toujours le pas sur une ou des requêtes.
  • Le premier champ doit être  géométrique ou une géométrie issue d'une fonction de traitement géométrique (ST_Buffer, ST_Intersection....) par requête sera utilisé pour l'affichage. Ce champ ou cette géométrie sera encapsulé par la fonction AsBinary et aura pour alias geom :
    • SELECT AsBinary(wkb_geometry) as geom ....
    • SELECT AsBinary(ST_Buffer(wkb_geometry, 1.0)) as geom...
    • SELECT AsBinary(ST_Intersection(a.wkb_geometry,b.wkb_geoemetry)) as geom... 
    • ....
  •  Le second champ doit permettre de déterminer le type de géométrie, il doit donc être encapsulé par la fonction GeometryType, un alias n'est pas nécessaire :
    • SELECT ..., GeometryType(wkb_geometry)...
    • SELECT ..., GeometryType(ST_Buffer(wkb_geometry,1.0))...
    • SELECT ..., GeometryType(ST_Intersection(a.wkb_geometry,b.wkb_geometry))...
    • ....

  • Chaque requête devra se terminer par un point virgule, ce qui permettra de pouvoir exécuter plusieurs requêtes a la suite.
 Exemple

Ci-dessous deux requêtes se terminant par des points virgules :
  • La première requête va charger la commune qui a pour nom 'Sainte-Croix-de-Quintillargues'
  • La seconde requête va charger tous les bâtiments de cette commune.
 

































Après avoir lancé le plugin PostGISViewer, les deux requêtes sont exécutées et donne le résultat suivant  :





































Les couches créées portent comme nom query avec un identifiant qui s'incrémente pour toute la cession du visualiseur.

Toutes suggestions, remarques pour l'amélioration de cet outil seront les bienvenues.

A suivre...

jeudi 3 juin 2010

Un plug-in pour PgAdmin III : PostGISViewer



Un plug-in pour PgAdmin III : PostGISViewer 

Présentation

Le visualiseur a été développé en VB.Net 2008 avec MapWindow 6.0 téléchargeable à cette adresse :
mapwindow 6.0








MapWindow 6.0 (Orlando) est un projet SIG Open Source ainsi qu'une librairie d'outils géospatial pour le développement en .NET, écrit en C#. Map, Legend, Toolbox ainsi que les autres contrôles sont les composants qui peuvent être utilisés pour créer une application SIG a partir de la librairie MapWindow.dll, et dans mon cas ce visualiseur.


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 visualiseur pour PostGIS est téléchargeable ici :
 PostGISViewer.

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.

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 :

    ;
    ; PgViewer (Windows)
    ;
    [Separator]
    Title=PostGisViewer
    Command="$$PGBINDIR\PostGisViewer\PGViewer.exe"  "host=$$HOSTNAME" "port=$$PORT" "username=$$USERNAME" "password=$$PASSWORD" "database=$$DATABASE" "schema=$$SCHEMA"  "table=$$TABLE"
    Description=PostGIS Viewer
    KeyFile=$$PGBINDIR\PostGisViewer\PGViewer.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 :












Utilisation du visualiseur PostGIS

Passons maintenant à l'utilisation du plugin, pour cela ouvrir PgAdmin III, se connecter à un serveur et choisir une base de données.








A ce stade la, si nous lancions l'exécution du plugin PostGISViewer, les variables contiendraient :

  • $$PGBINDIR       =  C:\Program Files\pgAdmin III\1.10
  • $$HOSTNAME    =  localhost
  • $$PORT                =  5432  
  • $$USERNAME     =  utilisateur connecté
  • $$PASSWORD     =  mot de passe
  • $$DATABASE      =  BDTEST
  • $$SCHEMA          =  $$SCHEMA (aucun schéma de sélectionné)
  • $$TABLE              =  $$TABLE (aucune table sélectionnée)
Sélectionner le schéma public, tables et une table pour la visualiser :



























    Lancer l'exécution du plugin :







     Vous devriez obtenir la visualisation de vos données :













    Si vos données n'apparaissent pas : 
    • Vérifier que la table sélectionnée existe bien dans la table geometry_columns,
    • Vérifier le type de Géométrie qui doit être un de ces types :
      • POINT 
      • LINESTRING
      • POLYGON

     Conclusion 


    Je prépare une prochaine version qui exécutera une requête de l'éditeur SQL de PgAdmin III, afin de pouvoir visualiser le résultat d'une requête spatiale.