ラベル PostGIS の投稿を表示しています。 すべての投稿を表示
ラベル PostGIS の投稿を表示しています。 すべての投稿を表示

2019年10月9日水曜日

Debian 10 - 8 PostGIS の設定

8-1 PostGIS のインストール
PostGIS は、リレーショナルデータベース管理ソフトPostgreSQLに格納されているデータを空間データとして利用するための拡張機能です。PostGIS を使って地図を表示します。
操作の前に PostgreSQL について調べておくといいでしょう。

Synaptic パッケージマネージャで PostGIS を検索して postgresql-11-postgis-2.5 をインストールすれば、必要なパッケージがすべてインストールされます。

PostgreSQL は postgres ユーザ(PostgreSQL の管理者)で操作します。
Debian は PostgreSQL をインストールすると自動的に postgres ユーザが作成されます。

user@deb10-vmw:~$ cut -d: -f1 /etc/passwd
---
user
---
postgres

postgresユーザにパスワードを設定します。

user@deb10-vmw:~$ su -
パスワード:
root@deb10-vmw:~# passwd postgres
新しいパスワード:
新しいパスワードを再入力してください:
passwd: パスワードは正しく更新されました

PostgreSQL が動作しているテストしてみます。
端末でpostgres ユーザで次のように実行してください。

root@deb10-vmw:~# exit
ログアウト
user@deb10-vmw:~$ su - postgres
パスワード:
postgres@deb10-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)
PostgreSQL にユーザを追加します。
ユーザはテストですのでセキュリティをあまり考えず、 Debian のユーザと同じにしました。

postgres@deb10-vmw:~$ createuser user

(user は Debianの一般ユーザと同じ)


8-2 データベースの作成
データベースを作成し、一般ユーザを登録します。
PostGIS ホームページ
http://postgis.net/

の Documentation ボタンをクリックします。

PostGIS - Documentation
http://postgis.net/documentation

の PostGIS 2.5(HTML)をクリックします。

PostGIS 2.5.4dev Manual
http://postgis.net/docs/manual-2.5/



Chapter 2. PostGIS Installation
http://postgis.net/docs/manual-2.5/postgis_installation.html

の 2.5. Creating a spatial database using EXTENSIONS を参考に東京都のデータのデータベースを作成します。

nippon というデータベースを作成します。

postgres@deb10-vmw:~$ createdb nippon
postgres@deb10-vmw:~$ psql -d nippon -c "CREATE EXTENSION postgis;"
CREATE EXTENSION
postgres@deb10-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@deb10-vmw:~$ psql nippon
psql (11.5 (Debian 11.5-1+deb10u1))
"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 行)
geography_columns
ジオグラフィ型のカラム。「緯度/経度」を角度の単位(度)で表す地理座標「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
                リレーション一覧
 スキーマ |       名前        |    型    | 所有者 
----------+-------------------+----------+--------
 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@deb10-vmw:~$ exit
ログアウト
user@deb10-vmw:~$ cd mapdata/nlni/tokyo/
user@deb10-vmw:~/mapdata/nlni/tokyo$ ls
KS-META-N03-19_13_190101.xml  N03-19_13_190101.geojson  N03-19_13_190101.shx
N03-190101_13_GML.zip         N03-19_13_190101.prj      N03-19_13_190101.xml
N03-19_13_190101.dbf          N03-19_13_190101.shp

user@deb10-vmw:~/mapdata/nlni/tokyo$ shp2pgsql -W sjis N03-19_13_190101.shp tokyo_kuiki > tokyo_kuiki.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]

(shp2pgsql オプション -W カラムの属性の文字列を UTF-8 にエンコードします。
もし、「bash: shp2pgsql: コマンドが見つかりません」と表示されたら、Synaptic パッケージマネージャで「postgis」をインストールします。)

user@deb10-vmw:~/mapdata/nlni/tokyo$ psql -d nippon -f tokyo_kuiki.sql
user@deb10-vmw:~/mapdata/nlni/tokyo$ psql nippon
psql (11.5 (Debian 11.5-1+deb10u1))
"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"
   列    |           型           | 照合順序 | Null 値を許容 |                デフォルト                
---------+------------------------+----------+---------------+------------------------------------------
 gid     | integer                |          | not null      | 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)
一般ユーザ user のパスワードを設定します。

nippon=> ALTER USER user with password 'password(任意)';
ALTER ROLE
nippon=> \q

マップファイル tokyo_pgis.map を作成します。

user@deb10-vmw:~/mapdata/nlni/tokyo$ cd ../../../mapfile/
user@deb10-vmw:~/mapfile$ cp tokyo_shp.map tokyo_pgis.map
user@deb10-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-19_13_190101.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.ファイルの選択)」で、最新のデータのチェックボックスをクリックしてチェックします。(2019-10-7現在 平成26年度)
「次へ」ボタンをクリックします。

d アンケートに回答します。

e データのダウンロード(4.国土数値情報利用約款)の内容を読み、「上記のことを理解しました。」で「はい」ボタンをクリックします。

f データのダウンロード(5.ダウンロード)で「ダウンロード」ボタンをクリックします。
ダイアログボックス---ダウンロードしますか?の「OK」ボタンをクリックします。

user@deb10-vmw:~/mapfile$ cd ../ダウンロード
user@deb10-vmw:~/ダウンロード$ ls
---
S10b-14_GML.zip
---
user@deb10-vmw:~/ダウンロード$ mkdir kotsu
user@deb10-vmw:~/ダウンロード$ mv S10b-14_GML.zip kotsu/
user@deb10-vmw:~/ダウンロード$ cd kotsu/
user@deb10-vmw:~/ダウンロード/kotsu$ ls
S10b-14_GML.zip
user@deb10-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.shx
user@deb10-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.shx
user@deb10-vmw:~/ダウンロード/kotsu$ cd ../
user@deb10-vmw:~/ダウンロード$ mv kotsu/ ../mapdata/nlni/
user@deb10-vmw:~/ダウンロード$ cd ../mapdata/nlni/kotsu/
user@deb10-vmw:~/mapdata/nlni/kotsu$ shp2pgsql -W sjis S10b-14_BetAport.shp logi_amt_bw_airport > logi_amt_bw_airport.sql
Field s10b_005 is an FTDouble with width 16 and precision 0
Field s10b_006 is an FTDouble with width 16 and precision 0
Field s10b_007 is an FTDouble with width 16 and precision 0
Field s10b_008 is an FTDouble with width 16 and precision 0
Field s10b_009 is an FTDouble with width 16 and precision 0
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb10-vmw:~/mapdata/nlni/kotsu$ psql -d nippon -f logi_amt_bw_airport.sql
user@deb10-vmw:~/mapdata/nlni/kotsu$ cd
user@deb10-vmw:~$ psql nippon
psql (11.5 (Debian 11.5-1+deb10u1))
"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"
    列    |            型             | 照合順序 | Null 値を許容 |                    デフォルト                    
----------+---------------------------+----------+---------------+--------------------------------------------------
 gid      | integer                   |          | not null      | 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@deb10-vmw:~$ cd mapfile/
user@deb10-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 vl-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

「Tutorial: Introduction to PostGIS」をクリックします。

Introduction to PostGIS
https://postgis.net/workshops/postgis-intro/

の「Workshop Modules」の「4. Creating a Spatial Database」をクリックします。)

Synaptic パッケージマネージャで pgAdminIII(pgadmin3)をインストールします。

a アクティビティ -> アプリケーションを表示する(左側の一番下のアイコン) -> pgAdminIII
をクリックして起動します。



b 「サーバに接続の追加ボタン」
をクリックします。








c 「新しいサーバ登録」の「プロパティ」タブに次のように入力して「OK」ボタンをクリックします。

名前: PostGIS(任意)
ホスト: localhost
Port: 5432
サービス: (空欄)
DBメンテナンス: postgres
ユーザ名: user(postgres ユーザ)
パスワード: ●●●●●●●●(postgres ユーザのパスワード)
(その他はそのままで)

「指導的ヒント・パスワード保存」ウィンドウが表示されたら「OK」ボタンをクリックします。








d ツリーを開いていくと次のようになります。










次のようなエラーが表示されたら「OK」ボタンをクリックします。



e テーブルtokyo_kuiki をクリックして選択し、「選択オブジェクトでデータをビュー」ボタン
をクリックすると属性が表示されます。


2017年7月13日木曜日

Debian 9 - 8 PostGIS の設定

8-1 PostGIS のインストール
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

postgresユーザにパスワードを設定します。

user@deb9-vmw:~$ su -
パスワード:
root@deb9-vmw:~# passwd postgres
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました

PostgreSQL が動作しているテストしてみます。
端末でpostgres ユーザで次のように実行してください。

root@deb9-vmw:~# exit
ログアウト
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)
PostgreSQL にユーザを追加します。
ユーザはテストですのでセキュリティをあまり考えず、 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
                                         データベース一覧
   名前    |  所有者  | エンコーディング |  照合順序   | 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 行)
geography_columns
ジオグラフィ型のカラム。「緯度/経度」を角度の単位(度)で表す地理座標「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
                リレーションの一覧
 スキーマ |       名前        |    型    | 所有者 
----------+-------------------+----------+--------
 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
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.shx
user@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
                  リレーションの一覧
 スキーマ |        名前         |     型     | 所有者 
----------+---------------------+------------+--------
 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)
一般ユーザ user のパスワードを設定します。

nippon=> ALTER USER user with password 'password(任意)';
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
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
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.shx
user@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.shx
user@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」ボタンをクリックします。








4 ツリーを開いていくと次のようになります。










5 テーブルtokyo_kuiki をクリックして選択し、「選択オブジェクトでデータをビュー」ボタンをクリックすると属性が表示されます。






2016年7月9日土曜日

eコミュニティ・プラットフォーム - 5 eコミマップ インストールc

5-1 eコミマップのインストール
ここから準備するファイルは、ダウンロードサイトが記載されたメールの、「プログラムソースコードと共に利用するミドルウェア等」をクリックするとダウンロードされるファイル(ecommap-files-2.4.2.zip)にもあります。不具合が生じたときに対応しやすいように、こちらを使用することをおすすめします。

5-1-3 PostgreSQL と PostGIS のインストール
◆PostgreSQL のインストール
インストール手順書の「2.2.1 PostgreSQL と PostGIS のインストール」の「例 CentOS 6 系 64bit」を参考に PostgreSQL9.1 をインストールします。(インストール手順書では、PostgreSQL9.4 となっていますが PostGIS のスクリプトが正常に終了できませんでした。)「Le's postgres」の「yum で PostgreSQL をインストールしてみよう(http://lets.postgresql.jp/documents/tutorial/yum/yum)」も参考にします。

[user@centos6 ~]$ su -
パスワード:
[root@centos6 ~]# rpm -ivh https://download.postgresql.org/pub/repos/yum/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-6.noarch.rpm
https://download.postgresql.org/pub/repos/yum/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-6.noarch.rpm を取得中
準備中...                ########################################### [100%]
   1:pgdg-centos91          ########################################### [100%]

システム -> 管理 -> ソフトウェアの追加削除 をクリックします。


「ソフトウェアの追加削除」ウィンドウの システム -> ソフトウェアソース をクリックします。


「ソフトウェアソース」ウィンドウの一番下に「PostgreSQL9.1.6-x86_64」にチェックが付いていることを確認して「閉じる」ボタンをクリックします。


「ソフトウェアの追加削除」ウィンドウの システム -> パッケージ一覧をリフレッシュ をクリックします。


「ソフトウェアの追加削除」ウィンドウの「パッケージのコレクション」をクリックして、右側に表示される「PostgreSQL Database Server 9.1 PGDG」のチェックボックスをクリックして選択し、「適用」ボタンをクリックします。


「認証」ウィンドウが表示されたら root のパスワードを入力して「認証する」ボタンをクリックします。


「端末」を起動し、rpm -qa | grep postgres と入力して PostgreSQL がインストールされたか確認します。

[root@centos6 ~]# rpm -qa | grep postgres
postgresql91-9.1.22-1PGDG.rhel6.x86_64
postgresql91-server-9.1.22-1PGDG.rhel6.x86_64
postgresql91-contrib-9.1.22-1PGDG.rhel6.x86_64
postgresql91-libs-9.1.22-1PGDG.rhel6.x86_64


◆PostGIS のインストール
ダウンロードサイトが記載されたメールの「プログラムソースコードと共に利用するミドルウェア等」リンクをクリックしてダウンロードし、解凍します。
[root@centos6 ~]# exit
logout
[user@centos6 ~]$ cd ダウンロード
[user@centos6 ダウンロード]$ ls
---
ecommap-package-2.4.2a.zip
---
[user@centos6 ダウンロード]$ unzip ecommap-package-2.4.2a.zip 
Archive:  ecommap-package-2.4.2a.zip
  inflating: ecommap-package-2.4.2/Changes-2.4.2.txt  
  inflating: ecommap-package-2.4.2/ecommap-installer-2.4.2.tar.gz  
  inflating: ecommap-package-2.4.2/ecommap-updater-2.4.2.tar.gz  
  inflating: ecommap-package-2.4.2/ecommap-updater-README.txt  
  inflating: ecommap-package-2.4.2/geoserver-2.3.5-patch-webapps.tar.gz  
   creating: ecommap-package-2.4.2/server/
 extracting: ecommap-package-2.4.2/server/redhat-el6.tar.gz  
   creating: ecommap-package-2.4.2/server/unconfirmed/
  inflating: ecommap-package-2.4.2/server/unconfirmed/ecommap_ubuntu.txt  
 extracting: ecommap-package-2.4.2/server/unconfirmed/fedora10.tar.gz  
 extracting: ecommap-package-2.4.2/server/unconfirmed/redhat-el5.tar.gz  
[user@centos6 ダウンロード]$ cd ecommap-package-2.4.2/server/
[user@centos6 server]$ ls
redhat-el6.tar.gz
unconfirmed
[user@centos6 server]$ tar zxvf redhat-el6.tar.gz 
redhat-el6/
redhat-el6/install_yum_postgresql.sh
redhat-el6/pg_hba.conf
redhat-el6/postgis_proj4text_patch.sql
[user@centos6 server]$ cd redhat-el6
[user@centos6 redhat-el6]$ su
パスワード:
[root@centos6 redhat-el6]# sh install_yum_postgresql.sh 
---
            postgis_version
---------------------------------------
 1.5 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
(1 行)
最後に上記のように表示されたので、インストールは正常に完了しました。


◆PostgreSQLの設定の変更
/var/lib/pgsql/9.1/data/postgresql.conf を次のように修正します。
[root@centos6 redhat-el6]# vim /var/lib/pgsql/9.1/data/postgresql.conf 
---
listen_addresses = 'localhost' #コメントを外す

port = 5432 #コメントを外す
max_connections = 256 #100 -> 256
---

2015年8月26日水曜日

18 - 重ねた地図をもう少し 5 - PostGIS でレイヤを調べる

18-6 PostGIS でレイヤを調べる
「Introduction to PostGIS (Japanese)(http://workshops.boundlessgeo.com/postgis-intro-jp/index.html)」を参考に PostGIS の関数を使ってレイヤの重なりを調べます。

18-6-1 テーブルに SRID を追加
最初に登録した tokyo_kuiki と akiruno_kukaku に SRID を追加します。

1 アクティビティ -> アプリケーションを表示する(左側の一番下のアイコン) -> pgAdminIII(2面めぐらい)
をクリックして起動します。

2 「オブジェクトブラウザ」欄の「PostGIS」サーバ(11 - PostGIS - 4 pgAdminIII で作成したサーバ)が接続していなければ、ダブルクリックして接続します。








3 「任意の SQL を実行」ボタンをクリックします。

4 「SQL エディタ」に次の SQL クエリを入力して「クエリの実行」ボタンをクリックします。

UPDATE akiruno_kukaku SET geom = ST_SetSRID(geom, 2451);


同じように、次の SQL クエリを実行します。

UPDATE tokyo_kuiki SET geom = ST_SetSRID(geom, 4326);

18-6-2 あきる野市の自然公園の面積
はじめに、「SQL エディタ」に次の SQL クエリを実行して、あきる野市の面積調べます。akiruno_kukaku レイヤでは、

SELECT ST_Area(geom) FROM akiruno_kukaku where code = '13228';





1 21910112.1119498
2 11974599.9199866
3 3542105.53778772
4 36033559.3587739


akiruno_kukaku レイヤが、もともと4つに分割されているので、次の SQL で合計します。

SELECT  Sum(ST_Area(geom)) FROM akiruno_kukaku where code = '13228';




73460376.9284981
(73.46km2)

tokyos_kuikiレイヤでは、

SELECT ST_Area(ST_Transform(geom, 2451)) FROM tokyo_kuiki where n03_007 = '13228';




73335285.8776135
(73.34km2)

あきる野市のホームページ(http://www.city.akiruno.tokyo.jp/)の「市政情報」>「広報・情報公開」>「統計」ページの「1.土地・面積」のファイルには「73.34km2」とあります。

akiruno_kukaku レイヤであきる野市の自然公園の面積を調べます。「SQL エディタ」に次の SQL クエリを実行して、

SELECT ST_Area(ST_Intersection(a.geom, ST_Transform(b.geom, 2451))) FROM akiruno_kukaku a, shizenkoen b where a.code = '13228';











17 2480377.51765633
19 1072081.85082639
77 4397107.18094086
78 10430356.4828294
80 13686306.9929797

次の SQL で合計します。

SELECT Sum(ST_Area(ST_Intersection(a.geom, ST_Transform(b.geom, 2451)))) FROM akiruno_kukaku a, shizenkoen b where a.code = '13228';




32066230.02523268
(32.07km2)

tokyo_kuiki レイヤでは、

SELECT ST_Area(ST_Intersection(ST_Transform(a.geom, 2451),ST_Transform(b.geom, 2451))) FROM tokyo_kuiki a, shizenkoen b where a.n03_007 = '13228';













5 3551781.3365151
20 28455887.55361

次の SQL で合計します。

SELECT Sum(ST_Area(ST_Intersection(ST_Transform(a.geom, 2451),ST_Transform(b.geom, 2451)))) FROM tokyo_kuiki a, shizenkoen b where a.n03_007 = '13228';




32007668.8901251
(32.01km2)

8-6-2 あきる野市の自然公園内の建築物の数
8-6-2-1 kenchikubutsu レイヤの建築物の数
はじめに、kenchikubutsu レイヤの建築物の数を調べます。「SQL エディタ」に次の SQL クエリを実行します。

SELECT COUNT(gid) FROM kenchikubutsu;





111527

8-6-2-2 あきる野市内の建築物の数
akiruno_kukaku レイヤのあきる野市内の建築物の数を調べます。「SQL エディタ」に次の SQL クエリを実行します。

SELECT COUNT(c.gid) FROM akiruno_kukaku AS a JOIN kenchikubutsu AS c ON ST_Contains(a.geom, c.geom) where a.code = '13228';





43458

tokyo_kuiki レイヤのあきる野市内の建築物の数を調べます。「SQL エディタ」に次の SQL クエリを実行します。

SELECT COUNT(c.gid) FROM tokyo_kuiki AS a JOIN kenchikubutsu AS c ON ST_Contains(a.geom, ST_Transform(c.geom, 4326)) where a.n03_007 = '13228';





43504

あきる野市のホームページ(http://www.city.akiruno.tokyo.jp/)の「市政情報」>「広報・情報公開」>「統計」ページの「8.住宅・道路」のファイルには、「課税家屋の棟数、床面積」の「平成25年度」の「棟数」に「33,865」とあります。

8-6-2-3 あきる野市の自然公園内の建築物の数
akiruno_kukaku レイヤのあきる野市の自然公園内の建築物の数を調べます。「SQL エディタ」に次の SQL クエリを実行します。(1分ぐらいかかりました。)

SELECT COUNT(c.gid) FROM kenchikubutsu AS c JOIN akiruno_kukaku AS a ON ST_Contains(a.geom, c.geom) JOIN shizenkoen AS b ON ST_Contains(ST_Transform(b.geom, 2451), c.geom) where a.code = '13228';





7262

tokyo_kuiki レイヤのあきる野市の自然公園内の建築物の数を調べます。「SQL エディタ」に次の SQL クエリを実行します。(1分ぐらいかかりました。)

SELECT COUNT(c.gid) FROM kenchikubutsu AS c JOIN tokyo_kuiki AS a ON ST_Contains(a.geom, ST_Transform(c.geom, 4326)) JOIN shizenkoen AS b ON ST_Contains(b.geom, ST_Transform(c.geom, 4326)) where a.n03_007 = '13228';





7279

18 - 重ねた地図をもう少し 1 - データーベースに登録

18-1 シェイプファイルをデータベースに登録
作成した地図に以下のレイヤを追加します。

国土数値情報 3. 地域 <保護保全> 自然公園地域
自然公園 a001130020120311.shp
特別地域 a001130020120312.shp
特別保護地域 a001130020120313.shp

基盤地図情報 あきる野市
町字界線 20141001-CommBdry.shp
町字界点 20141001-CommPt.shp
建築物 20141001-BldA.shp

pgAdminIII を使ってシェイプファイルをデータベースに登録します。

1 アクティビティ -> アプリケーションを表示する(左側の一番下のアイコン) -> pgAdminIII(2面めぐらい)
をクリックして起動します。

2 「オブジェクトブラウザ」欄の「PostGIS」サーバ(11 - PostGIS - 4 pgAdminIII で作成したサーバ)が接続していなければ、ダブルクリックして接続します。








3 「プラグイン」メニューをクリックし、「PostGIS Shapefile and DBF loader」をクリックすると「PostGIS Shapefile Import/Export Manager」が起動します。


4 「PostGIS Shapefile Import/Export Manager」の「View connection details...」ボタンをクリックします。

5 「Post connection」に次のように入力し「OK」ボタンをクリックします。

Username: user(PostgresQL の)
Password: password(PostgresQL user の)
Server Host: localhost 5432
Database: nippon




6 「PostGIS Shapefile Import/Export Manager」の「Add Files」ボタンをクリックします。

7 「Select a Shape File」でファイル(a001130020120311.shp)を選択し、「Open」ボタンをクリックします。








8 「PostGIS Shapefile Import/Export Manager」の「ImportList」を次のように変更します。

Table: a001130020120311 -> shizenkoen
SRID: 0 -> 4326




9 「PostGIS Shapefile Import/Export Manager」の「Options...」ボタンをクリックします。




10 「Import Option」の「DBF file character encoding」を「SJIS」に変更して「OK」ボタンをクリックします。







他のシェイプファイルも次のように登録します。

国土数値情報 3. 地域 <保護保全> 自然公園地域
特別地域 Table: a001130020120312 -> tokubetsu
特別保護地域 Table: a001130020120313 -> tokubetsuhogo
SRID: 0 -> 4326

基盤地図情報 あきる野市
町字界線 Table: 20141001-CommBdry -> choazakaisen
町字界線 Table: 20141001-CommPt -> choazakaiten
建築物 Table: 20141001-BldA -> kenchikubutsu
SRID: 0 -> 2451

11 「PostGIS Shapefile Import/Export Manager」の「Import」ボタンをクリックします。







12 「PostGIS Shapefile Import/Export Manager」を閉じて、「リフレッシュ」ボタン
をクリックします。