Configurare il database PostGIS e aprirlo in QGIS su Windows?


14

Ho provato a seguire i manuali per l'impostazione di un database PostGIS a cui gli utenti possono accedere con QGIS, ma al momento non riesco a capire abbastanza per progredire?

La mia situazione; Sono un tirocinante responsabile della creazione di un database PostGIS per la digitalizzazione di oggetti verdi (come alberi) e l'esecuzione di query, come il collegamento di un elenco di strade, con file di immagini, alla tabella degli attributi.

Ho "scheletri shapefile" (attualmente vuoto senza oggetti, solo il frame dell'attributo "in cui gli oggetti georeferenziati attuali e futuri (un shapefile diverso per ogni tipo) verranno incollati / creati). Confido di poter semplicemente importare questi shapefile scheletro in il database?

La situazione;

Lavoriamo in un edificio separato con la nostra LAN e connessione Internet con un server di backup per ogni file. Quindi abbiamo accesso ai file locali e file che condividiamo tramite una connessione Internet

L'installazione del database è stata eseguita da un amministratore tramite accesso remoto, utilizzando gli ultimi file di esecuzione .exe di PostGIS e PostgreSQL (postgresql-9.6.2-3-windows-x64 e postgis-bundle-pg96x64-setup-2.3.2 -1) per la mia macchina a 64 bit. L'amministratore mi ha fornito un file di testo con le informazioni di accesso. I manuali di addestramento qui sono piuttosto confusi poiché si occupano di Ubuntu.

Sono bloccato perché non so dove utilizzare le informazioni di accesso che ho scritto? Presumo di dover usare pgAdmin?


In questo modo installo PostGIS su Windows - in una semplice installazione get.enterprisedb.com/docs/… allora QGIS si collegherà facilmente con il nome utente e la password impostati.
Mapperz

1
Consiglio vivamente di installare pgAdmin 3 per lavorare con il database. Ora c'è un pgAdmin4, potresti anche cercare di installarlo contemporaneamente, vedi quale preferisci.
Martin Hügi,

Aspetta, quindi dove vanno in QGIS e quali file devo installare nello stackbuilder? Modifica nvm: trovato ora ho bisogno di trovare quali voci di servizio e host locale devo fare.
ThunderSpark

Postgis installerà localmente il "server" richiesto in questo modo, come funziona il database, quindi QGIS verrà utilizzato per connettere "live" tramite il server (localhost).
Mapperz

Risposte:


23

Sembra che il tuo amministratore abbia installato correttamente il database e ti abbia fornito i dettagli di cui avrai bisogno. Potrebbero aver configurato PostGIS anche durante l'installazione, ma in caso contrario, puoi verificarlo mentre esegui questi passaggi.

Prima chiedi al tuo amministratore di installare pgAdmin questo ti permetterà di accedere al tuo database PostgreSQL con un'interfaccia grafica.

https://www.pgadmin.org/download/windows.php

Apri pgAdmin

Se PostgreSQL è stato installato;

  • sul tuo computer apparirà come localhost, dovresti essere in grado di fare doppio clic su 'PostgreSQL (n. versione) (localhost: 5432)' per connetterti ad esso.

inserisci qui la descrizione dell'immagine

  • Se è stato installato sulla rete, sarà necessario che l'amministratore ti comunichi l'indirizzo host (se non lo hai già), dovrai andare su File> Aggiungi server e compilare i campi;

inserisci qui la descrizione dell'immagine

Una volta connesso, vai a Edit > New Object > New Database

Dagli un nome. Apparirà nel tuo elenco di server.

Fare doppio clic per connettersi ad esso. Controlla Extensionsper vedere se elenca postgis.

Altrimenti;

Apri la finestra SQL facendo clic sull'icona SQL

inserisci qui la descrizione dell'immagine

e digita

CREATE EXTENSION PostGIS

Premi "Esegui query": questa icona inserisci qui la descrizione dell'immagine

Fare clic con il pulsante destro del mouse sul database nell'elenco e disconnettersi, quindi riconnettersi. Le estensioni ora dovrebbero essere postgiselencate.

È possibile impostare un nuovo ruolo di gruppo e il ruolo di accesso a questo punto, sembra che si debbano fornire le esigenze di sicurezza e gli utenti attraverso la rete.

Oppure, se vuoi solo testarlo, puoi continuare con il ruolo predefinito postgres.

È possibile impostare gruppi diversi per disporre di autorizzazioni diverse, ad esempio admin e user. Gli accessi utente possono quindi essere configurati e assegnati a qualsiasi gruppo adatto al livello di autorizzazione che si desidera fornire all'utente, oppure è possibile dare accesso a tutte le tabelle per l'amministratore e solo alcune per gli utenti, ecc. Potrebbe non essere necessario un gruppo di amministratori.

Aprire la finestra SQL ed eseguire queste query;

CREATE ROLE user_group_name NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
CREATE ROLE admin_group_name NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

GRANT user_group_name TO admin_group_name

GRANT ALL ON DATABASE database_name TO admin_group_name;

Configura un login amministratore (accedi come postgres / superutente)

CREATE ROLE admin_name LOGIN PASSWORD 'their_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT admin_group_name TO admin_name;

Configura un login utente (accedi come postgres / superutente)

CREATE ROLE user_name LOGIN PASSWORD 'their_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT users_group_name TO user_name;

Apri QGIS. Inizia un nuovo progetto.

Fai clic sull'icona "Aggiungi livello PostGIS" nella barra degli strumenti a sinistra.

inserisci qui la descrizione dell'immagine

Fai clic su "Nuova" connessione e inserisci i dettagli della connessione come sopra (se il tuo database è locale, l'host è giusto localhost).

È possibile testare la connessione a questo punto. Se selezioni le caselle "Salva" tramite il campo nome utente e password, verranno archiviate le tue credenziali nel tuo profilo, quindi non è necessario inserirle ogni volta. Dipende da te in base alle tue esigenze di sicurezza.

Premi Ok e chiudi la finestra "Aggiungi tabella PostGIS"

Quindi vai a Database > DB Manager > DB Manager (Le versioni recenti di QGIS hanno DB Manager installato come standard, nelle versioni precedenti dovrai installare il plugin DB Manager)

Seleziona PostGIS. Verrà mostrato lo schema pubblico predefinito. Sembra come se dovessi creare un nuovo schema piuttosto che usare quello pubblico.

Schema> Crea schema - Dagli un nome ( no_spaces_or_use_underscores)

Una volta creato, è possibile verificare tornando a pgAdmin, disconnettersi, riconnettersi. Il nuovo schema dovrebbe ora essere lì.

Torna a QGIS DB Manager per caricare uno shapefile in una tabella nel database.

Fai clic sulla freccia rivolta verso il basso "Importa livello / file" per individuare il file di forma che desideri importare. Fai clic sull'icona `` ... '' per aprire Sfoglia.

Dai un nome alla tabella ( again_no_spaces_or_use_underscores)

Selezionare Primary key

Selezionare Geometry Column

Seleziona SRIDe inserisci il codice CRS

Per ora lascia tutto il resto e OK.

Se si tratta di un set di dati di grandi dimensioni, potrebbe richiedere del tempo, soprattutto attraverso una connessione di rete / Internet

Ancora una volta puoi tornare a pgAdmin, premere aggiorna questa volta e la nuova tabella apparirà in Tables.

Se hai impostato ruoli di gruppo e utenti, dovrai concedere l'accesso allo schema, ad esempio;

GRANT ALL ON SCHEMA schema_name TO admin_group_name;
GRANT USAGE ON SCHEMA schema_name TO user_group_name;

Torna a QGIS e 'Aggiungi livello PostGIS'. Questa volta selezionare Connetti. Apri lo schema ed evidenzia la tabella e fai clic su "Aggiungi" e si aprirà nello spazio del tuo progetto.


Sembra che abbiano installato PQadmin 4, sto fornendo la password quando il programma lo richiede ma ottengo "impossibile tradurre il nome host" postgres // * communityname123 "per indirizzare: errore del server sconosciuto". Quindi cosa devo fare qui, tieni presente che sto lavorando con PQadmin4 e c'è solo un server PostGre SQL 9.6. Quindi suppongo che questo sia il server QSL di PostGre che hanno installato, ma potrebbero aver fatto qualcosa di sbagliato nella configurazione dell'indirizzo. Quindi devo informarli qui o sto facendo qualcosa di sbagliato? * = sensore.
ThunderSpark

1
Prova "localhost" come nome host, solo per escluderlo. In caso contrario, chiedi al tuo amministratore il percorso in cui si trova Postgres nella rete, dovrebbero essere in grado di darti questo. Probabilmente è solo una sintassi o manca qualcosa nell'indirizzo.
Martin Hügi,

Grazie per aver funzionato, si è scoperto che hanno commesso un errore cambiando anche il nome utente in superutente, Postgres e così via. Seguirò il resto delle istruzioni e vedrò se funziona. Grazie Martin.
ThunderSpark

Va bene, Martin, puoi aggiungere il resto di come rendere il database per un gruppo che lavora qui?
ThunderSpark

Aggiunti rapidamente alcuni script, ho dovuto aspettare la mia pausa pranzo, quindi un po 'frettoloso. Dovrebbero funzionare.
Martin Hügi,

2

Sembra che il tuo progetto funzionerà a sufficienza su un'installazione portatile di Postgres / Postgis. L'ho fatto per i miei studenti qualche tempo fa, in modo che possano copiare la cartella postgresl su una chiavetta USB e usarla su ogni PC Windows:

  1. Scarica postgresql come file zip
  2. Decomprimilo
  3. Scarica postgis (postgis-bundle-pg96-2.3.1x32.zip o x64), in base al tuo sistema
  4. Decomprimilo e copiarlo nella cartella postgresql
  5. Usa questa spiegazione per "installare" Postgres come versione portatile: http://www.postgresonline.com/journal/archives/172-Starting-PostgreSQL-in-windows-without-install.html
  6. Opzionalmente cambia pg_hba.conf e aggiungi / sovrascrivi "ospita tutti tutti i 127.0.0.1/32 trust" - questo consente l'accesso dal tuo PC al database senza controllare la password, il che è ok in questo caso ma è un no-go in ambienti di produzione
  7. Connettiti al database usando pgadmin3
  8. Crea un nuovo database ed esegui "CREATE EXTENSION postgis;"

Ora dovresti essere in grado di lavorare con postgesql / postgis e accedere al db sul tuo PC. Si prega di essere consapevoli del fatto che questa è una soluzione rapida e sporca, che funziona a scopi educativi ma non in un ambiente di produzione / rete.

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.