ワークショップのサンプルデータを pgrouting-workshop データベースにインポートします。
はじめに、データベースを作成します。
名前が pgrouting-workshop でないと sampledata_notopo.sql がインポートできません。
また、所有者(オーナ)がスーパーユーザ出ないとエラーが発生します。ユーザにスーパーユーザの権限があれば OK です。
今回は postgres で操作します。
sampledata_notopo.sql をインポートすると postgis と pgrouting の拡張機能が追加されるようです。
user@deb8-vmw:~/ダウンロード$ cd
user@deb8-vmw:~$ su - postgres
パスワード:
postgres@deb8-vmw:~$ createdb pgrouting-workshop
postgres@deb8-vmw:~$ exit
user@deb8-vmw:~$ cd public_html/pgrouting-workshop/
user@deb8-vmw:~/public_html/pgrouting-workshop$ ls
data.tar.gz docs web
user@deb8-vmw:~/public_html/pgrouting-workshop$ tar -xvzf data.tar.gz
data/SHP/sampledata.prj
data/SHP/sampledata.qpj
data/SHP/sampledata.shp
data/sampledata_notopo.sql
data/sampledata.osm
data/SHP/
data/SHP/sampledata.dbf
data/fromAtoB.sql
data/sampledata_routing.sql
data/SHP/sampledata.shx
data/
data/SHP/sampledata.cpg
user@deb8-vmw:~/public_html/pgrouting-workshop$ su - postgres
パスワード:
postgres@deb8-vmw:~$ cd /home/user/public_html/pgrouting-workshop/data/
postgres@deb8-vmw:/home/user/public_html/pgrouting-workshop/data$ psql -d pgrouting-workshop -f sampledata_notopo.sql
SET
SET
SET
SET
SET
SET
psql:sampledata_notopo.sql:12: ERROR: 現在オープンしているデータベースを削除できません
psql:sampledata_notopo.sql:17: ERROR: ロケール名"en_US.UTF-8"は無効です
データベース "pgrouting-workshop" にユーザ"postgres"として接続しました。
SET
SET
SET
SET
SET
SET
psql:sampledata_notopo.sql:33: ERROR: スキーマ"public"はすでに存在します
COMMENT
CREATE EXTENSION
COMMENT
CREATE EXTENSION
COMMENT
CREATE EXTENSION
COMMENT
SET
SET
SET
CREATE TABLE
COPY 0
COPY 92435
CREATE INDEX
CREATE INDEX
REVOKE
REVOKE
GRANT
GRANT
postgres@deb8-vmw:/home/user/public_html/pgrouting-workshop/data$ cd
作成されたテーブルを見てみます。
postgres@deb8-vmw:~$ psql pgrouting-workshop
psql (9.4.3)
"help" でヘルプを表示します.
pgrouting-workshop=# \d
リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+-------------------+----------+---------- public | geography_columns | ビュー | postgres public | geometry_columns | ビュー | postgres public | raster_columns | ビュー | postgres public | raster_overviews | ビュー | postgres public | spatial_ref_sys | テーブル | postgres public | ways | テーブル | postgres (6 行)
道路ネットワークデータが含まれているテーブル ways の属性を見てみます。
pgrouting-workshop=# \d ways
テーブル "public.ways" 列 | 型 | 修飾語 ----------+---------------------------+---------- gid | integer | class_id | integer | not null length | double precision | name | text | osm_id | bigint | the_geom | geometry(LineString,4326) | インデックス: "ways_gid_idx" UNIQUE, btree (gid) "geom_idx" gist (the_geom)
19-4-2 4.2. トポロジーを計算する
データが正確なネットワーク・トポロジーを提供できるように、pgr_createTopology 関数を実行します。
最初に source と target の列を追加し、次に pgr_createTopology 関数を実行します。
pgrouting-workshop=# ALTER TABLE ways ADD COLUMN "source" integer;
ALTER TABLE
pgrouting-workshop=# ALTER TABLE ways ADD COLUMN "target" integer;
ALTER TABLE
pgrouting-workshop=# SELECT pgr_createTopology('ways', 0.00001, 'the_geom', 'gid');
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('ways',1e-05,'the_geom','gid','source','target','true')
NOTICE: Performing checks, pelase wait .....
NOTICE: Creating Topology, Please wait...
NOTICE: 1000 edges processed
---
NOTICE: 92000 edges processed
NOTICE: -------------> TOPOLOGY CREATED FOR 92435 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.ways is: public.ways_vertices_pgr
NOTICE: ----------------------------------------------
pgr_createtopology
--------------------
OK
(1 行)
19-4-3 4.3. インデックスを追加
ネットワークのテーブルが、source、target 列にインデックスを持つことを確認します。
次のコマンドを実行して、インデックスを追加します。私の場合は、次のように表示されました。
pgrouting-workshop=# CREATE INDEX ways_source_idx ON ways("source");
ERROR: リレーション"ways_source_idx"はすでに存在します
pgrouting-workshop=# CREATE INDEX ways_target_idx ON ways("target");
ERROR: リレーション"ways_target_idx"はすでに存在します
データベースは次のようになります。
pgrouting-workshop=# \d
リレーションの一覧 スキーマ | 名前 | 型 | 所有者 ----------+--------------------------+------------+---------- public | geography_columns | ビュー | postgres public | geometry_columns | ビュー | postgres public | raster_columns | ビュー | postgres public | raster_overviews | ビュー | postgres public | spatial_ref_sys | テーブル | postgres public | ways | テーブル | postgres public | ways_vertices_pgr | テーブル | postgres public | ways_vertices_pgr_id_seq | シーケンス | postgres (8 行)
テーブル ways の属性は、
pgrouting-workshop=# \d ways
テーブル "public.ways" 列 | 型 | 修飾語 ----------+---------------------------+---------- gid | integer | class_id | integer | not null length | double precision | name | text | osm_id | bigint | the_geom | geometry(LineString,4326) | source | integer | target | integer | インデックス: "ways_gid_idx" UNIQUE, btree (gid) "geom_idx" gist (the_geom) "ways_source_idx" btree (source) "ways_target_idx" btree (target)
詳細な説明は、ホームページを参照してください。
0 件のコメント:
コメントを投稿