Connessione al database PostGIS da ArcMap per visualizzazione e query senza ArcSDE?


37

Come posso collegarmi a un database PostGIS da ArcMap usando ArcGIS Desktop 9.3 e versioni successive?

Vorrei poter eseguire query abilitate spazialmente e ricevere i risultati (ad es. Join spaziali e non spaziali, filtri, ecc.) Piuttosto che scaricare semplicemente il contenuto di una tabella.

Non voglio usare le estensioni spaziali ArcSDE, voglio usare le estensioni spaziali PostGIS in ArcGIS Desktop.

Risposte:


29

Se si utilizza ArcGIS 10.0 o versione successiva, è possibile connettersi direttamente ai dati PostGIS utilizzando un livello di query, sono disponibili ulteriori informazioni al riguardo nella guida di ciascuna versione:

Per utilizzare il tipo di geometria PostGIS, l'amministratore del database deve installare PostGIS sul cluster di database PostgreSQL. PostGIS è un'installazione open source di terze parti. Una volta installato, l'amministratore del database può utilizzare il database dei modelli PostGIS per creare un database contenente il tipo di geometria PostGIS o configurare un database esistente per utilizzare il tipo di geometria PostGIS.

  • 10.0 (questa pagina potrebbe non essere visualizzata correttamente in Chrome, quindi ho usato IE per leggere)

22

ArcGIS 10.1 e ArcGIS 10.2 supportano entrambi nativamente i tipi di dati PostGreSQL e PostGIS. Nella guida di entrambe le versioni è inclusa una procedura dettagliata per iniziare l'installazione e configurare le tabelle per utilizzare i tipi di geometria PostGIS.


5
Data l'elevata visibilità di questo QI incoraggio a compilare questa risposta, quindi è molto più di un "vedi questo link". Oltre ai file della guida collegati, ci sono anche Modifica dei dati PostGIS in ArcGIS Desktop? e usando ArcGIS e QGIS insieme in un ambiente di editing multiutente?
matt wilkie,

ArcGIS ora ha il supporto nativo ora (10.1+) e i requisiti possono essere visti qui: desktop.arcgis.com/en/desktop/latest/get-started/… . Le note sulla patch 10.3 mostrano correzioni di bug rilevanti da 10.2 gisupdates.esri.com/ArcGIS/ArcGIS103pr_releasenotes.pdf
James Milner,

18

Dai un'occhiata a questo post sul mio blog: http://www.paolocorti.net/2008/06/06/spatial-database-for-postgres-and-arcgis-users-how-to-choose/

Fondamentalmente hai 2 opzioni:

  1. usa PostGis con ArcSde (quindi hai bisogno di una licenza ArcSde e ArcEditor se devi modificare i dati)
  2. usa zigGIS: http://www.obtusesoft.com/ (nota che non è stato testato su ArcGis 10.0). Avrai solo bisogno di un box ArcView per connetterti ad esso, anche per scrivere dati.

Nota che se hai bisogno del supporto Geodatabase (domini, topologia ecc ...) o supporto ArcCatalog, la prima soluzione (con ArcSde) è l'unica strada da percorrere in questo momento.

Per quanto ho sentito (non l'ho testato direttamente) su ArcGis Desktop 10 è possibile effettuare una connessione diretta in sola lettura a PostGis senza il gateway ArcSde.

zigGIS non è più attivo e il sito Web non è in linea


4
-1, non perché fosse una cattiva risposta, ma perché il passare del tempo e le conseguenti modifiche lo hanno reso tale (zig interrotto, ora supporto arcgis nativo per la geometria della posta) e questa risposta non dovrebbe più essere in cima.
matt wilkie,

9

Ho alcuni post su come farlo con 9.3. Il primo è qui e puoi arrivare a tutti gli altri da lì: http://geobabble.wordpress.com/2008/05/28/using-arcsde-93-with-postgresql-part-1/

L'ho fatto una volta con 10.0 e non ho avuto problemi. Dirò che, usando PostgreSQL e PostGIS con ArcSDE, consiglio vivamente di attenersi a qualsiasi versione supportata da Esri.


Ho seguito il blog di Bills e la documentazione di esri per far funzionare Postgresql e PostGIS con ArcSDE. Sono d'accordo che è necessario utilizzare la versione supportata da esri, anche se a volte può essere difficile da trovare, ad esempio Postgresql 8.4.1 è stato difficile da individuare.
Ando,

5

Il più semplice sarebbe zigGIS da Obtuse Software . Attualmente devi pagare, ma la parola per strada è che la versione 3 sarà open source .


Secondo Google Code Archive suziggis :

zigGIS v1.2 non è più supportato sebbene rimarrà disponibile qui per il download. zigGIS v2.0 è ora un prodotto commerciale e include importanti miglioramenti della stabilità, aumenti delle prestazioni e funzionalità di modifica complete. Per maggiori dettagli, consultare il sito Web di Obtuse Software .

e il collegamento al sito Web di Obtuse Software sembra interrotto.


La versione 3 sarà open source. L'unico problema con esso in questo momento è che non gestisce tramite ArcCatalog, il che significa che è necessario utilizzare PgAdmin o SQL per amministrare il proprio DB. A parte questo, sei bravo
TheSteve0,

Per aggiungere ai commenti di SteveO, ecco la Road Map di ZigGISv3 : abegillespie.blogspot.com/2010/06/on-to-30.html Il modello del provider sarà un enorme miglioramento.
Jay Cummins,

La versione gratuita 1.0 è ancora disponibile?
fmark

Sì, la versione gratuita è disponibile qui: code.google.com/p/ziggis Ma è oooooold, non lo supportiamo più e non è possibile eseguire l'editing (che è stata la principale funzionalità introdotta nella versione 2.0).
xanadont,

Di recente ho visto questo post passare attraverso un'altra fonte di elenco che affermava che "zigGIS ha ufficialmente raggiunto la fine del suo ciclo di vita poiché la prossima versione di ArcGIS dovrebbe supportare l'interoperabilità diretta in lettura / scrittura con PostGIS (rendendo così il moot di zigGIS)". groups.google.com/group/ziggis/browse_thread/thread/…
RyanDalton

4

ArcGIS 10.1 SP1 può connettersi in modo nativo ai database PostGIS 2.0.0, ma la connessione è di sola lettura e funziona principalmente come front-end più pulito per i livelli di query (in effetti, carica tutti i livelli come livelli di query). La connessione al database consente solo di visualizzare tutte le tabelle e i livelli nel database nel catalogo.

postgis1 postgis2 postgis3

In alternativa, esiste anche arcgis-ogr , che consente connessioni a tutti i tipi di vettore OGR come plug-in ArcGIS. ArcGIS-OGR. Al momento è anche di sola lettura.


3

Prima di tutto: sarai in grado di utilizzare ArcGIS con PostgreSQL solo utilizzando connessioni OLE DB, il che significa che sarai in grado di leggere solo tabelle e colonne comuni (sarai anche in grado di leggere le colonne spaziali, ma ArcGIS non può fare nulla per loro,

Per utilizzare ArcGIS e PostgreSQL + PostGIS (ciò significa che è necessario visualizzare i dati spaziali), è necessario ArcSDE o ZigGIS .

Con entrambe le opzioni è possibile interrogare, modificare e analizzare i dati memorizzati in PostGIS, all'interno di ArcMap o altri strumenti ESRI.

ArcSDE è un middleware fornito da ESRI, che modifica l'intero flusso di lavoro (di installazione, configurazione di un geodatabse, ecc.) Di lavoro e ZigGIS è uno strumento desktop (intendo, utilizzato solo quando sono coinvolti gli strumenti desktop ESRI).


1
Di recente ho visto questo post passare attraverso un'altra fonte di elenco che affermava che "zigGIS ha ufficialmente raggiunto la fine del suo ciclo di vita poiché la prossima versione di ArcGIS dovrebbe supportare l'interoperabilità diretta in lettura / scrittura con PostGIS (rendendo così il moot di zigGIS)". groups.google.com/group/ziggis/browse_thread/thread/…
RyanDalton

3

Se si dispone del livello desktop ArcEditor o ArcInfo, è possibile utilizzare SQL Server Express. Anche se solo un utente può modificare alla volta, il blocco e lo sblocco potrebbero essere migliori: potresti provarlo prima. C'è molta documentazione su come farlo, e non devi essere un dba, anche se mi piacciono i postgres. Senza offesa gente QGIS;)

Inoltre, assicurati che l'addetto alle vendite Esri ti dia un preventivo per "ArcGIS Server Workgroup", non Enterprise. Vedi sotto - puoi avere 10 connessioni di editing simultanee. Dovrebbe essere più simile a $ 3-5k. Prezzi http://www.esri.com/software/arcgis/arcgisserver/pricing

Vedi anche questo post per una buona spiegazione delle licenze e dei collegamenti sulla licenza desktop ArcSDE SDE e SQL Server Express

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/What_are_database_servers_in_ArcGIS/003n0000004r000000/

"Si creano geodatabase e si eseguono altre attività amministrative per i server di database tramite il nodo Server di database nella finestra del catalogo o ArcCatalog. L'esecuzione dell'amministrazione del server di database e dei suoi geodatabase tramite ArcGIS Desktop significa che non è richiesta alcuna ulteriore esperienza di amministrazione del software o del database per creare e utilizzare questi tipi di database geografici ArcSDE.

Le connessioni ai geodatabase su un server di database sono sempre connessioni dirette; usano i file della libreria ArcSDE nel client per stabilire la connessione. In questo caso, le applicazioni client sono ArcGIS Desktop a livello di licenza ArcEditor o ArcInfo, ArcGIS Engine e ArcGIS Server Workgroup.

I supporti per questi prodotti includono file di installazione per SQL Server Express. Dopo aver creato l'istanza di SQL Server Express ed eseguito la procedura guidata per abilitare l'istanza a memorizzare i geodatabase, le librerie all'interno dell'applicazione client consentono di connettersi e lavorare con i server di database e creare e lavorare con i geodatabase sul server di database.

Con ArcGIS Desktop (ArcEditor e ArcInfo) e ArcGIS Engine, è possibile configurare un server di database e creare geodatabase ArcSDE a cui possono accedere alcuni utenti e modificarli da un utente alla volta .

Con ArcGIS Server Workgroup che utilizza ArcGIS Desktop, è possibile configurare un server di database e creare geodatabase ArcSDE a cui possono accedere fino a 10 utenti alla volta, che possono essere modificati contemporaneamente . Quando si utilizzano i server di database concessi in licenza tramite ArcGIS Server Workgroup, è anche possibile connettersi ai geodatabase utilizzando le applicazioni Web, per le quali non esiste alcun limite di connessione. "


2
Ho avuto successo utilizzando i geodatabase ArcSDE SQL Server Express con più utenti / editor, ma sono passati alcuni anni da quando l'abbiamo configurato. Il GDB viene creato sulla stazione di lavoro di un utente, gli altri utenti dell'ufficio si collegano alla sua istanza e ogni utente esegue le modifiche nella propria versione, che sono state quindi pubblicate nella versione predefinita quando desiderato. Tutto questo è stato installato dal supporto di installazione desktop, nessun ArcGIS Server coinvolto, sono abbastanza sicuro che non ci fossero implicazioni di licenza oltre ogni utente con la sua licenza desktop ArcEditor / ArcInfo.
MC5

3

Ho scritto un plugin che consente ad ArcGIS di accedere a oltre 50 formati vettoriali (incluso PostGIS). È ancora sperimentale, ma puoi provarlo e dirmi come va.

Ci sono vantaggi nell'utilizzare questo approccio rispetto alla funzionalità integrata in ArcGIS (guarda le FAQ), ma ancora una volta è ancora sperimentale.

Scarica e istruzioni qui


ciao, è ancora di sola lettura?
Matt,

1
a livello di programmazione è possibile effettivamente scrivere tramite la funzionalità ExecuteSQL. Non ho creato un'interfaccia che consenta di farlo tramite ArcMap. Quindi puoi scrivere attraverso il codice, ma non ancora attraverso la GUI.
Ragi Yaser Burhum,

3

Ho monitorato questo post e la rete per trovare una soluzione a questo perché desideravo uno strumento simile. Oggi ho incontrato la mia (nostra) soluzione tramite feed RSS sul blog di James Fee . E credo che la soluzione che cerchi sia PgMap di ST-Links .

Ho provato la versione ArcGIS 9.3 ed è impressionante. Sto ancora lottando con le modifiche, dato che sono ancora un principiante di PostGIS (cosa della colonna identità). Inoltre viene fornito con un elegante ESRI per il caricatore PostGIS e soprattutto è GRATUITO! [Testato con OpenGeoSuite Community Edition 2.4.1]


Ho sentito che st-link è gratuito solo per un anno. Dopo di che è necessario disporre di una licenza. Non è vero?
OPENGISTECH

3

Vai su Start -> Pannello di controllo -> Prestazioni e manutenzione -> Strumenti di amministrazione -> Origini dati.

Vai alla scheda DSN di sistema.

Clicca Aggiungi.

Scorri verso il basso nell'elenco. Dovresti essere in grado di vedere i tuoi driver ODBC PostgreSQL lì se li hai installati. Fare clic sul primo driver ODBC PostgreSQL nell'elenco.

Inserisci i dettagli della tua connessione nel modulo. Se la connessione è sulla stessa macchina del database PostgreSQL, scrivere localhost nel campo del server; in caso contrario, il nome del computer sulla rete. Dovrai apportare alcune modifiche al file pg_hba.conf per connetterti al tuo database sulla rete. Leggilo nei manuali PostgreSQL nella sezione Autenticazione utente. Al termine, fai clic su Fine.

Aggiungi tutti i driver ODBC PostgreSQL che trovi nell'elenco in modo simile.

Clicca OK. È ora possibile connettersi al database PostgreSQL tramite i driver ODBC. I driver dovevano solo essere indirizzati al database con informazioni sulla connessione.


3

A partire dall'era del 2011, prova ST-Links SpatialKit . Il software è freeware e funziona con ArcGIS 9.3 / 10.0 / 10.1 / 10.2.

Il download ha un bel PDF per documentare le funzionalità, tra cui visualizzazione, modifica, ecc.


Mike, guardando @ la documentazione di ST-Links sembra che possa avere un potenziale fantastico. L'hai usato personalmente? Hai delle impressioni sulla sua velocità e usabilità che puoi condividere con la community?
Ryan Dalton,

In realtà, sto ancora cercando di capire il processo di installazione .. Ho ArcGIS 9.3 installato con una configurazione personalizzata, ma non vedo ancora pgMap 1.0 nelle estensioni .. spero che qualcun altro possa condividere la loro esperienza
Mike T

1
Per favore, perdona il link al mio blog, ma ho dato un'occhiata a PgMap dopo l'annuncio che zigGIS si stava chiudendo. Le mie osservazioni sono qui: blog.geomusings.com/2011/08/09/taking-a-look-at-pgmap Dato che sembra che ArcMap non sarà in grado di modificare direttamente i database spaziali a 10.1, PgMap sembra ancora più avvincente .
Bill Dollins,

2

L'ho già fatto senza troppi problemi con ArcGIS 10.1 e 10.2, sfortunatamente non funziona con 9.3 e Postgres 9.2, penso dalla memoria.

Ho usato i driver di esri. Accedere al sito dell'assistenza clienti ESRI anche se penso che questo sia cambiato da quando ho scritto le istruzioni.

  1. Seleziona la tua versione
  2. "Download di software"
  3. "File di supporto DMBS"
  4. Scorri verso il basso fino a visualizzare "Librerie client PostgreSQLQL (Windows)", con dimensioni di 2,21 MB.

  5. Fai clic su Download

    Per PostgreSQL / PostGIS nel file scaricato dovrebbe essere presente il set di librerie client "pg_client_windows86" contenente la versione necessaria a 32 bit di libeay32.dll, libiconv-2.dll, libintl-8.dll, libpq.dll e ssleay32.dll. Copia questi nella directory bin di ArcGIS. Sul mio computer con 10.1 era: C: Programmi (x86) ArcGISDesktop10.1bin Se stai usando finestre a 32 bit sarebbe qualcosa del tipo: C: ProgrammiArcGISDesktop10.1bin

Una volta fatto ciò, dovresti essere in grado di connetterti e aggiungere dati dal tuo database. Per utilizzare un livello di query di dati, devi prima connetterti al tuo database. In ArcGIS 10.1 dovrai accedere a File> Aggiungi dati> Aggiungi livello query

L'unica cosa da tenere in considerazione è che i dati restituiti devono avere un campo univoco che può essere utilizzato come chiave primaria da ArcGIS. A volte potrebbe essere necessario specificarlo se si utilizza più di una semplice query di base e ArcGIS non è in grado di stabilire quale campo utilizzare. Puoi farlo tramite:

  1. Per prima cosa convalidare la query SQL facendo clic sul pulsante Convalida (ArcGIS deve generare un elenco di campi che si trovano nell'istruzione select per popolare la finestra di dialogo delle opzioni avanzate).
  2. Dopo aver convalidato l'SQL, fare clic su Mostra opzioni avanzate, il pulsante Fine cambierà da Fine a Avanti>
  3. Fare clic su Avanti> e quindi è possibile accedere alla finestra di dialogo delle opzioni avanzate.
  4. Nella finestra di dialogo delle opzioni avanzate viene visualizzato un elenco di tutti i campi per la tabella. Seleziona un campo che fungerà da campo identificativo univoco: il valore predefinito è avere tutti i campi selezionati.
  5. Puoi anche impostare il sistema di riferimento spaziale dei tuoi dati se è appropriato farlo.
  6. Fai clic su Fine e il tuo livello verrà aggiunto alla tua mappa.

Puoi anche eseguire le query spaziali sul database di postgres con relativa facilità, anche se devi produrre un campo ID al volo. es. Ecco un esempio di come eseguire un buffer di 100 km.

SELECT row_number() over(order by cities.the_geom)::integer as oid,
ST_BUFFER(cities.the_geom, 100000) AS the_geom,
cities.name
FROM mygis.public.cities As cities

Non solo puoi anche salvare qualsiasi livello di query come file di livello e passarlo anche attraverso alcuni degli strumenti ArcGIS standard. Non l'ho provato troppo. Quindi aggiungendo colonne e cose del genere ho potuto vedere che causava il caos. Penso che potresti fare chiamate SQL spaziali con altri database come SQLServer e Oracle e con un po 'di armeggi per creare il campo ID al volo.

Ho fatto un tutorial completo qualche tempo fa su: http://www.gisuser.org.nz/resources/tips-and-tricks/look-mum-dad-no-hands


2

Efficace con ArcGIS 10.4, puoi leggere e scrivere sulla geometria PostGIS nei database PostgreSQL supportati senza bisogno di estensioni aggiuntive. Ho usato solo una licenza avanzata per questo, ma credo che una licenza standard possa anche connettersi a un database di server PG non geodatabase e utilizzare tale area di lavoro come destinazione per gli strumenti di creazione vettoriale. È più ingombrante, ma puoi anche usare i client con licenza Basic per scrivere su tabelle usando SQL con Python (via arcpy.ArcSDESQLExecute). I livelli di query di sola lettura sono stati un'opzione con tutti i livelli di licenza da ArcGIS 10.0.


Vince, qual è il processo per impostare una connessione al database PostGIS non SDE scrivibile in ArcGIS 10.4+? Il tentativo di aggiungere una connessione al database tramite ArcCatalog Advanced 10.5 genera un errore "connessioni ai database di sistema non consentite".
Rudy Stricklan,

1
Non esiste alcun processo, oltre a creare il database, amministrarlo per contenere i dati e connettersi ad esso. Se vuoi provare questo, e fallisce, puoi fare una nuova domanda qui (fornendo tutti i dettagli). Se stai cercando di lavorare nel database master come utente postgres, devi prima ottenere un libro su RDBMS.
Vince il

Grazie Vince. Sì, il messaggio di errore è un po 'confuso, poiché sto cercando di connettermi a una tabella spaziale in un database PostGIS vaniglia ("gis"), non nel database principale. Il tuo consiglio è giusto, però ... Documenterò il problema e invierò una nuova domanda.
Rudy Stricklan,


1

GISquirrel fa il lavoro ad una frazione del costo di SDE. Supporta la connessione arcgis a MSSQL e PostGIS. Molto semplice da installare (in grado di importare in postgres da shapefile / featureclass) e semplice da mantenere. Per un piccolo numero di utenti che necessitano di funzionalità di modifica multiutente, va bene.

Utilizziamo GISquirrel / Arcgis per i nostri "utenti esperti" GIS e QGIS può connettersi allo stesso server PostGIS per i nostri "utenti di base", risparmiando sui costi di licenza.


I tuoi "utenti esperti" possono modificare nell'ambiente ArcGIS o è ancora di sola lettura?
user17963

sì GISquirrel consente la modifica completa in ArcGIS.
Matt

Interessante! Che dire dei controlli di topologia?
user17963

Funziona creando un geodatabase temporaneo per le funzionalità selezionate dall'utente e blocca quelle funzionalità per la modifica dell'utente, utilizzando ArcGIS è quindi possibile modificare la funzionalità nel geodatabase, una volta salvate le modifiche, le funzionalità vengono aggiornate in PostGIS. È anche possibile modificare contemporaneamente tutte le funzionalità di un livello.
Matt

1
Grazie Matt, ho intenzione di provare usando GISquirrel e vedere se funziona con i nostri dati!
user17963,

1

GISquirrel fa molto bene il lavoro per MSSQLserver e sono abbastanza sicuro che funzionerà bene per Postgres. Lavoro in un ambiente misto ESRI / Qgis e utilizzo lo scoiattolo GIS anche per importare file di forma ecc. Nel database. In SQLserver GISsquirrel tiene traccia delle colonne della geometria, utilizzo queste informazioni per aggiornare la tabella geometry_columns utilizzata da Qgis. Molto maneggevole ...


1

PgMap è stato sostituito da st-links spatialKit e non solo supporta PostGIS, ma supporta anche SQL Server 2008. Funziona con ArcMap 9.3 e ArcMap 10. Soddisfa solo le vostre esigenze. Dai un'occhiata a www.st-links.com


0

Credo che tu abbia diverse opzioni al di fuori dell'uso di SDE (sebbene sottolineerò che puoi usare PG_Geometry in SDE, quindi accedere ai dati tramite il software ESRI o il software OS compatibile PostGIS). Hai l'estensione ESRI per l'interoperabilità dei dati, ZigGIS, e potresti probabilmente installare una copia di geoserver o mapserver e collegarti tramite un servizio WMS in ArcGIS. Simile al precedente post su zigGIS e alla necessità di gestire le query tramite pgAdmin, dovresti usarlo per creare le tue query con geoserver / mapserver. Idealmente, se riutilizzassi le stesse query, potresti salvarle come visualizzazioni in postgresql e accedere ai dati in quel modo.


0

ST-Links SpatialKit è un'estensione ArcMap per la connessione diretta a database spaziali senza ArcSDE, No ArcInfo, No ArcGIS Server.

Secondo la loro Licenza , costa $ 188 CAD, ma dichiarano "Continueremo a rilasciare licenze gratuite per quegli utenti che non possono permettersi il costo della licenza. Le licenze gratuite hanno limiti di tempo. Se richiedi una licenza gratuita, specifica il motivo in l'email di richiesta della licenza ".


0

Un modo semplice per aggiungere dati PostGIS ad ArcMap consiste nell'aggiungere una "Connessione di interoperabilità". Per fare ciò, è necessaria l'estensione dei dati di interoperabilità.

È consigliabile aggiungere un "Indice numerico" e una "Chiave primaria" alla tabella del database PostGIS prima di creare la connessione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.