PostGIS は、リレーショナルデータベース管理ソフトPostgreSQLに格納されているデータを空間データとして利用するための拡張機能です。PostGIS を使って地図を表示します。
操作の前に PostgreSQL について調べておくといいでしょう。
Synaptic パッケージマネージャで PostGIS を検索して postgresql-9.6-postgis-2.3 をインストールすれば、必要なパッケージがすべてインストールされます。
PostgreSQL は postgres ユーザ(PostgreSQL の管理者)で操作します。
Debian は PostgreSQL をインストールすると自動的に postgres ユーザが作成されます。
user@deb9-vmw:~$ cut -d: -f1 /etc/passwd
---
user
postgres
---
user
postgres
postgresユーザにパスワードを設定します。
user@deb9-vmw:~$ su -
パスワード:
root@deb9-vmw:~# passwd postgres
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
パスワード:
root@deb9-vmw:~# passwd postgres
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
PostgreSQL が動作しているテストしてみます。
端末でpostgres ユーザで次のように実行してください。
root@deb9-vmw:~# exit
ログアウト
user@deb9-vmw:~$ su - postgres
パスワード:
postgres@deb8-vmw:~$ psql -l
PostgreSQL にユーザを追加します。ログアウト
user@deb9-vmw:~$ su - postgres
パスワード:
postgres@deb8-vmw:~$ psql -l
データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+-------------+-------------------+----------------------- postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 行) (END)
ユーザはテストですのでセキュリティをあまり考えず、 Debian のユーザと同じにしました。
postgres@deb9-vmw:~$ createuser user
(user は Debianの一般ユーザと同じ)
8-2 データベースの作成
データベースを作成し、一般ユーザを登録します。
PostGIS ホームページ
http://postgis.net/
の Documentation ボタンをクリックします。
PostGIS - Documentation
http://postgis.net/documentation
の PostGIS 2.3(HTML)をクリックします。
PostGIS 2.3.3dev Manual
http://postgis.net/docs/manual-2.3/
の
Chapter 2. PostGIS Installation
http://postgis.net/docs/manual-2.1/postgis_installation.html
の 2.5. Creating a spatial database using EXTENSIONS を参考に東京都のデータのデータベースを作成します。
nippon というデータベースを作成します。
postgres@deb9-vmw:~$ createdb nippon
postgres@deb9-vmw:~$ psql -d nippon -c "CREATE EXTENSION postgis;"
CREATE EXTENSION
postgres@deb9-vmw:~$ psql -l
psql (9.6.3)
"help" でヘルプを表示します.
nippon=# \d
geography_columnspostgres@deb9-vmw:~$ psql -d nippon -c "CREATE EXTENSION postgis;"
CREATE EXTENSION
postgres@deb9-vmw:~$ psql -l
データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権 -----------+----------+------------------+-------------+-------------------+----------------------- nippon | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 行) (END)postgres@deb9-vmw:~$ psql nippon
psql (9.6.3)
"help" でヘルプを表示します.
nippon=# \d
リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+-------------------+----------+---------- public | geography_columns | ビュー | postgres public | geometry_columns | ビュー | postgres public | raster_columns | ビュー | postgres public | raster_overviews | ビュー | postgres public | spatial_ref_sys | テーブル | postgres (5 行)
ジオグラフィ型のカラム。「緯度/経度」を角度の単位(度)で表す地理座標「WGS 84経度緯度(SRID:4326)」だけサポートします。地球規模簿の2点間の距離を円弧で計算します。(4.2. PostGIS Geography Type 参照)
geometry_columns
ベクタデータで使用するジオメトリ型のカラム。
raster_columns
ラスタデータ型のカラム。
raster_overviews
基本ラスタテーブルの低解像度版カラム。
spatial_ref_sys
変換/再投影するために必要な空間参照系に関するOGC準拠のデータベーステーブル。
これらのオーナーを user に変更します。
nippon=# ALTER VIEW geography_columns OWNER TO user;
ALTER VIEW
nippon=# ALTER VIEW geometry_columns OWNER TO user;
ALTER VIEW
nippon=# ALTER VIEW raster_columns OWNER TO user;
ALTER VIEW
nippon=# ALTER VIEW raster_overviews OWNER TO user;
ALTER VIEW
nippon=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
nippon=# \d
ALTER VIEW
nippon=# ALTER VIEW geometry_columns OWNER TO user;
ALTER VIEW
nippon=# ALTER VIEW raster_columns OWNER TO user;
ALTER VIEW
nippon=# ALTER VIEW raster_overviews OWNER TO user;
ALTER VIEW
nippon=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
nippon=# \d
リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+-------------------+----------+-------- public | geography_columns | ビュー | user public | geometry_columns | ビュー | user public | raster_columns | ビュー | user public | raster_overviews | ビュー | user public | spatial_ref_sys | テーブル | user (5 行)
続けて東京都のデータを登録します。
nippon=# \q
postgres@deb9-vmw:~$ exit
ログアウト
user@deb9-vmw:~$ cd mapdata/nlni/tokyo/
user@deb9-vmw:~/mapdata/nlni/tokyo$ ls
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
postgres@deb9-vmw:~$ exit
ログアウト
user@deb9-vmw:~$ cd mapdata/nlni/tokyo/
user@deb9-vmw:~/mapdata/nlni/tokyo$ ls
KS-META-N03-17_13_170101.xml N03-17_13_170101.prj N03-17_13_170101.xml N03-170101_13_GML.zip N03-17_13_170101.shp N03-17_13_170101.dbf N03-17_13_170101.shxuser@deb9-vmw:~/mapdata/nlni/tokyo$ shp2pgsql -W sjis N03-17_13_170101.shp tokyo_kuiki > tokyo_kuiki.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
(shp2pgsql オプション -W カラムの属性の文字列を UTF-8 にエンコードします。
もし、「bash: shp2pgsql: コマンドが見つかりません」と表示されたら、Synaptic パッケージマネージャで「postgis」をインストールします。)
user@deb9-vmw:~/mapdata/nlni/tokyo$ psql -d nippon -f tokyo_kuiki.sql
user@deb9-vmw:~/mapdata/nlni/tokyo$ psql nippon
psql (9.6.3)
"help" でヘルプを表示します.
nippon=> \d
一般ユーザ user のパスワードを設定します。user@deb9-vmw:~/mapdata/nlni/tokyo$ psql nippon
psql (9.6.3)
"help" でヘルプを表示します.
nippon=> \d
リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+---------------------+------------+-------- public | geography_columns | ビュー | user public | geometry_columns | ビュー | user public | raster_columns | ビュー | user public | raster_overviews | ビュー | user public | spatial_ref_sys | テーブル | user public | tokyo_kuiki | テーブル | user public | tokyo_kuiki_gid_seq | シーケンス | user (7 行)nippon=> \d tokyo_kuiki
テーブル "public.tokyo_kuiki" 列 | 型 | 修飾語 ---------+------------------------+----------------------------------------------------------- gid | integer | not null default nextval('tokyo_kuiki_gid_seq'::regclass) n03_001 | character varying(10) | n03_002 | character varying(20) | n03_003 | character varying(20) | n03_004 | character varying(20) | n03_007 | character varying(5) | geom | geometry(MultiPolygon) | インデックス: "tokyo_kuiki_pkey" PRIMARY KEY, btree (gid) (END)
nippon=> ALTER USER user with password 'password(任意)';
ALTER ROLE
nippon=> \q
ALTER ROLE
nippon=> \q
マップファイル tokyo_pgis.map を作成します。
user@deb9-vmw:~/mapdata/nlni/tokyo$ cd ../../../mapfile/
user@deb9-vmw:~/mapfile$ cp tokyo_shp.map tokyo_pgis.map
user@deb9-vmw:~/mapfile$ vim tokyo_pgis.map
user@deb9-vmw:~/mapfile$ cp tokyo_shp.map tokyo_pgis.map
user@deb9-vmw:~/mapfile$ vim tokyo_pgis.map
MAP NAME tokyo_pgis_map STATUS ON SIZE 600 300 # EXTENT 136.069482 20.425119 153.986898 35.898424 EXTENT 138.85 35.4 140 35.975 UNITS DD # SHAPEPATH "../mapdata/nlni/tokyo" IMAGECOLOR 255 255 255 FONTSET "fonts.txt"
WEB IMAGEPATH "/home/user/public_html/ms_tmp/" IMAGEURL "/~user/ms_tmp/" END
LAYER NAME gyoseikuiki TYPE POLYGON STATUS ON # DATA "N03-17_13_170101.shp" CONNECTIONTYPE POSTGIS CONNECTION "dbname=nippon host=localhost user=user password='password'" DATA "geom from tokyo_kuiki" LABELITEM "n03_004" #「n」が小文字であることに注意してください CLASS NAME "City Boundaries" STYLE OUTLINECOLOR 153 153 153 END LABEL MINFEATURESIZE 40 TYPE TRUETYPE FONT vl-gothic ENCODING UTF-8 SIZE 8 END END END END #MAP END
http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=gyoseikuiki&map=/home/user/mapfile/tokyo_pgis.map
8-3 属性カラム内の検索
データベースの属性カラム内の検索を実行して、地図を表示してみます。
国土数値情報の「4. 交通」の「空港間流通量」をデータベース nippon に登録します。
a 「JPGIS2.1」の「空港間流通量」をクリックします。
b 「データのダウンロード(2.各データ詳細)」で、「全国」のチェックボックスをクリックしてチェックし、「次へ」ボタンをクリックします。
c 「データのダウンロード(3.ファイルの選択)」で、最新のデータのチェックボックスをクリックしてチェックします。(2017-7-4現在 平成26年度)
「次へ」ボタンをクリックします。
d アンケートに回答します。
e データのダウンロード(4.国土数値情報利用約款)の内容を読み、「上記のことを理解しました。」で「はい」ボタンをクリックします。
f データのダウンロード(5.ダウンロード)で「ダウンロード」ボタンをクリックします。
ダイアログボックス---ダウンロードしますか?の「OK」ボタンをクリックします。
user@deb9-vmw:~/mapfile$ cd ../ダウンロードuser@deb9-vmw:~/ダウンロード$ ls
---
S10b-14_GML.zip
---
user@deb9-vmw:~/ダウンロード$ mkdir kotsu
user@deb9-vmw:~/ダウンロード$ mv S10b-14_GML.zip kotsu/
user@deb9-vmw:~/ダウンロード$ cd kotsu/user@deb9-vmw:~/ダウンロード/kotsu$ ls
S10b-14_GML.zip
user@deb9-vmw:~/ダウンロード/kotsu$ unzip -j S10b-14_GML.zip
user@deb9-vmw:~/ダウンロード$ mv kotsu/ ../mapdata/nlni/
user@deb9-vmw:~/ダウンロード$ cd ../mapdata/nlni/kotsu/
user@deb9-vmw:~/mapdata/nlni/kotsu$ shp2pgsql -W sjis S10b-14_BetAport.shp logi_amt_bw_airport > logi_amt_bw_airport.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb9-vmw:~/mapdata/nlni/kotsu$ psql -d nippon -f logi_amt_bw_airport.sql
user@deb9-vmw:~/mapdata/nlni/kotsu$ cd
user@deb9-vmw:~$ psql nippon
psql (9.6.3)
"help" でヘルプを表示します.
nippon=> \dt
user@deb9-vmw:~$ cd mapfile/
user@deb9-vmw:~/mapfile$ vim tokyo_pgis.map
---
S10b-14_GML.zip
---
user@deb9-vmw:~/ダウンロード$ mkdir kotsu
user@deb9-vmw:~/ダウンロード$ mv S10b-14_GML.zip kotsu/
user@deb9-vmw:~/ダウンロード$ cd kotsu/user@deb9-vmw:~/ダウンロード/kotsu$ ls
S10b-14_GML.zip
user@deb9-vmw:~/ダウンロード/kotsu$ unzip -j S10b-14_GML.zip
Archive: S10b-14_GML.zip inflating: KS-META-S10b-14.xml inflating: KsjAppSchema-S10b-v1_1.xsd inflating: S10b-14.xml inflating: S10b-14_BetAport.dbf inflating: S10b-14_BetAport.shp inflating: S10b-14_BetAport.shxuser@deb9-vmw:~/ダウンロード/kotsu$ ls
KS-META-S10b-14.xml S10b-14_BetAport.dbf S10b-14_GML.zip KsjAppSchema-S10b-v1_1.xsd S10b-14_BetAport.shp S10b-14.xml S10b-14_BetAport.shxuser@deb9-vmw:~/ダウンロード/kotsu$ cd ../
user@deb9-vmw:~/ダウンロード$ mv kotsu/ ../mapdata/nlni/
user@deb9-vmw:~/ダウンロード$ cd ../mapdata/nlni/kotsu/
user@deb9-vmw:~/mapdata/nlni/kotsu$ shp2pgsql -W sjis S10b-14_BetAport.shp logi_amt_bw_airport > logi_amt_bw_airport.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb9-vmw:~/mapdata/nlni/kotsu$ psql -d nippon -f logi_amt_bw_airport.sql
user@deb9-vmw:~/mapdata/nlni/kotsu$ cd
user@deb9-vmw:~$ psql nippon
psql (9.6.3)
"help" でヘルプを表示します.
nippon=> \dt
リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+---------------------+----------+-------- public | logi_amt_bw_airport | テーブル | user public | spatial_ref_sys | テーブル | user public | tokyo_kuiki | テーブル | user (3 行)nippon=> \d logi_amt_bw_airport
テーブル "public.logi_amt_bw_airport" 列 | 型 | 修飾語 ----------+---------------------------+------------------------------------------------------------------- gid | integer | not null default nextval('logi_amt_bw_airport_gid_seq'::regclass) s10b_001 | character varying(36) | s10b_002 | character varying(36) | s10b_003 | character varying(36) | s10b_004 | character varying(36) | s10b_005 | double precision | s10b_006 | double precision | s10b_007 | double precision | s10b_008 | double precision | s10b_009 | double precision | geom | geometry(MultiLineString) | インデックス: "logi_amt_bw_airport_pkey" PRIMARY KEY, btree (gid) (End)nippon=> \q
user@deb9-vmw:~$ cd mapfile/
user@deb9-vmw:~/mapfile$ vim tokyo_pgis.map
--- LAYER NAME kukokanryutsuryo TYPE LINE STATUS ON # DATA "S10b-14_BetAport.shp" CONNECTIONTYPE POSTGIS CONNECTION "dbname=nippon host=localhost user=user password='password'" # DATA "geom from logi_amt_bw_airport" DATA "geom from (select * from logi_amt_bw_airport where s10b_001 = '東京') as myquery using unique geom using srid = -1" OPACITY 80 LABELITEM "s10b_004" CLASS NAME "Kuko Ryutsu" STYLE COLOR 0 255 0 END LABEL MINFEATURESIZE 5 POSITION lc TYPE TRUETYPE FONT kochi-gothic ENCODING UTF-8 SIZE 8 END END END ---
http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=gyoseikuiki&layer=kukokanryutsuryo&map=/home/user/mapfile/tokyo_pgis.map
8-4 pgAdminIII
pgAdminIII を使ってデータベースに接続します。
Introduction to PostGIS
http://workshops.boundlessgeo.com/postgis-intro/
の「4. Creating a Spatial Database(http://workshops.boundlessgeo.com/postgis-intro/creating_db.html)」を参考にします。
(次のように開きます。
PostGIS ホームページ
http://postgis.net/
の Documentation ボタンをクリックします。
PostGIS - Documentation
http://postgis.net/documentation
の「Tutorials, Cheatsheets, and Books」の「Tutorial: Introduction to PostGIS」をクリックします。
Introduction to PostGIS
http://workshops.boundlessgeo.com/postgis-intro/
の「Workshop Modules」の「4. Creating a Spatial Database」をクリックします。)
Synaptic パッケージマネージャで pgAdminIII をインストールします。
1 アクティビティ -> アプリケーションを表示する(左側の一番下のアイコン) -> pgAdminIII(2面めぐらい)
をクリックして起動します。
2 「サーバに接続の追加ボタン」
をクリックします。
3 「新しいサーバ登録」の「プロパティ」タブに次のように入力して「OK」ボタンをクリックします。
名前: PostGIS(任意)
ホスト: localhost
Port: 5432
サービス: (空欄)
DBメンテナンス: postgres
ユーザ名: user(postgres ユーザ)
パスワード: ●●●●●●●●(postgres ユーザのパスワード)
(その他はそのままで)
「指導的ヒント・パスワード保存」ウィンドウが表示されたら「OK」ボタンをクリックします。
5 テーブルtokyo_kuiki をクリックして選択し、「選択オブジェクトでデータをビュー」ボタンをクリックすると属性が表示されます。
0 件のコメント:
コメントを投稿