Zainstaluj PostGIS i dane TIGER w Ubuntu 12.04

9

Czy ktoś mógłby napisać krótki, choć głupi przewodnik dla idiotów na temat instalowania postgis i ładowania krajowych danych Tygrysa na Ubuntu? Wypróbowałem kilka przewodników, a mianowicie http://wiki.bitnami.com/@api/deki/pages/302/pdf , ale nie mam szczęścia. Przepraszam za otwarty charakter tego pytania.

stat_novice
źródło
Jaką wersję PostGIS używasz? Czy to wersja w pakiecie z 12.04, czy też dokonałeś aktualizacji? Jeśli możesz, chcesz uruchomić najnowszą wersję PostGIS, 2.1.1. Geocoder TIGER dostarczany z tą wersją jest znacznie lepszy niż wersja współpracująca z PostGIS 1.5.
HeyOverThere
Rzeczywiście używam 2.1.1. Mam włączone wszystkie niezbędne rozszerzenia (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) i schemat tygrysa. Teraz muszę tylko przesłać krajowe dane spisowe.
stat_novice

Odpowiedzi:

12

Ponieważ masz PostGIS 2.1.1, wyprzedzasz grę. Upewnij się, że masz zainstalowany wget, to właśnie on pobierze dane ze strony FTP Census.

Utwórz katalog gisdata z:

sudo mkdir /gisdata

Użyj komend chown i chgrp , aby zmienić własność i grupę / gisdata, aby normalny użytkownik mógł czytać i zapisywać w / gisdata.

Uruchom psql i połącz się z bazą danych. Raz w psql użyj

\a

i

\t

dzięki czemu wyniki zapytania są poprawnie sformatowane.

Początkowo zapomniałem tej części! Zanim zaczniesz korzystać ze skryptu modułu ładującego, musisz zrobić porządki w domu. Pierwszą rzeczą jest upewnienie się, że schemat tygrysa znajduje się na ścieżce wyszukiwania . Następnie sprawdź wartości w zmiennych tiger.loader_platform i tiger.loader_variables. Te dwie tabele sterują zmiennymi skryptu modułu ładującego, takimi jak nazwa użytkownika i hasło. Zwykle po prostu edytuję je w PGAdmin. Następnie musisz uruchomić skrypt wypełniający tabele odnośników i inne fragmenty dobroci tła, których potrzebuje geokoder. Najpierw ustaw plik wyjściowy:

\o nation_generator.sh

następnie uruchomić:

SELECT loader_generate_nation_script('sh'); 

Następnie zamknij psql i uruchom plik:

sh ./nation_generator.sh

Następnie wskocz z powrotem do psql i wpisz:

\o loader_script.sh

aby wyświetlić wyniki zapytania do pliku tekstowego o nazwie loader_script.sql. Następnie uruchom funkcję, która generuje skrypt ładujący:

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

To jest zapytanie, którego dane wyjściowe zostaną przekierowane do loader_script.sql. Zamień „DC” i „RI” na dwuliterowe skróty stanów, które chcesz pobrać.

Wyjdź z psql i uruchom skrypt za pomocą tego polecenia:

sh ./loader_script.sh

Spowoduje to pobranie plików dla wybranych stanów, rozpakowanie ich i zaimportowanie danych do bazy danych PostGIS.

HeyOverThere
źródło
HeyOverThere: Dziękuję za szczegółową odpowiedź. Podczas pisania w psql wpisanie „\ o loader_script.sql” powoduje wyrażenie odmowy uprawnień. Masz pomysł, dlaczego? Jestem zalogowany jako użytkownik postgres.
stat_novice
Przepraszam! Zapomniałem, że większość ludzi nie używa swoich zwykłych kont użytkowników do uruchamiania psql. Musisz zapisać skrypt w miejscu, w którym użytkownik postgres ma uprawnienia do zapisu. Najłatwiej jest użyć \ o /tmp/loader_script.sql, który zapisze plik w / tmp. Następnie, aby uruchomić plik, będzie to sh ./tmp/loader_script.sql.
HeyOverThere
To się udało! Chociaż teraz pojawia się komunikat o błędzie „Żadna funkcja nie pasuje do podanych nazw i typów argumentów. Może być konieczne dodanie rzutowania typu jawnego”. podczas wykonywania zapytania o skrypt ładujący. Ponadto, jeśli dobrze pamiętam, będę musiał edytować ten plik, czy mogę dodać moją nazwę użytkownika i db?
stat_novice
Podwójnie przepraszam! Też o tym zapomniałem! Pierwszą rzeczą do sprawdzenia będzie ścieżka wyszukiwania w bazie danych, upewnij się, że jest tam schemat tygrysa. Drugą rzeczą do sprawdzenia jest w schemacie tygrysa znajdują się tabele, tiger.loader_platform i tiger.loader_variables, które podają twoim skryptom twoje hasło i inne informacje. Użyj PGAdmin, aby je edytować. Na koniec, przed uruchomieniem skryptu modułu ładującego uruchom funkcję loader_generate_nation, aby skonfigurować wszystkie tabele, których potrzebuje geokoder. Zmodyfikuję swoją odpowiedź, aby wypełnić te pola.
HeyOverThere
HeyOverThere: Jesteś bogiem wśród mężczyzn / kobiet. To prawie działa. Uruchamiane są zarówno skrypty narodowe, jak i stanowe, które przesyłają FTP ze strony spisu i wydają się pobierać pliki, ale po zakończeniu obu wydają niektóre z następujących instrukcji błędów: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: nie znaleziono ". Ponadto w schemacie tiger_data nie ma danych. Czy muszę edytować pliki, szczególnie ten wiersz: „eksportuj PGBIN = / usr / pgsql-9.0 / bin”?
stat_novice
0

Na tej stronie znajduje się wiele odpowiedzi dotyczących instalacji PostGIS. Oto jedno , a rozwiązanie Nicka Gauthiera jest również doskonałe. Aby powtórzyć obszerną radę w nim zawartą ...

Instalacja PostGIS jest znacznie łatwiejsza w Ubuntu 12.04 i nowszych. Są na ogół dwa sposoby na obejście tego: instalacja z PPA i budowanie ze źródła. Poniżej podano ogólne skrypty powłoki, których używam do każdego przypadku.

Instalowanie z PPA ... Używam 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;"

Budowanie ze źródła ... Zakłada się PostGIS 2.1 i PostgreSQL 9.1, ale może to być dowolna najnowsza wersja obu; zmień w razie potrzeby.

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

Zauważysz motyw między nimi; nadal konieczne jest utworzenie bazy danych szablonów i wypełnienie spatial_ref_systabeli.

Aby skonfigurować TIGER , postępuj zgodnie z instrukcjami dotyczącymi ładowania danych TIGER w dokumentacji PostGIS 2.x, rozdział 2 .

Artur
źródło
Arthur: Mam zainstalowany PostGIS 2.1 i postgis.sql nie istnieje w następującym katalogu: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice