Instal PostGIS dan TIGER Data di Ubuntu 12.04

9

Bisakah seseorang menulis panduan singkat meskipun bodoh idiot untuk menginstal postgis dan memuat data Tiger nasional di ubuntu? Saya sudah mencoba beberapa panduan, yaitu, http://wiki.bitnami.com/@api/deki/pages/302/pdf , tapi saya tidak terlalu beruntung. Saya minta maaf atas sifat terbuka dari pertanyaan ini.

stat_novice
sumber
Versi PostGIS apa yang Anda jalankan? Apakah ini versi yang dikemas dengan 12.04 atau sudahkah Anda memutakhirkan? Jika Anda ingin menjalankan PostGIS terbaru, 2.1.1. Geocoder TIGER yang menyertai versi itu jauh lebih baik daripada versi yang berfungsi dengan PostGIS 1.5.
HeyOverThere
Saya memang menggunakan 2.1.1. Saya telah mengaktifkan semua ekstensi yang diperlukan (fuzzystrmatch, postgis, postgi_tiger_geocoder, postgis_topology) dan skema harimau. Sekarang, saya hanya perlu mengunggah data sensus nasional.
stat_novice

Jawaban:

12

Karena Anda memiliki PostGIS 2.1.1 Anda unggul. Pastikan Anda telah menginstal wget, itu yang akan mengunduh data dari situs FTP Sensus.

Buat direktori gisdata dengan:

sudo mkdir /gisdata

Gunakan perintah chown dan chgrp untuk mengubah kepemilikan dan grup / gisdata sehingga pengguna normal Anda dapat membaca dan menulis ke / gisdata.

Mulai psql dan sambungkan ke database Anda. Sekali dalam penggunaan psql

\a

dan

\t

sehingga hasil kueri diformat dengan benar.

Awalnya saya lupa bagian ini! Sebelum Anda dapat menggunakan skrip loader Anda perlu melakukan beberapa pembersihan rumah. Hal pertama adalah memastikan skema harimau ada di jalur pencarian Anda . Selanjutnya periksa nilai dalam tiger.loader_platform dan tiger.loader_variables. Dua tabel ini mengontrol variabel untuk skrip loader seperti nama pengguna dan kata sandi Anda. Saya biasanya mengeditnya di PGAdmin. Selanjutnya Anda harus menjalankan skrip yang mengisi tabel pencarian dan bit lain dari latar belakang kebaikan geocoder akan butuhkan. Pertama-tama atur file output:

\o nation_generator.sh

lalu lari:

SELECT loader_generate_nation_script('sh'); 

Kemudian keluar dari psql dan jalankan file:

sh ./nation_generator.sh

Kemudian kembali ke psql dan ketik:

\o loader_script.sh

untuk menampilkan hasil permintaan ke file teks yang disebut loader_script.sql. Kemudian jalankan fungsi yang menghasilkan skrip loader:

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

Ini adalah permintaan yang outputnya akan dialihkan ke loader_script.sql. Ganti 'DC' dan 'RI' dengan singkatan dua huruf dari status yang ingin Anda unduh.

Keluar dari psql dan jalankan skrip dengan perintah ini:

sh ./loader_script.sh

Ini akan mengunduh file untuk keadaan yang Anda pilih, unzip, dan mengimpor data ke dalam database PostGIS Anda.

HeyOverThere
sumber
HeyOverThere: Terima kasih atas tanggapan terperinci. Sementara di psql, mengetik "\ o loader_script.sql" menghasilkan pernyataan yang ditolak izin. Tahu kenapa? Saya masuk sebagai postgres pengguna.
stat_novice
Maaf! Saya lupa kebanyakan orang tidak menggunakan akun pengguna normal mereka untuk menjalankan psql. Anda harus menyimpan skrip di suatu tempat dimana pengguna postgres Anda memiliki izin menulis. Cara termudah adalah menggunakan \ o /tmp/loader_script.sql yang akan menyimpan file ke / tmp. Kemudian untuk menjalankan file itu akan sh ./tmp/loader_script.sql.
HeyOverThere
Itu berhasil! Meskipun, sekarang saya menerima pesan kesalahan ini "Tidak ada fungsi yang cocok dengan nama dan tipe argumen yang diberikan. Anda mungkin perlu menambahkan tipe gips eksplisit." saat menjalankan kueri untuk skrip loader. Juga, jika saya ingat dengan benar, saya harus mengedit file itu, apakah benar untuk menambahkan nama pengguna dan db?
stat_novice
Gandakan maaf! Saya lupa tentang itu juga! Hal pertama yang harus diperiksa adalah jalur pencarian basis data Anda, pastikan skema harimau ada di sana. Hal kedua yang perlu diperiksa adalah dalam skema harimau ada tabel, tiger.loader_platform dan tiger.loader_variables yang memberi tahu skrip Anda kata sandi Anda dan informasi lainnya. Gunakan PGAdmin untuk mengeditnya. Terakhir, sebelum menjalankan skrip loader Anda, jalankan fungsi loader_generate_nation untuk mengatur semua tabel yang dibutuhkan geocoder. Saya akan mengedit jawaban saya untuk mengisi kekosongan ini.
HeyOverThere
HeyOverThere: Anda adalah dewa di antara pria / wanita. Ini hampir berhasil. Skrip bangsa dan negara dijalankan dan mereka meng-FTP situs sensus dan tampaknya mengambil file, tetapi setelah keduanya selesai mereka mengeluarkan beberapa pernyataan kesalahan berikut: "loader_script.sql: 408: loader_script.sql: / usr / pgsql- 9.0 / bin / psql: tidak ditemukan ". Selain itu, tidak ada data dalam skema tiger_data. Apakah saya perlu mengedit file, khususnya baris ini: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice
0

Ada beberapa jawaban di situs ini yang berhubungan dengan instalasi PostGIS. Inilah satu , dan solusi Nick Gauthier juga sangat baik. Untuk mengulangi saran yang cukup di dalamnya ...

Instalasi PostGIS menjadi jauh lebih mudah di Ubuntu 12.04 dan yang lebih baru. Secara umum ada dua cara untuk melakukannya: instalasi dari PPA dan membangun dari sumber. Berikut ini adalah skrip shell umum yang saya gunakan untuk setiap kasus.

Menginstal dari PPA ... Saya menggunakan 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;"

Bangunan dari sumber ... Ini mengasumsikan PostGIS 2.1 dan PostgreSQL 9.1 tetapi dapat berupa versi terbaru dari keduanya; ubah seperlunya.

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

Anda akan melihat tema di antara keduanya; masih perlu membuat database templat dan mengisi spatial_ref_systabel.

Mengenai pengaturan dengan TIGER , ikuti instruksi untuk memuat data TIGER dalam dokumentasi PostGIS 2.x, Bab 2 .

Arthur
sumber
Arthur: Saya sudah menginstal PostGIS 2.1 dan postgis.sql tidak ada di direktori berikut: /usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice