2010年6月9日水曜日

OpenLayers57a OpenStreetMap & GeoWebCache - OpenStreetMap の表示 1

Open Street Map のレイヤをデータをダウンロードして自分の GeoServer に追加して表示します。

GeoServer and OpenStreetMap ページ
http://blog.geoserver.org/2009/01/30/geoserver-and-openstreetmap/

を参考に Open Street Map(OSM)を GeoServer の gwc にキャッシュします。

OSM をデータベース(PostGIS [PostgreSQL])に登録

OSM のデータをダウンロードします。
1 GeoServer and OpenStreetMap ページの 「download sections of the data set」リンクをクリックします。
2 Cloudmade の Mappers の Download ページ
http://downloads.cloudmade.com/
の Last maps update: 16 February 2010 の「Asia」リンクをクリックします。
3 Last maps update: 16 February 2010 の「World > Asia」の「Japan」リンクをクリックします。
4 「japan.shapefiles.zip」をクリックし、「japan.shapefiles.zip を開く」で「ファイルを保存」ボタンをクリックしてダウンロードします。
5 japan.shapefiles.zip を解凍します。

user@debian:~/Desktop$ unzip japan.shapefiles.zip
Archive: japan.shapefiles.zip
inflating: japan_water.shp
inflating: japan_administrative.prj
inflating: japan_poi.dbf
inflating: japan_poi.prj
inflating: japan_water.dbf
inflating: japan_coastline.dbf
inflating: japan_administrative.shp
inflating: japan_highway.prj
inflating: japan_coastline.shp
inflating: japan_natural.prj
inflating: readme.txt
inflating: japan_highway.shx
inflating: japan_natural.shp
inflating: japan_coastline.prj
inflating: japan_water.shx
inflating: japan_administrative.shx
inflating: japan_administrative.dbf
inflating: japan_highway.shp
inflating: japan_poi.shx
inflating: japan_highway.dbf
inflating: japan_poi.shp
inflating: japan_natural.dbf
inflating: japan_coastline.shx
inflating: japan_natural.shx
inflating: japan_water.prj
6 japan_shapefile フォルダに入れます。
user@debian:~/Desktop$ cd
user@debian:~$ mkdir download/japan_shapefile
user@debian:~$ mv Desktop/japan* download/japan_shapefile/

PostGIS に japan_highway.shp を追加します。

1 template_postgisをテンプレートとして、オーナーが user で osm というデータベースを作成します。

user@debian:~$ su - postgres
パスワード:
postgres@debian:~$ createdb -T template_postgis -O user osm
postgres@debian:~$ psql -l
List of databases
Name | Owner | Encoding
------------------+----------+----------
osm | user | UTF8
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
template_postgis | postgres | UTF8
tokyo | user | UTF8
tokyo_bmi | user | UTF8
(7 rows)

osm データベースの geometry_column テーブルと spatial_ref_sys テーブルのオーナーを user に変更します。

postgres@debian:~$ psql osm
Welcome to psql 8.3.9, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

osm=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | geometry_columns | table | postgres
public | spatial_ref_sys | table | postgres
(2 rows)

osm=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
osm=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
osm=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | spatial_ref_sys | table | user
(2 rows)

osm=# \q

shp2pgsqlコマンドを使ってシェイプファイルを sql ファイルを作成します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。

postgres@debian:~$ exit
logout
user@debian:~$ mv geoserver-2.0.1/data_dir/data/japan_shapefile/ download/
user@debian:~$ cd download/japan_shapefile/
user@debian:~/download/japan_shapefile$ shp2pgsql japan_highway.shp japan_highway > japan_highway.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]

psqlコマンドを使ってデータベースに登録します。
一般ユーザで sql ファイルのあるディレクトリに移動して、次のように入力します。

user@debian:~/download/japan_shapefile$ psql -d osm -f japan_highway.sql

メッセージが流れて、終了するまでに時間がかかります。
データベースを確かめてみます。

user@debian:~/download/japan_shapefile$ psql osm
Welcome to psql 8.3.9, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

osm=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | japan_highway | table | user
public | spatial_ref_sys | table | user
(3 rows)

osm=> \d japan_highway
Table "public.japan_highway"
Column | Type | Modifiers
----------+------------------------+-------------------------------------------------------------
gid | integer | not null default nextval('japan_highway_gid_seq'::regclass)
type | character varying(24) |
name | character varying(255) |
oneway | character varying(9) |
the_geom | geometry |
Indexes:
"japan_highway_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTILINESTRING'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = (-1))

osm=> \q

0 件のコメント: