Installieren Sie PostGIS- und TIGER-Daten in Ubuntu 12.04


9

Könnte jemand einen kurzen, wenn auch heruntergekommenen Leitfaden für Idioten zur Installation von Postgis und zum Laden nationaler Tigerdaten auf Ubuntu schreiben? Ich habe einige Anleitungen ausprobiert, nämlich http://wiki.bitnami.com/@api/deki/pages/302/pdf , aber ich habe nicht viel Glück. Ich entschuldige mich für die Offenheit dieser Frage.


Welche Version von PostGIS verwenden Sie? Ist es die mit 12.04 gepackte Version oder haben Sie ein Upgrade durchgeführt? Wenn Sie können, möchten Sie das neueste PostGIS ausführen, 2.1.1. Der TIGER Geocoder, der mit dieser Version geliefert wird, ist viel besser als die Version, die mit PostGIS 1.5 funktioniert.
HeyOverThere

Ich benutze tatsächlich 2.1.1. Ich habe alle erforderlichen Erweiterungen aktiviert (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) und das Tigerschema. Jetzt muss ich nur noch nationale Volkszählungsdaten hochladen.
stat_novice

Antworten:


12

Seit Sie PostGIS 2.1.1 haben, sind Sie dem Spiel voraus. Stellen Sie sicher, dass Sie wget installiert haben. Dadurch werden die Daten von der Census FTP-Site heruntergeladen.

Erstellen Sie ein Gisdata-Verzeichnis mit:

sudo mkdir /gisdata

Verwenden Sie die Befehle chown und chgrp , um den Besitz und die Gruppe von / gisdata so zu ändern, dass Ihr normaler Benutzer in / gisdata lesen und schreiben kann.

Starten Sie psql und stellen Sie eine Verbindung zu Ihrer Datenbank her. Einmal in psql verwenden

\a

und

\t

damit die Ergebnisse der Abfrage korrekt formatiert werden.

Ich habe diesen Teil anfangs vergessen! Bevor Sie das Loader-Skript verwenden können, müssen Sie eine Hausreinigung durchführen. Stellen Sie zunächst sicher, dass sich das Tigerschema in Ihrem Suchpfad befindet . Überprüfen Sie als nächstes die Werte in tiger.loader_platform und tiger.loader_variables. Diese beiden Tabellen steuern Variablen für das Loader-Skript wie Ihren Benutzernamen und Ihr Kennwort. Normalerweise bearbeite ich sie einfach in PGAdmin. Als nächstes müssen Sie ein Skript ausführen, das Nachschlagetabellen und andere Hintergrundinformationen auffüllt, die der Geocoder benötigt. Stellen Sie zuerst eine Ausgabedatei ein:

\o nation_generator.sh

dann renne:

SELECT loader_generate_nation_script('sh'); 

Beenden Sie dann psql und führen Sie die Datei aus:

sh ./nation_generator.sh

Dann hüpfe zurück in psql und tippe:

\o loader_script.sh

um die Ergebnisse der Abfrage in eine Textdatei namens loader_script.sql auszugeben. Führen Sie dann die Funktion aus, die das Loader-Skript generiert:

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

Dies ist die Abfrage, deren Ausgabe an loader_script.sql umgeleitet wird. Ersetzen Sie 'DC' und 'RI' durch die zwei Buchstabenabkürzungen der Zustände, die Sie herunterladen möchten.

Beenden Sie psql und führen Sie das Skript mit dem folgenden Befehl aus:

sh ./loader_script.sh

Dadurch werden die Dateien für die ausgewählten Status heruntergeladen, entpackt und die Daten in Ihre PostGIS-Datenbank importiert.


HeyOverThere: Vielen Dank für die ausführliche Antwort. Wenn Sie in psql "\ o loader_script.sql" eingeben, wird die Anweisung "Berechtigung verweigert" eingegeben. Irgendeine Idee warum? Ich bin als Benutzer postgres angemeldet.
stat_novice

Es tut uns leid! Ich habe vergessen, dass die meisten Leute ihre normalen Benutzerkonten nicht verwenden, um psql auszuführen. Sie müssen das Skript an einem Ort speichern, an dem Ihr Postgres-Benutzer Schreibberechtigung hat. Am einfachsten ist es, \ o /tmp/loader_script.sql zu verwenden, um die Datei in / tmp zu speichern. Um die Datei auszuführen, lautet sie sh ./tmp/loader_script.sql.
HeyOverThere

Das hat funktioniert! Jetzt erhalte ich jedoch die Fehlermeldung "Keine Funktion entspricht dem angegebenen Namen und den angegebenen Argumenttypen. Möglicherweise müssen Sie explizite Typumwandlungen hinzufügen." beim Ausführen der Abfrage für das Loader-Skript. Wenn ich mich richtig erinnere, muss ich diese Datei bearbeiten, um meinen Benutzernamen und meine Datenbank hinzuzufügen.
stat_novice

Doppelte Entschuldigung! Das habe ich auch vergessen! Als erstes müssen Sie den Suchpfad Ihrer Datenbank überprüfen. Stellen Sie sicher, dass das Tigerschema vorhanden ist. Als zweites sollten Sie überprüfen, ob im Tiger-Schema Tabellen, tiger.loader_platform und tiger.loader_variables vorhanden sind, die Ihren Skripten Ihr Passwort und andere Informationen mitteilen. Verwenden Sie PGAdmin, um diese zu bearbeiten. Führen Sie schließlich vor dem Ausführen Ihres Loader-Skripts die Funktion loader_generate_nation aus, um alle Tabellen einzurichten, die der Geocoder benötigt. Ich werde meine Antwort bearbeiten, um diese Lücken auszufüllen.
HeyOverThere

HeyOverThere: Du bist ein Gott unter Männern / Frauen. Das funktioniert fast. Sowohl die nationalen als auch die staatlichen Skripte werden ausgeführt und sie senden die Volkszählungswebsite per FTP und scheinen Dateien abzurufen. Nach Abschluss beider Skripte geben sie jedoch einige der folgenden Fehleranweisungen aus: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: nicht gefunden ". Darüber hinaus enthält das Schema tiger_data keine Daten. Muss ich die Dateien bearbeiten, insbesondere diese Zeile: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice

0

Auf dieser Website gibt es mehrere Antworten zur Installation von PostGIS. Hier ist eine , und die Lösung von Nick Gauthier ist ebenfalls hervorragend. Um den reichlichen Rat darin zu wiederholen ...

Die Installation von PostGIS ist in Ubuntu 12.04 und höher viel einfacher geworden. Im Allgemeinen gibt es zwei Möglichkeiten: Installation von einem PPA und Erstellen von der Quelle. Was folgt, sind allgemeine Shell-Skripte, die ich für jeden Fall verwende.

Installation von einer PPA ... Ich verwende die 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;"

Erstellen aus der Quelle ... Dies setzt PostGIS 2.1 und PostgreSQL 9.1 voraus, kann jedoch jede neuere Version von beiden sein. nach Bedarf ändern.

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;"

Sie werden ein Thema zwischen den beiden bemerken; Es ist weiterhin erforderlich, eine Vorlagendatenbank zu erstellen und die spatial_ref_sysTabelle zu füllen.

Befolgen Sie zum Einrichten von TIGER die Anweisungen zum Laden von TIGER-Daten in der PostGIS 2.x-Dokumentation, Kapitel 2 .


Arthur: Ich habe PostGIS 2.1 installiert und postgis.sql existiert nicht im folgenden Verzeichnis: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.