Ubuntu 12.04にPostGISとTIGERデータをインストールする


9

誰かがPostgisをインストールし、ubuntuに全国のTigerデータをロードするための馬鹿のガイドを理解していなくても、簡単に書くことができますか?私はいくつかのガイド、つまりhttp://wiki.bitnami.com/@api/deki/pages/302/pdfを試しましたが、あまりうまくいきません。この質問の自由な性質をお詫び申し上げます。


どのバージョンのPostGISを実行していますか?12.04に同梱されているバージョンですか、それともアップグレードしましたか?最新のPostGISを実行したい場合は、2.1.1。そのバージョンに付属するTIGER Geocoderは、PostGIS 1.5で動作するバージョンよりもはるかに優れています。
HeyOverThere 2014年

私は実際に2.1.1を使用しています。必要なすべての拡張機能(fuzzystrmatch、postgis、postgi_tiger_geocoder、postgis_topology)とtigerスキーマを有効にしています。さて、国勢調査データをアップロードするだけです。
stat_novice 2014年

回答:


12

あなたはPostGIS 2.1.1を持っているので、あなたはゲームの先を行っています。wgetがインストールされていることを確認してください。これにより、Census FTPサイトからデータがダウンロードされます。

次のコマンドでgisdataディレクトリを作成します。

sudo mkdir /gisdata

chownコマンドとchgrpコマンドを使用して/ gisdataの所有権とグループを変更し、通常のユーザーが/ gisdataの読み取りと書き込みを行えるようにします。

psqlを起動してデータベースに接続します。PSQLに入ると

\a

そして

\t

クエリの結果が正しくフォーマットされるようにします。

最初はこの部分を忘れました!ローダースクリプトを使用する前に、ハウスクリーニングを行う必要があります。まず、tigerスキーマが検索パスに含まれていることを確認します。次に、tiger.loader_platformとtiger.loader_variablesの値を確認します。これらの2つのテーブルは、ユーザー名やパスワードなどのローダースクリプトの変数を制御します。通常、PGAdminで編集します。次は、ジオコーダーに必要なルックアップテーブルやその他の背景の良さを設定するスクリプトを実行する必要があります。まず、出力ファイルを設定します。

\o nation_generator.sh

次に実行します:

SELECT loader_generate_nation_script('sh'); 

次に、psqlを終了してファイルを実行します。

sh ./nation_generator.sh

次に、psqlに戻って次のように入力します。

\o loader_script.sh

クエリの結果をloader_script.sqlというテキストファイルに出力します。次に、ローダースクリプトを生成する関数を実行します。

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

これは、出力がloader_script.sqlにリダイレクトされるクエリです。「DC」と「RI」を、ダウンロードする州の2文字の略語に置き換えます。

psqlを終了し、次のコマンドでスクリプトを実行します。

sh ./loader_script.sh

これにより、選択した状態のファイルがダウンロードされ、解凍されて、データがPostGISデータベースにインポートされます。


HeyOverThere:細かい対応ありがとうございます。psqlで「\ o loader_script.sql」と入力すると、権限が拒否されました。理由について何か考えはありますか?ユーザーpostgresとしてログインしています。
stat_novice 2014年

ごめんなさい!ほとんどの人がpsqlを実行するために通常のユーザーアカウントを使用していないことを忘れました。スクリプトは、postgresユーザーが書き込み権限を持つ場所に保存する必要があります。最も簡単なのは、ファイルを/ tmpに保存する\ o /tmp/loader_script.sqlを使用することです。次に、ファイルを実行するには、sh ./tmp/loader_script.sqlになります。
HeyOverThere 2014年

うまくいきました!しかし、現在、「指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要があるかもしれません。」というエラーメッセージが表示されます。ローダースクリプトのクエリを実行するとき。また、私が正しく覚えている場合、そのファイルを編集する必要があります。ユーザー名とデータベースを追加するには、
stat_novice 2014年

申し訳ありません!それも忘れました!最初に確認するのはデータベースの検索パスです。tigerスキーマがそこにあることを確認してください。2番目に確認することは、tigerスキーマに、スクリプトにパスワードやその他の情報を伝えるtiger.loader_platformとtiger.loader_variablesのテーブルがあることです。それらを編集するには、PGAdminを使用します。最後に、ローダースクリプトを実行する前に、loader_generate_nation関数を実行して、ジオコーダーが必要とするすべてのテーブルをセットアップします。私はこれらの空白を埋めるために私の答えを編集します。
HeyOverThere 2014年

HeyOverThere:あなたは男性/女性の神です。これはほとんど機能します。国と州の両方のスクリプトが実行され、国勢調査のWebサイトをFTPで送信してファイルを取得しているようですが、両方が完了した後、次のエラーステートメントの一部が発行されます。 9.0 / bin / psql:見つかりません。」さらに、tiger_dataスキーマにはデータがありません。ファイル、特に次の行を編集する必要がありますか: "export PGBIN = / usr / pgsql-9.0 / bin"?
stat_novice 2014年

0

このサイトには、PostGISのインストールに関する複数の回答があります。ここに1つあります。NickGauthierのソリューションも優れています。その中の十分なアドバイスを繰り返します...

Ubuntu 12.04以降では、PostGISのインストールが大幅に簡単になりました。それを行うには、一般に2つの方法があります。PPAからのインストールとソースからのビルドです。以下は、各ケースで使用する一般的なシェルスクリプトです。

PPAからのインストール... PPAを使用していubuntugis-unstableます。

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

ソースからのビルド...これはPostGIS 2.1とPostgreSQL 9.1を想定していますが、両方の最近のバージョンでもかまいません。必要に応じて変更してください。

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

2つの間のテーマに気づくでしょう。テンプレートデータベースを作成し、spatial_ref_sysテーブルに入力する必要があります。

TIGERのセットアップについては、PostGIS 2.xのドキュメントの第2章にある TIGERデータをロードする手順に従ってください。


Arthur:PostGIS 2.1がインストールされていて、postgis.sqlが次のディレクトリに存在しません:/usr/share/postgresql/9.3/contrib/postgis-2.1
stat_novice
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.