Skip to Content

Utiliser ArcGIS avec PostGIS sans SDE ni ArcGIS Server

Niveau Débutant
Logiciels utilisés ArcGIS Basic 10.2
Plateforme Windows

-- MAJ 11/2014 : actualisation des captures avec la nouvelle version de l'espace MyESRI ---

Une fois n'est pas coutume, je vais vous parler un peu d'ArcGIS.

Lorsque j'appelle le support, il y a parfois un blanc lorsque j'indique travailler avec des couches PostGIS sans ArcSDE, ni d'ArcGIS Server mais c'est réellement possible !

Depuis la 10.0, vous pouvez charger des couches géographiques directement depuis PostGIS en natif (pour la branche 9.x, on pouvait passer par le plugin payant ZigGIS). Cette possibilité n'est hélas pas évidente au chargement du logiciel (avec les barres d'outils par défaut). Nous verrons en détails comment charger des couches PostGIS mais aussi les tables attributaires PostGreSQL.

Pré-requis : 

ArcGIS 10.x Basic ou supérieur (les captures viennent d'une 10.2)
Un serveur PostGreSQL 9.1 / 9.2

-- MAJ 11/2014 : la version 9.3 est  prise en charge ---

PostGIS 2.0 (non testé avec la 2.1)

Installation du pilote : 

L'installation par défaut ne prend pas en charge les connexions PostGres/PostGIS, il faut installer des DLL supplémentaires.

Rendez-vous sur votre espace client et cliquez sur le lien 'link' dans la partie droite Comment télécharger les logiciels ESRI

Choissisez la version qui va bien et cliquez sur Afficher les téléchargements

Cliquez sur Autres produits

Rendez-vous sur PostgreSQL Client Libraries. Pour ma part, j'ai sélectionné PostgreSQL 9.1.14 Client Libraries (Windows).

Petite subtilité, mon serveur est sous Linux mais il s'agit du pilote pour ArcGIS, il faut prendre la version Windows.
Ne pas tenir compte du menu PostgreSQL DBMS qui correspond au programme d'installation d'un serveur PostGreSQL (des versions spécifiquement compatibles avec ArcGIS)

Décompressez les fichiers (soit en double cliquant sur l'exe ou en décompressant avec 7zip)

Copiez les DLL dans C:\Program Files (x86)\ArcGIS\Desktop10.2\bin pour Windows 64bits ou C:\Program Files\ArcGIS\Desktop10.2\bin pour Windows 32bits.

Chargement de données spatiales (méthode 1)

Allez dans une barre d'outils et rendez-vous dans Personnaliser

Chercher couche ou requêtes. Le bouton se nomme Ajouter une une couche de requête. Faites le glisser dans votre barre d'outils.

Cliquez dessus et créer une nouvelle connexion, voici un exemple avec une base de données nommé pigs et son utilisateur postgres

Ensuite, vous devriez voir afficher la liste de vos couches.

Remarque pour ESRI : si on pouvait agrandir la fenêtre et même rechercher une couche par son nom, ça serait bien pratique ... En attendant, le support m'avait proposé de faire autant de connexions que de schéma pour filter un peu les informations... A vous de voir.

Par cette fenêtre de chargement, vous avez du reconnaitre du SQL, vous pouvez donc la modifier et filtrer vos données avant d'afficher la couche dans la fenêtre carte.

Remarque très intéressante de Jacques Blenner 
L'utilisation des couches de requêtes a un grand intérêt : ce n'est pas arcgis qui interprète la requête (comme les ensembles de définition par exemple), nous ne sommes donc pas limité à un sql à la sauce arcgis. La requête est directement envoyé à postgres/postgis ce qui permet d'utiliser des requêtes complexes sans obligatoirement passer par une vue.

Bien penser à indiquer un nom, cliquez sur Valider et aller sur Afficher les paramètres avancés. Cette manipulation est optionnelle mais parfois ArcGIS ne reconnait pas la clé primaire (cf capture) et coche tout et cela abouti bien souvent à un plantage du logiciel ou à une couche vide.

Vous affichez à présent vos couches PostGIS. Celles ci se comportent comme n'importe quelle autre source de données. Vous pouvez utiliser les modules de géotraitements (avec une sortie en shapefile ou dans une géodatabase personnelle ou fichiers) y compris les fonctions par lot.

Chargement de données spatiales ou attributaires (méthode2)

Vous pouvez alors passer par le menu Catalogue Connexions aux bases de données qui sera plus lisible. Un simple glisser/déposer suffit, mais pour une raison que je ne m'explique pas, j'ai parfois un message d'erreur lors du chargement d'une couche alors que cela fonctionne avec la méthode 1 ci-dessus. Lorsqu'il n'est pas capable de détecter la clé, ArcMap ouvrira la boite de dialogue vous permettant de définir l'ID unique. En revanche, vous n'aurez pas la vue SQL très utile pour filtrer les données en amont.

Avec cette méthode, vous pouvez très simplement charger les tables attributaires PostGreSQL (icone sans la bulle blanche) de la même manière : tout se comporte comme une table attributaire de type dbf, excel ou access.

Selon la présentation effectuée à Versailles la semaine dernière, il semblerait qu'il soit possible d'éditer une couche PostGIS (jusqu'à présent, c'était uniquement en lecture seule) mais je n'ai pas été en mesure d'y parvenir, peut être faut il un niveau de licence plus élevé qu'ArcGIS Basic ...

Site officiel : ESRI France

Commentaires

LECTURE ET ECRITURE ?

Bonjour,
Est-ce que cette architecture sans SDE ni ArcGIS Server, permet dans ArcGis non seulement de lire la donnée mais aussi d'écrire et de faire du géotraitement ?
Aussi je me pose la question si du coup le paramètre ST_Geometry est toujours d'actualité ou s'il est du coup supplanté par le paramètre PG_GEOMETRY propre à PostGIS ?

Lecture seule

Bonjour,

C'est uniquement pour de la lecture et mise en forme de données absolument pas pour de l'écriture où il faut ArcGIS Server / ArcSDE

versions postgresql gérées

Bonjour,
petit complément sur les versions de postgresql qui semblent être gérées:
- 9.0.5
- 9.1.3
- 9.2.2
(http://resources.arcgis.com/fr/help/system-requirements/10.2/index.html#...)

en espérant que cela fasse avancer cette discussion fort intéressante!!!
renaud

Dll pour la connection

Bonjour,

N'ayant pas de compte sur ESRI, afin de faire des tests, j'aimerais savoir si on peut avoir ces fichiers DLL ailleurs que avec MyESRI!

Merci

ca bouge encore avec la

Complète l'article de GL: Toujours besoin d'un AGS, mais un process un peu simplifié

http://www.forumsig.org/showthread.php/37137-Informations-sur-ArcGis-10-...

Petite précision

J'utilise Win7-64bit et pour que la connexion fonctionne avec mon Arcgis for Desktop 9.1, j'ai bien du copier les libs client postgresql 32bit, et non 64bit. Ce n'était pas clair pour moi au départ, donc je laisse une trace ;)

Versions de PostGreSQL et PostGis supportées ?

Bonjour,
Juste pour info, est-ce qu'il est prévu que cela fonctionne toujours avec les versions PostGreSQL 9.3 et PostGis 2.1 ? (toujours avec une version d'ArcGis 10) ?

Merci

Bonjour, je prends le train

Bonjour,

je prends le train en route mais ma nouvelle structure dispose d'une licence ArcGis Basic.

Je parviens grâce à votre article à me connecter à mes bases Postgis mais si je comprends bien la version 10.2 d'Arcigs for Desktop ne permet pas d'éditer ces bases Postgis ?

Edition que je pouvais faire sous Qgis 2.0 ou sous Géoconcept.
Ca me parait juste impensable !

Pour compléter...

Bonjour,

Bravo pour cet article très complet. Je confirme que depuis la version 10 vous pouvez accéder directement à des tables spatiales PostGIS (mais aussi Oracle Spatial ou SQL Server) sans aucun schéma de Geodatabase. Ceci se fait par l'intermédiaire d'une Query Layer, ce qui permet de spécifier une requête SQL qui sera exécutée par le SGBD. Donc potentiellement vous pouvez utiliser tous les opérateurs SQL y compris des opérateurs spatiaux. Ce qui est nouveau en 10.2 c'est que l'ajout d'une Query Layer se fait par simple glisser/déposer de la table spatiale de votre catalogue vers la carte. Vous pouvez ensuite modifier les propriétés SQL de cette couche pour la filtrer.

Dans ArcGIS Desktop, l'accès au Query Layer est en lecture seule. Par contre, depuis la version 10.2 vous pouvez publier votre MXD vers ArcGIS Server sous la forme d'un Feature Service ArcGIS. Exposé avec les spécifications ouvertes (Open Web Foundation) nommées Geoservices Rest (http://www.esri.com/industries/landing-pages/geoservices/geoservices), ce service pourra offrir des fonctionnalités de type INSERT, ADD, DELETE, UPDATE pour vos applications web.

Et voilà ...

Merci pour ton commentaire, je suis enfin fixé ... On en revient toujours à ArcGIS Server, il est dommage de voir que le client Desktop n'évolue quasiment plus en dehors des features couplés avec ArcGIS Server

Query Layer / couche de requete editable ?

"Selon la présentation effectuée à Versailles la semaine dernière, il semblerait qu'il soit possible d'éditer une couche PostGIS (jusqu'à présent, c'était uniquement en lecture seule) mais je n'ai pas été en mesure d'y parvenir, peut être faut il un niveau de licence plus élevé qu'ArcGIS Basic ..."

 

Il faut surtout un ArcGIS Server... Donc $ !!!

Point 9 de http://www.arcorama.fr/2013/10/sig-2013-retour-sur-le-top-10-des.html,

"Depuis la version 10, ArcGIS accède directement à des tables spatiale, c'est à dire des tables de base données disposant d'une colonne spatiale (par exemple: PostGIS, Oracle Spatial, SQL Server,…), et cela sans adhérence avec ArcGIS, c'est à dire sans schéma de Géodatabase (sans ArcSDE). En version 10.2, vous pouvez désormais publier ces tables spatiales sur le web, non seulement pour de la consultation mais aussi en mise à jour via des services d'entités ArcGIS (Feature Services). 

Par exemple, si vous disposez de tables spatiales PostGIS 2.0 stockées dans PostgreSQL 9.2, vous pouvez directement les publier avec ArcGIS for Server pour permettre à des applications web de consulter et de mettre à jour ces données via l'interface Rest des Feature Services ArcGIS."

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.