Installa i dati PostGIS e TIGER in Ubuntu 12.04


9

Qualcuno potrebbe scrivere una breve seppur offuscata guida dell'idiota all'installazione di postgis e al caricamento dei dati Tiger nazionali su Ubuntu? Ho provato alcune guide, vale a dire http://wiki.bitnami.com/@api/deki/pages/302/pdf , ma non ho molta fortuna. Mi scuso per la natura aperta di questa domanda.


Quale versione di PostGIS stai utilizzando? È la versione fornita con 12.04 o è stata aggiornata? Se puoi, vuoi eseguire l'ultimo PostGIS, 2.1.1. Il geocoder TIGER fornito con quella versione è molto meglio della versione che funziona con PostGIS 1.5.
HeyOver

Sto effettivamente usando 2.1.1. Ho abilitato tutte le estensioni necessarie (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) e lo schema della tigre. Ora devo solo caricare i dati del censimento nazionale.
stat_novice,

Risposte:


12

Dato che hai PostGIS 2.1.1 sei in vantaggio. Assicurati di aver installato wget, è ciò che scaricherà i dati dal sito FTP del censimento.

Crea una directory gisdata con:

sudo mkdir /gisdata

Utilizzare i comandi chown e chgrp per modificare la proprietà e il gruppo di / gisdata in modo che l'utente normale possa leggere e scrivere su / gisdata.

Avviare psql e connettersi al database. Una volta in psql utilizzare

\a

e

\t

in modo che i risultati della query siano formattati correttamente.

Ho dimenticato questa parte inizialmente! Prima di poter utilizzare lo script del caricatore, è necessario eseguire alcune operazioni di pulizia della casa. La prima cosa è assicurarsi che lo schema della tigre sia nel tuo percorso di ricerca . Successivamente, controlla i valori in tiger.loader_platform e tiger.loader_variables. Queste due tabelle controllano le variabili per lo script del caricatore come nome utente e password. Di solito li modifico in PGAdmin. Successivamente, dovrai eseguire uno script che popoli le tabelle di ricerca e altri bit di bontà di sfondo di cui il geocoder avrà bisogno. Innanzitutto imposta un file di output:

\o nation_generator.sh

quindi eseguire:

SELECT loader_generate_nation_script('sh'); 

Quindi uscire da psql ed eseguire il file:

sh ./nation_generator.sh

Quindi tornare indietro in psql e digitare:

\o loader_script.sh

per generare i risultati della query in un file di testo chiamato loader_script.sql. Quindi eseguire la funzione che genera lo script del caricatore:

SELECT loader_generate_script(ARRAY['DC','RI'], 'sh');

Questa è la query il cui output verrà reindirizzato a loader_script.sql. Sostituisci "DC" e "RI" con le abbreviazioni di due lettere degli stati che desideri scaricare.

Esci da psql ed esegui lo script con questo comando:

sh ./loader_script.sh

Questo scaricherà i file per lo / gli stato / i selezionato / i, decomprimili e importerà i dati nel tuo database PostGIS.


HeyOverThere: grazie per la risposta dettagliata. Mentre in psql, digitando "\ o loader_script.sql" si ottiene una dichiarazione di autorizzazione negata. Qualche idea sul perché? Ho effettuato l'accesso come postgres utente.
stat_novice,

Scusate! Ho dimenticato che molte persone non usano i loro normali account utente per eseguire psql. Dovrai salvare lo script da qualche parte in cui l'utente postgres ha il permesso di scrivere. Il più semplice è usare \ o /tmp/loader_script.sql che salverà il file in / tmp. Quindi per eseguire il file sarà sh ./tmp/loader_script.sql.
Ehi

Ha funzionato! Tuttavia, ora sto ricevendo questo messaggio di errore "Nessuna funzione corrisponde al nome specificato e ai tipi di argomento. Potrebbe essere necessario aggiungere cast di tipi espliciti." durante l'esecuzione della query per lo script del caricatore. Inoltre, se ricordo bene, dovrò modificare quel file, giusto per aggiungere il mio nome utente e db?
stat_novice,

Doppio scusa! L'ho dimenticato anche io! La prima cosa da controllare sarà il percorso di ricerca del tuo database, assicurati che lo schema della tigre sia presente. La seconda cosa da verificare è nello schema della tigre ci sono tabelle, tiger.loader_platform e tiger.loader_variables che dicono ai tuoi script la tua password e altre informazioni. Usa PGAdmin per modificarli. Infine, prima di eseguire lo script loader, esegui la funzione loader_generate_nation per impostare tutte le tabelle necessarie per il geocoder. Modificherò la mia risposta per riempire questi spazi vuoti.
HeyOver

HeyOverThere: sei un dio tra uomini e donne. Questo funziona quasi. Sia gli script nazione che quelli di stato vengono eseguiti e stanno inviando FTP al sito Web del censimento e sembrano recuperare file, ma dopo entrambi completati rilasciano alcune delle seguenti dichiarazioni di errore: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: non trovato ". Inoltre, non ci sono dati nello schema tiger_data. Devo modificare i file, in particolare questa riga: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice,

0

Esistono più risposte su questo sito relative all'installazione di PostGIS. Eccone uno e anche la soluzione di Nick Gauthier è eccellente. Per ribadire l'ampio consiglio in esso ...

L'installazione di PostGIS è diventata molto più semplice in Ubuntu 12.04 e versioni successive. Esistono in genere due modi per procedere: l'installazione da un PPA e la costruzione dal sorgente. Quello che segue sono gli script di shell generali che uso per ogni caso.

Installazione da un PPA ... Uso ubuntugis-unstablePPA.

# Add Ubuntu GIS PPA and update, upgrade
sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable -y && sudo apt-get update && sudo apt-get upgrade

# Install PostGIS
sudo apt-get install postgis

# Recommends: sudo apt-get install postgresql-9.1-postgis-2.0

# Configure template database
POSTGIS_TEMPLATE=postgis-2.0.1
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

Costruire dalla fonte ... Ciò presuppone PostGIS 2.1 e PostgreSQL 9.1 ma potrebbe essere una versione recente di entrambi; cambiare se necessario.

cd /usr/local/ && sudo mkdir postgis && sudo chown [username] postgis && cd postgis
wget http://download.osgeo.org/postgis/source/postgis-2.1.0.tar.gz
tar -xzvf postgis-2.1.0.tar.gz && rm postgis-2.1.0.tar.gz && cd postgis-2.1.0
sudo ./configure --with-projdir=/usr/local/proj/v4.7.0/
make
sudo make install

# Configure template database
POSTGIS_TEMPLATE=postgis-2.1.0
POSTGRESQL_VER=9.1
sudo su -c "createdb $POSTGIS_TEMPLATE" - postgres 
sudo -u postgres psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='$POSTGIS_TEMPLATE';" 
sudo -u postgres psql -d $POSTGIS_TEMPLATE -f /usr/share/postgresql/$POSTGRESQL_VER/contrib/postgis-2.0/postgis.sql
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT ALL ON geometry_columns TO PUBLIC;"
sudo -u postgres psql -d $POSTGIS_TEMPLATE -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"

Noterai un tema tra i due; è ancora necessario creare un database modello e popolare la spatial_ref_systabella.

Per quanto riguarda la configurazione con TIGER , seguire le istruzioni per il caricamento dei dati TIGER nella documentazione di PostGIS 2.x, capitolo 2 .


Arthur: Ho PostGIS 2.1 installato e postgis.sql non esiste nella seguente directory: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice
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.