私の場合の東京都のマップフィルの例です。
使う方は自己責任でお願いします。
■国土数値情報のデータのマップファイル nippon_dnli_tokyo_pgis.map のダウンロードページ
■基盤地図情報のデータのマップファイル nippon_bmi_tokyo_pgis.map のダウンロードページ
2011年4月18日月曜日
9 マップデータ 2 - 基盤地図情報
9-2 基盤地図情報
9-2-1 ダウンロード
国土地理院のホームページの基盤地図情報リンクボタンから、基盤地図情報の閲覧・ダウンロード->基盤地図情報ダウンロードサービスへ移動します。
国土地理院
http://www.gsi.go.jp/
基盤地図情報
http://www.gsi.go.jp/kiban/index.html
基盤地図情報の閲覧・ダウンロード
http://www.gsi.go.jp/kiban/etsuran.html
基盤地図情報ダウンロードサービス
http://fgd.gsi.go.jp/download/
データをシェイプファイルの変換するために、「基盤地図情報閲覧コンバートソフト FGDV」をダウンロードしました。
データ変換ツール FGDV は、Windows で動作します。
「基盤地図情報 縮尺レベル25,000」の「JPGIS形式」(XML でない方)をクリック。
「東京都」の左側の+をクリックし、表示されたもの全部(等高線は必要に応じて)にチェックをしました。
「選択して次へ」ボタンをクリックします。
「ダウンロードファイルリスト」の「ダウンロード」ボタンをクリックしてダウンロードしました。
東京都のフォルダを作成して、それぞれに入れてください。
9-2-2 基盤地図情報データからシェイプファイルを作成
FGDV は、Windows で動作するので、ファイルを Windows に転送します。
基盤地図情報閲覧コンバートソフトでダウンロードしたファイルをシェイプファイルにします。
インストールで作成されたフォルダのFGDV.exeをダブルクリックして起動します。
0 「新規プロジェクト」でファイル名を「東京都基盤地図」にします。
1 データを追加するため「追加」ボタンをクリックします。
2 基盤地図情報データのあるフォルダを「ファイルの場所」で指定し、「ファイルの種類」を「基盤地図情報(JPGIS)圧縮ファイル(*.zip)」を選び、表示されたファイルを全部選んで「開く」ボタンをクリックします。
3 「保存先フォルダ」の右側のボタンをクリックし変更がなければ「OK」をクリックします。
4 「新規プロジェクト作成」の「OK」をクリックします。
5 メニューバーの「コンバート」をクリックし、「シェープファイルへ出力」をクリックします。
6 「変換する要素」で必要なものにチェックをして、「出力先フォルダ」を指定して「OK」ボタンをクリックします。(基準点、標高点は変換しませんでした。)
7 「基盤地図情報ビューアー・コンバータ」ダイアログに結果が表示されるのでコピーして保存し、「OK」ボタンをクリックします。
東京都のデータ
行政区画 を AdmArea へ変換・出力しました
行政区画界線 を AdmBdry へ変換・出力しました
行政区画代表点 を AdmPt へ変換・出力しました
等高線 を Cntr へ変換・出力しました (*今回これは使いませんでした。)
水涯線 を WL へ変換・出力しました
海岸線 を Cstline へ変換・出力しました
建築物 を BldA へ変換・出力しました
道路縁 を RdEdg へ変換・出力しました
軌道の中心線 を RailCL へ変換・出力しました
AdmArea.dbfのタイトルが日本語なのでアルファベットにします。
OpenOfficeorg のCalc で開きます。
(私の場合は、Debian では修正後の保存ができなかったので、Windows で修正しました。)
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
行政コード -> code
AdmBdry.dbfのタイトルが日本語なのでアルファベットにします。
OpenOfficeorg のCalc で開きます。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
AdmPt.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
行政コード -> code
BldA.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
Cstline.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
RailCL.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
RdEdg.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
管理主体 -> manager
WL.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
9-2-3 シェイプファイルを登録
shp2pgsql と psql コマンドを使ってシェイプファイルをデータベースに登録します。
Windows 7 から Debian 6 へ転送します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ cd ../../bmi_shp/
user@deb6-vmw:~/deb-win/bmi_shp$ ls
AdmArea.dbf AdmBdry.shp BldA.dbf Cntr.shp RailCL.dbf RdEdg.shp
AdmArea.prj AdmBdry.shx BldA.prj Cntr.shx RailCL.prj RdEdg.shx
AdmArea.shp AdmPt.dbf BldA.shp Cstline.dbf RailCL.shp WL.dbf
AdmArea.shx AdmPt.prj BldA.shx Cstline.prj RailCL.shx WL.prj
AdmBdry.dbf AdmPt.shp Cntr.dbf Cstline.shp RdEdg.dbf WL.shp
AdmBdry.prj AdmPt.shx Cntr.prj Cstline.shx RdEdg.prj WL.shx
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis AdmArea.shp tokyo_kukaku > tokyo_kukaku.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis AdmBdry.shp tokyo_kukakusen > tokyo_kukakusen.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis AdmPt.shp tokyo_kukakuten > tokyo_kukakuten.sql
Shapefile type: Point
Postgis type: POINT[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis Cntr.shp tokyo_toko > tokyo_toko.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis WL.shp tokyo_suigai > tokyo_suigai.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis Cstline.shp tokyo_kaigan > tokyo_kaigan.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis BldA.shp tokyo_kenchiku > tokyo_kenchiku.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis RdEdg.shp tokyo_doro > tokyo_doro.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis RailCL.shp tokyo_kido > tokyo_kido.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ ls
AdmArea.dbf AdmPt.prj Cntr.shp RailCL.shx tokyo_doro.sql
AdmArea.prj AdmPt.shp Cntr.shx RdEdg.dbf tokyo_kaigan.sql
AdmArea.shp AdmPt.shx Cstline.dbf RdEdg.prj tokyo_kenchiku.sql
AdmArea.shx BldA.dbf Cstline.prj RdEdg.shp tokyo_kido.sql
AdmBdry.dbf BldA.prj Cstline.shp RdEdg.shx tokyo_kukaku.sql
AdmBdry.prj BldA.shp Cstline.shx WL.dbf tokyo_kukakusen.sql
AdmBdry.shp BldA.shx RailCL.dbf WL.prj tokyo_kukakuten.sql
AdmBdry.shx Cntr.dbf RailCL.prj WL.shp tokyo_suigai.sql
AdmPt.dbf Cntr.prj RailCL.shp WL.shx tokyo_toko.sql
template_postgis をテンプレートとしてオーナーが user で nippon_bmi というデータベースを作成します。
基盤地図情報と国土数値情報をデータベース上で比較することがある場合は、同じデータベースに登録した方がいいでしょう。
user@deb6-vmw:~/deb-win/bmi_shp$ su - postgres
パスワード:
postgres@deb6-vmw:~$ createdb -T template_postgis -O user nippon_bmi
postgres@deb6-vmw:~$ psql -l
nippon_bmi データベースの geometry_column テーブルと spatial_ref_sys テーブルのオーナーを user に変更します。
postgres@deb6-vmw:~$ psql nippon_bmi
psql (8.4.7)
"help" でヘルプを表示します.
nippon_bmi=# \d
nippon_bmi=# ALTER VIEW geography_columns OWNER TO user;
ALTER VIEW
nippon_bmi=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
nippon_bmi=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
nippon_bmi=# \d
9-2-4 nippon_bmi データベースに一般ユーザ user を追加します。
nippon_bmi=# CREATE USER user;
ERROR: ロール"user"はすでに存在します
nippon_bmi=# ALTER USER user with password 'balanced';
ALTER ROLE
nippon_bmi=# \q
データベースに登録します。
postgres@deb6-vmw:~$ exit
logout
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_doro.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kaigan.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kenchiku.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kukaku.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kukakusen.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kukakuten.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kido.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_suigai.sql
9-2-1 ダウンロード
国土地理院のホームページの基盤地図情報リンクボタンから、基盤地図情報の閲覧・ダウンロード->基盤地図情報ダウンロードサービスへ移動します。
国土地理院
http://www.gsi.go.jp/
基盤地図情報
http://www.gsi.go.jp/kiban/index.html
基盤地図情報の閲覧・ダウンロード
http://www.gsi.go.jp/kiban/etsuran.html
基盤地図情報ダウンロードサービス
http://fgd.gsi.go.jp/download/
データをシェイプファイルの変換するために、「基盤地図情報閲覧コンバートソフト FGDV」をダウンロードしました。
データ変換ツール FGDV は、Windows で動作します。
「基盤地図情報 縮尺レベル25,000」の「JPGIS形式」(XML でない方)をクリック。
「東京都」の左側の+をクリックし、表示されたもの全部(等高線は必要に応じて)にチェックをしました。
「選択して次へ」ボタンをクリックします。
「ダウンロードファイルリスト」の「ダウンロード」ボタンをクリックしてダウンロードしました。
東京都のフォルダを作成して、それぞれに入れてください。
9-2-2 基盤地図情報データからシェイプファイルを作成
FGDV は、Windows で動作するので、ファイルを Windows に転送します。
基盤地図情報閲覧コンバートソフトでダウンロードしたファイルをシェイプファイルにします。
インストールで作成されたフォルダのFGDV.exeをダブルクリックして起動します。
0 「新規プロジェクト」でファイル名を「東京都基盤地図」にします。
1 データを追加するため「追加」ボタンをクリックします。
2 基盤地図情報データのあるフォルダを「ファイルの場所」で指定し、「ファイルの種類」を「基盤地図情報(JPGIS)圧縮ファイル(*.zip)」を選び、表示されたファイルを全部選んで「開く」ボタンをクリックします。
3 「保存先フォルダ」の右側のボタンをクリックし変更がなければ「OK」をクリックします。
4 「新規プロジェクト作成」の「OK」をクリックします。
5 メニューバーの「コンバート」をクリックし、「シェープファイルへ出力」をクリックします。
6 「変換する要素」で必要なものにチェックをして、「出力先フォルダ」を指定して「OK」ボタンをクリックします。(基準点、標高点は変換しませんでした。)
7 「基盤地図情報ビューアー・コンバータ」ダイアログに結果が表示されるのでコピーして保存し、「OK」ボタンをクリックします。
東京都のデータ
行政区画 を AdmArea へ変換・出力しました
行政区画界線 を AdmBdry へ変換・出力しました
行政区画代表点 を AdmPt へ変換・出力しました
等高線 を Cntr へ変換・出力しました (*今回これは使いませんでした。)
水涯線 を WL へ変換・出力しました
海岸線 を Cstline へ変換・出力しました
建築物 を BldA へ変換・出力しました
道路縁 を RdEdg へ変換・出力しました
軌道の中心線 を RailCL へ変換・出力しました
AdmArea.dbfのタイトルが日本語なのでアルファベットにします。
OpenOfficeorg のCalc で開きます。
(私の場合は、Debian では修正後の保存ができなかったので、Windows で修正しました。)
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
行政コード -> code
AdmBdry.dbfのタイトルが日本語なのでアルファベットにします。
OpenOfficeorg のCalc で開きます。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
AdmPt.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
行政コード -> code
BldA.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
Cstline.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
RailCL.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
RdEdg.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
管理主体 -> manager
WL.dbfのタイトルが日本語なのでアルファベットにします。
存在期間自 -> presence
整備完了日 -> finished
表示区分 -> category
種別 -> type
名称 -> name
user@deb6-vmw:~/bmi/tokyo_shp$ ogrinfo -summary AdmArea.shp AdmArea
INFO: Open of `AdmArea.shp'
using driver `ESRI Shapefile' successful.
Layer name: AdmArea
Geometry: Polygon
Feature Count: 323
Extent: (-619709.111772, -606129.469810) - (1222781.861788, 1101432.881066)
Layer SRS WKT:
PROJCS["JGD2000_Japan_Zone_14",
GEOGCS["GCS_JGD_2000",
DATUM["Japanese_Geodetic_Datum_2000",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",142],
PARAMETER["Scale_Factor",0.9999],
PARAMETER["Latitude_Of_Origin",26],
UNIT["Meter",1.0]]
ID: String (7.0)
UUID: String (24.0)
PRESENCE: Integer (8.0)
FINISED: Integer (8.0)
ORGGILVL: String (5.0)
ORGMDID: String (3.0)
CATEGORY: String (1.0)
TYPE: String (6.0)
NAME: String (25.0)
CODE: Integer (5.0)
9-2-3 シェイプファイルを登録
shp2pgsql と psql コマンドを使ってシェイプファイルをデータベースに登録します。
Windows 7 から Debian 6 へ転送します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ cd ../../bmi_shp/
user@deb6-vmw:~/deb-win/bmi_shp$ ls
AdmArea.dbf AdmBdry.shp BldA.dbf Cntr.shp RailCL.dbf RdEdg.shp
AdmArea.prj AdmBdry.shx BldA.prj Cntr.shx RailCL.prj RdEdg.shx
AdmArea.shp AdmPt.dbf BldA.shp Cstline.dbf RailCL.shp WL.dbf
AdmArea.shx AdmPt.prj BldA.shx Cstline.prj RailCL.shx WL.prj
AdmBdry.dbf AdmPt.shp Cntr.dbf Cstline.shp RdEdg.dbf WL.shp
AdmBdry.prj AdmPt.shx Cntr.prj Cstline.shx RdEdg.prj WL.shx
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis AdmArea.shp tokyo_kukaku > tokyo_kukaku.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis AdmBdry.shp tokyo_kukakusen > tokyo_kukakusen.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis AdmPt.shp tokyo_kukakuten > tokyo_kukakuten.sql
Shapefile type: Point
Postgis type: POINT[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis Cntr.shp tokyo_toko > tokyo_toko.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis WL.shp tokyo_suigai > tokyo_suigai.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis Cstline.shp tokyo_kaigan > tokyo_kaigan.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis BldA.shp tokyo_kenchiku > tokyo_kenchiku.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis RdEdg.shp tokyo_doro > tokyo_doro.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ shp2pgsql -W sjis RailCL.shp tokyo_kido > tokyo_kido.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/bmi_shp$ ls
AdmArea.dbf AdmPt.prj Cntr.shp RailCL.shx tokyo_doro.sql
AdmArea.prj AdmPt.shp Cntr.shx RdEdg.dbf tokyo_kaigan.sql
AdmArea.shp AdmPt.shx Cstline.dbf RdEdg.prj tokyo_kenchiku.sql
AdmArea.shx BldA.dbf Cstline.prj RdEdg.shp tokyo_kido.sql
AdmBdry.dbf BldA.prj Cstline.shp RdEdg.shx tokyo_kukaku.sql
AdmBdry.prj BldA.shp Cstline.shx WL.dbf tokyo_kukakusen.sql
AdmBdry.shp BldA.shx RailCL.dbf WL.prj tokyo_kukakuten.sql
AdmBdry.shx Cntr.dbf RailCL.prj WL.shp tokyo_suigai.sql
AdmPt.dbf Cntr.prj RailCL.shp WL.shx tokyo_toko.sql
template_postgis をテンプレートとしてオーナーが user で nippon_bmi というデータベースを作成します。
基盤地図情報と国土数値情報をデータベース上で比較することがある場合は、同じデータベースに登録した方がいいでしょう。
user@deb6-vmw:~/deb-win/bmi_shp$ su - postgres
パスワード:
postgres@deb6-vmw:~$ createdb -T template_postgis -O user nippon_bmi
postgres@deb6-vmw:~$ psql -l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
------------------+----------+------------------+-------------+-------------------+-----------------------
nippon_bmi | user | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
nippon_dnli | user | 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
template_postgis | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
(6 行)
(stdin):q
nippon_bmi データベースの geometry_column テーブルと spatial_ref_sys テーブルのオーナーを user に変更します。
postgres@deb6-vmw:~$ psql nippon_bmi
psql (8.4.7)
"help" でヘルプを表示します.
nippon_bmi=# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+-------------------+----------+----------
public | geography_columns | ビュー | postgres
public | geometry_columns | テーブル | postgres
public | spatial_ref_sys | テーブル | postgres
(3 行)
nippon_bmi=# ALTER VIEW geography_columns OWNER TO user;
ALTER VIEW
nippon_bmi=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
nippon_bmi=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
nippon_bmi=# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+-------------------+----------+--------
public | geography_columns | ビュー | user
public | geometry_columns | テーブル | user
public | spatial_ref_sys | テーブル | user
(3 行)
9-2-4 nippon_bmi データベースに一般ユーザ user を追加します。
nippon_bmi=# CREATE USER user;
ERROR: ロール"user"はすでに存在します
nippon_bmi=# ALTER USER user with password 'balanced';
ALTER ROLE
nippon_bmi=# \q
データベースに登録します。
postgres@deb6-vmw:~$ exit
logout
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_doro.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kaigan.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kenchiku.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kukaku.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kukakusen.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kukakuten.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_kido.sql
user@deb6-vmw:~/deb-win/bmi_shp$ psql -d nippon_bmi -f tokyo_suigai.sql
9 マップデータ 1 - 国土数値情報
9-1 国土数値情報
9-1-1 ダウンロード
国土交通相国土計画局GISホームページへようこそ
http://www.mlit.go.jp/kokudokeikaku/gis/index.html
の、国土数値情報ダウンロードサービス
http://nlftp.mlit.go.jp/ksj/index.html
の、JPGIS準拠データのダウンロードサービス
http://nlftp.mlit.go.jp/ksj/jpgis/jpgis_datalist.html
からデータをダウンロードします。
目的のデータのリンクをクリックして表示されるデータの詳細ページの「XMLスキーマ等について」の項に「データ変換ツール」リンクがあるので、表示されるサイトのないようにしたがってインストールしてください。
データ変換ツール ksjTool は、Windows で動作します。
はじめから、データを Windows にダウンロードしておくと工程が一つ少なくなります。
国土数値情報
N03-100329_13 行政区域(面)(東京)平成21年
N02-08 鉄道(線点)(全国)平成21年
W09-05 湖沼(面)(全国)平成17年
W05-08_13 河川(線点)(東京)平成20年
P02-06_13 公共施設(点)(東京)平成18年
ダウンロードしたファイルを解凍します。Windows で解凍するとフォルダ付のファイルになります。
Debian の場合:
N03-100329_13.zipを右クリック->書庫マネージャで開く->次の2つのファイルを選択して展開
N03-100329_13.xml
KS-META-N03-100329_13.xml
または、端末(Terminal)で次のように入力して実行します。
この圧縮ファイルは解凍後にフォルダが作成されないので、mapdataの中にtokyoのフォルダを作成してこれらのファイルを移動しておくとわかりやすくなります。
Windows7 の場合:
N03-100329_13.zipを右クリック->すべて展開
9-1-2 国土数値情報データからシェイプファイルを作成
ksjTool は、Windows で動作するので、ファイルを Windows に転送します。
メニューの 場所 -> ネットワーク をクリックします。
パスワードを設定しているときはパスワードを入力し「接続する」ボタンをクリックします。


データ変換ツールでダウンロードしたファイルをシェイプファイルにします。
Windows のスタートメニューの ksjtoolクリックして起動します。
1 「変更元」の「参照」ボタンをクリックして解凍したファイルのあるフォルダを選択します。
(「サブディレクトリを変換対象に含める」にチェックをつけると変換先も同じディレクトリ構造になります。)
2 「変更先」の「参照」ボタンをクリックして変換したシェイプファイルの保存フォルダを選択します。
3 「変換」ボタンをクリックします。
(変換に失敗したときはやり直すか、データごとに変換してみてください。)
9-1-3 シェイプファイルをデータベースに登録
shp2pgsql と psql コマンドを使ってシェイプファイルをデータベースに登録します。
ファイルを Debian に転送します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ ls
N03-100329_13_EC01.dbf N03-100329_13_EC01.shp N03-100329_13_EC01.shx
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ shp2pgsql -W sjis N03-100329_13_EC01.shp tokyo_kuiki > tokyo_kuiki.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ psql -d nippon_dnli -f tokyo_kuiki.sql
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ psql nippon_dnli
psql (8.4.7)
"help" でヘルプを表示します.
nippon_dnli=> \dt
nippon_dnli=> \d tokyo_kuiki
nippon_dnli=> \q
他のデータも登録します。
参考に作業内容を載せておきます。
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ cd ../N02-08
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ ls
N02-08_EB02.dbf N02-08_EB02.shx N02-08_EB03.shp
N02-08_EB02.shp N02-08_EB03.dbf N02-08_EB03.shx
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ shp2pgsql -W sjis N02-08_EB02.shp railroad02 > railroad02.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ shp2pgsql -W sjis N02-08_EB03.shp railroad03 > railroad03.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ psql -d nippon_dnli -f railroad02.sql
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ psql -d nippon_dnli -f railroad03.sql
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ cd ../W09-05/
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ ls
W09-05_GC01.dbf W09-05_GC01.shp W09-05_GC01.shx
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ shp2pgsql -W sjis W09-05_GC01.shp kosho > kosho.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ psql -d nippon_dnli -f kosho.sql
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ cd ../W05-08_13/
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ ls
W05-08_13_GB02.dbf W05-08_13_GB02.shx W05-08_13_GB03.shp
W05-08_13_GB02.shp W05-08_13_GB03.dbf W05-08_13_GB03.shx
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ shp2pgsql -W sjis W05-08_13_GB02.shp tokyo_kasen02 > tokyo_kasen02.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ shp2pgsql -W sjis W05-08_13_GB03.shp tokyo_kasen03 > tokyo_kasen03.sql
Shapefile type: Point
Postgis type: POINT[2]
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ psql -d nippon_dnli -f tokyo_kasen02.sql
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ psql -d nippon_dnli -f tokyo_kasen03.sql
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ cd ../P02-06_13/
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ ls
P02-06_13_FB01.dbf P02-06_13_FB01.shp P02-06_13_FB01.shx
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ shp2pgsql -W sjis P02-06_13_FB01.shp tokyo_pf > tokyo_pf.sql
Shapefile type: Point
Postgis type: POINT[2]
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ psql -d nippon_dnli -f tokyo_pf.sql
9-1-1 ダウンロード
国土交通相国土計画局GISホームページへようこそ
http://www.mlit.go.jp/kokudokeikaku/gis/index.html
の、国土数値情報ダウンロードサービス
http://nlftp.mlit.go.jp/ksj/index.html
の、JPGIS準拠データのダウンロードサービス
http://nlftp.mlit.go.jp/ksj/jpgis/jpgis_datalist.html
からデータをダウンロードします。
目的のデータのリンクをクリックして表示されるデータの詳細ページの「XMLスキーマ等について」の項に「データ変換ツール」リンクがあるので、表示されるサイトのないようにしたがってインストールしてください。
データ変換ツール ksjTool は、Windows で動作します。
はじめから、データを Windows にダウンロードしておくと工程が一つ少なくなります。
国土数値情報
N03-100329_13 行政区域(面)(東京)平成21年
N02-08 鉄道(線点)(全国)平成21年
W09-05 湖沼(面)(全国)平成17年
W05-08_13 河川(線点)(東京)平成20年
P02-06_13 公共施設(点)(東京)平成18年
ダウンロードしたファイルを解凍します。Windows で解凍するとフォルダ付のファイルになります。
Debian の場合:
N03-100329_13.zipを右クリック->書庫マネージャで開く->次の2つのファイルを選択して展開
N03-100329_13.xml
KS-META-N03-100329_13.xml
または、端末(Terminal)で次のように入力して実行します。
user@deb6-vmw:~/Downloads/dnli/tokyo$ unzip N03-100329_13.zip
inflating: N03-100329_13.xml
inflating: KS-META-N03-100329_13.xml
この圧縮ファイルは解凍後にフォルダが作成されないので、mapdataの中にtokyoのフォルダを作成してこれらのファイルを移動しておくとわかりやすくなります。
Windows7 の場合:
N03-100329_13.zipを右クリック->すべて展開
9-1-2 国土数値情報データからシェイプファイルを作成
ksjTool は、Windows で動作するので、ファイルを Windows に転送します。
メニューの 場所 -> ネットワーク をクリックします。
パスワードを設定しているときはパスワードを入力し「接続する」ボタンをクリックします。


データ変換ツールでダウンロードしたファイルをシェイプファイルにします。
Windows のスタートメニューの ksjtoolクリックして起動します。
1 「変更元」の「参照」ボタンをクリックして解凍したファイルのあるフォルダを選択します。
(「サブディレクトリを変換対象に含める」にチェックをつけると変換先も同じディレクトリ構造になります。)
2 「変更先」の「参照」ボタンをクリックして変換したシェイプファイルの保存フォルダを選択します。
3 「変換」ボタンをクリックします。
(変換に失敗したときはやり直すか、データごとに変換してみてください。)
user@deb6-vmw:~/dnli_shp/tokyo/N03-100329_13$ ogrinfo -summary N03-100329_13_EC01.shp N03-100329_13_EC01
INFO: Open of `N03-100329_13_EC01.shp'
using driver `ESRI Shapefile' successful.
Layer name: N03-100329_13_EC01
Geometry: Polygon
Feature Count: 3298
Extent: (136.069482, 20.425119) - (153.986900, 35.898424)
Layer SRS WKT:
(unknown)
PRN: String (6.0)
SUN: String (1.0)
CON: String (8.0)
CN2: String (10.0)
AAC: String (5.0)
9-1-3 シェイプファイルをデータベースに登録
shp2pgsql と psql コマンドを使ってシェイプファイルをデータベースに登録します。
ファイルを Debian に転送します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ ls
N03-100329_13_EC01.dbf N03-100329_13_EC01.shp N03-100329_13_EC01.shx
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ shp2pgsql -W sjis N03-100329_13_EC01.shp tokyo_kuiki > tokyo_kuiki.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ psql -d nippon_dnli -f tokyo_kuiki.sql
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ psql nippon_dnli
psql (8.4.7)
"help" でヘルプを表示します.
nippon_dnli=> \dt
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------------------+----------+--------
public | geometry_columns | テーブル | user
public | spatial_ref_sys | テーブル | user
public | tokyo_kuiki | テーブル | user
(3 行)
nippon_dnli=> \d tokyo_kuiki
テーブル "public.tokyo_kuiki"
カラム | 型 | 修飾語
----------+-----------------------+--------------------------------------------------------------
gid | integer | not null デフォルト nextval('tokyo_kuiki_gid_seq'::regclass)
prn | character varying(6) |
sun | character varying(1) |
con | character varying(8) |
cn2 | character varying(10) |
aac | character varying(5) |
the_geom | geometry |
インデックス:
"tokyo_kuiki_pkey" PRIMARY KEY, btree (gid)
CHECK 制約:
"enforce_dims_the_geom" CHECK (st_ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (st_srid(the_geom) = (-1))
nippon_dnli=> \q
他のデータも登録します。
参考に作業内容を載せておきます。
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ cd ../N02-08
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ ls
N02-08_EB02.dbf N02-08_EB02.shx N02-08_EB03.shp
N02-08_EB02.shp N02-08_EB03.dbf N02-08_EB03.shx
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ shp2pgsql -W sjis N02-08_EB02.shp railroad02 > railroad02.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ shp2pgsql -W sjis N02-08_EB03.shp railroad03 > railroad03.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ psql -d nippon_dnli -f railroad02.sql
user@deb6-vmw:~/deb-win/dnli_shp/N02-08$ psql -d nippon_dnli -f railroad03.sql
user@deb6-vmw:~/deb-win/dnli_shp/N03-100329_13$ cd ../W09-05/
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ ls
W09-05_GC01.dbf W09-05_GC01.shp W09-05_GC01.shx
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ shp2pgsql -W sjis W09-05_GC01.shp kosho > kosho.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ psql -d nippon_dnli -f kosho.sql
user@deb6-vmw:~/deb-win/dnli_shp/W09-05$ cd ../W05-08_13/
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ ls
W05-08_13_GB02.dbf W05-08_13_GB02.shx W05-08_13_GB03.shp
W05-08_13_GB02.shp W05-08_13_GB03.dbf W05-08_13_GB03.shx
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ shp2pgsql -W sjis W05-08_13_GB02.shp tokyo_kasen02 > tokyo_kasen02.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ shp2pgsql -W sjis W05-08_13_GB03.shp tokyo_kasen03 > tokyo_kasen03.sql
Shapefile type: Point
Postgis type: POINT[2]
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ psql -d nippon_dnli -f tokyo_kasen02.sql
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ psql -d nippon_dnli -f tokyo_kasen03.sql
user@deb6-vmw:~/deb-win/dnli_shp/W05-08_13$ cd ../P02-06_13/
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ ls
P02-06_13_FB01.dbf P02-06_13_FB01.shp P02-06_13_FB01.shx
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ shp2pgsql -W sjis P02-06_13_FB01.shp tokyo_pf > tokyo_pf.sql
Shapefile type: Point
Postgis type: POINT[2]
user@deb6-vmw:~/deb-win/dnli_shp/P02-06_13$ psql -d nippon_dnli -f tokyo_pf.sql
2009年10月11日日曜日
OpenLayers で東京都の地図表示 10d Google Pisca で位置情報のある写真を表示4
ポップアップ表示をするため、KML Layer Example(sundials.html)を参考に次のコードを追加します。
前述のコードは削除してください。
前述のコードは削除してください。
---
var sundials = new OpenLayers.Layer.Vector("西立川駅", {
projection: map.displayProjection,
strategies: [new OpenLayers.Strategy.Fixed()], //一度だけ feature を要求
protocol: new OpenLayers.Protocol.HTTP({ //ベクトルレイヤのための基本的な HTTP プロトコル
url: "西立川駅.kml",
format: new OpenLayers.Format.KML({
extractStyles: true, //スタイルの週出
extractAttributes: true //属性の抽出
})
})
});
map.addLayer(sundials);
select = new OpenLayers.Control.SelectFeature(sundials);
sundials.events.on({
"featureselected": onFeatureSelect, // ポップアップ表示時のPointの色
"featureunselected": onFeatureUnselect // ポップアップを閉じたとき元に戻す
});
map.addControl(select);
select.activate();
map.addControl(new OpenLayers.Control.LayerSwitcher());
---
function onPopupClose(evt) {
select.unselectAll();
}
function onFeatureSelect(event) {
var feature = event.feature;
// Since KML is user-generated, do naive protection against
// Javascript.
var content = "<h2>"+feature.attributes.firstChild.name + "</h2>" + feature.attributes.description; // Placemark の子要素 name と description の表示
if (content.search("<script") != -1) {
content = "Content contained Javascript! Escaped content below.<br />" + content.replace(/</g, "<");
}
popup = new OpenLayers.Popup.FramedCloud("chicken",
feature.geometry.getBounds().getCenterLonLat(),
new OpenLayers.Size(100,100),
content,
null, true, onPopupClose);
feature.popup = popup;
map.addPopup(popup);
}
function onFeatureUnselect(event) {
var feature = event.feature;
if(feature.popup) {
map.removePopup(feature.popup);
feature.popup.destroy();
delete feature.popup;
}
}
</script>
---
2009年10月10日土曜日
OpenLayers で東京都の地図表示 10c Google Pisca で位置情報のある写真を表示3
KML ファイルを Eclipse にインポートして OpenLayers で表示します。
1 Eclipse のメニューバーの ファイル->インポートをクリックします。
2 「選択」ダイアログで「ファイルシステムをクリックして「次へ」ボタンをクリックします。
3 「次のディレクトリーから」右側の「参照」ボタンクリックします。
4 KML ファイルがあるフォルダをクリックして「OK」ボタンをクリックします。
5 「ファイル・システム」ダイアログで KML ファイルをチェックして「宛先」を確認し、「完了」ボタンをクリックします。
6 画像も同じようにインポートします。
Eclipse で KML ファイルを開くときは、ファイルを右クリックして アプリケーションから開く->テキストエディタ をクリックします。
画像(NEC_0036.JPG)の位置を修正します。
tokyo_bmi_pgis_img03.html に次のコードを追加します。

このレイヤを表示すると、前回設定した GeoRSS で表示したマーカをクリックしてもポップアップ表示しません。
レイヤスイッチャーでどちらかだけ表示してください。
1 Eclipse のメニューバーの ファイル->インポートをクリックします。
2 「選択」ダイアログで「ファイルシステムをクリックして「次へ」ボタンをクリックします。
3 「次のディレクトリーから」右側の「参照」ボタンクリックします。
4 KML ファイルがあるフォルダをクリックして「OK」ボタンをクリックします。
5 「ファイル・システム」ダイアログで KML ファイルをチェックして「宛先」を確認し、「完了」ボタンをクリックします。
6 画像も同じようにインポートします。
Eclipse で KML ファイルを開くときは、ファイルを右クリックして アプリケーションから開く->テキストエディタ をクリックします。
画像(NEC_0036.JPG)の位置を修正します。
---
<img src="NEC_0036.JPG">
---
tokyo_bmi_pgis_img03.html に次のコードを追加します。
---
// ここから追加
map.addLayer(new OpenLayers.Layer.GML("西立川駅", "西立川駅.kml",
{
format: OpenLayers.Format.KML,
formatOptions: {
extractStyles: true,
extractAttributes: true
}
}));
// ここまで
map.addControl(new OpenLayers.Control.LayerSwitcher());
---

このレイヤを表示すると、前回設定した GeoRSS で表示したマーカをクリックしてもポップアップ表示しません。
レイヤスイッチャーでどちらかだけ表示してください。
2009年10月6日火曜日
OpenLayers で東京都の地図表示 9 Google Pisca ウェッブアルバム の GeoRSS の表示
Google のサービスを使って画像を地図上に表示してみました。
1 Google Pisca ウェッブアルバムにログインします。
2 画像のないときはアップロードします。
2-1 「アップロード」ボタンをクリックします。
2-2 「新規アルバムを作成」リンクをクリックします。
2-3 「タイトル」を入力します。
「マップで場所を表示」は後で設定します。
「共有 マイギャラリーで」は「一般公開」にします。
「続行」ボタンをクリックします。
2-4 「アップロードする写真を選択」で「参照」ボタンをクリックして画像を選択します。
「アップロードを開始」ボタンをクリックしてアップロードします。
3 アルバムマップを作成します。
(位置情報がある画像は自動的に配置されるので確かめてみてください。)
3-1 「編集」をクリックして「アルバム マップ」をクリックします。
3-2 「場所を検索」に位置を入力して実行します。
3-3 サムネイルを選択し、マップをクリックして配置するか、サムネイルをマップ上にドラッグ アンド ドロップします。
3-4 「完了」ボタンをクリックします。
3-5 「アルバム表示に戻る」をクリックします。
3-6 RSS ボタンをクリックします。(アルバム表示右下)
3-7 URL をコピーします。
4 Google Pisca ウェッブアルバムの RSS を読み込むには、tokyo_bmi_pgis_img03.html に次のコードを追加します。
/usr/lib/cgi-bin/proxy.cgi を開いて次のように allowedHosts に
'picasaweb.google.com', 'picasaweb.google.co.jp' を追加します。
(ドメインが2つ [.com, .co.jp] あるので念のため両方追加してください。)
1 Google Pisca ウェッブアルバムにログインします。
2 画像のないときはアップロードします。
2-1 「アップロード」ボタンをクリックします。
2-2 「新規アルバムを作成」リンクをクリックします。
2-3 「タイトル」を入力します。
「マップで場所を表示」は後で設定します。
「共有 マイギャラリーで」は「一般公開」にします。
「続行」ボタンをクリックします。
2-4 「アップロードする写真を選択」で「参照」ボタンをクリックして画像を選択します。
「アップロードを開始」ボタンをクリックしてアップロードします。
3 アルバムマップを作成します。
(位置情報がある画像は自動的に配置されるので確かめてみてください。)
3-1 「編集」をクリックして「アルバム マップ」をクリックします。
3-2 「場所を検索」に位置を入力して実行します。
3-3 サムネイルを選択し、マップをクリックして配置するか、サムネイルをマップ上にドラッグ アンド ドロップします。
3-4 「完了」ボタンをクリックします。
3-5 「アルバム表示に戻る」をクリックします。
3-6 RSS ボタンをクリックします。(アルバム表示右下)
3-7 URL をコピーします。
4 Google Pisca ウェッブアルバムの RSS を読み込むには、tokyo_bmi_pgis_img03.html に次のコードを追加します。
---
// ここから追加
var rsslayerURL2 = "http://picasaweb.google.com/data/feed/base/user/[user_id]/albumid/5264350151050308177?alt=rss&kind=photo&hl=ja";
var rssLayer2 = new OpenLayers.Layer.GeoRSS("Nishi Tachikawa", rsslayerURL2, {
visibility: false,
projection: new OpenLayers.Projection("EPSG:4326")
});
map.addLayer(rssLayer2);
// ここまで
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
---
/usr/lib/cgi-bin/proxy.cgi を開いて次のように allowedHosts に
'picasaweb.google.com', 'picasaweb.google.co.jp' を追加します。
(ドメインが2つ [.com, .co.jp] あるので念のため両方追加してください。)
---
allowedHosts = ['www.openlayers.org', 'openlayers.org',
'labs.metacarta.com', 'world.freemap.in',
'prototype.openmnnd.org', 'geo.openplans.org',
'sigma.openplans.org', 'demo.opengeo.org',
'www.openstreetmap.org', 'sample.avencia.com',
'maps.google.co.jp', 'picasaweb.google.com',
'picasaweb.google.co.jp']
---
2009年10月5日月曜日
OpenLayers で東京都の地図表示 8b Google Maps の GeoRSS 直接読み込む
直接、Google マップの GeoRSS を読み込むには次のコードを追加します。
example フォルダの proxy.cgi を開いて次のように allowedHosts に
'maps.google.co.jp' を追加します。
root で proxy.cgi を /usr/lib/cgi-bin にコピーします。
権限を次の様に変更します。
Eclipse では表示しないので、Webブラウザで確認します。
---
function init(){
OpenLayers.ProxyHost="/cgi-bin/proxy.cgi?url="; // ここを追加
---
// ここから追加
var rsslayerURL = "http://maps.google.co.jp/maps/ms?hl=ja&ie=UTF8&vps=1&jsv=177f&msa=0&output=georss&msid=111036970844883899404.000460cf33070afb09a7a";
var rssLayer = new OpenLayers.Layer.GeoRSS("Tachikawa", rsslayerURL, {
visibility: false,
projection: new OpenLayers.Projection("EPSG:4326")
});
map.addLayer(rssLayer);
// ここまで
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine());
---
example フォルダの proxy.cgi を開いて次のように allowedHosts に
'maps.google.co.jp' を追加します。
---
allowedHosts = ['www.openlayers.org', 'openlayers.org',
'labs.metacarta.com', 'world.freemap.in',
'prototype.openmnnd.org', 'geo.openplans.org',
'sigma.openplans.org', 'demo.opengeo.org',
'www.openstreetmap.org', 'sample.avencia.com',
'maps.google.co.jp']
---
root で proxy.cgi を /usr/lib/cgi-bin にコピーします。
debian:/home/user# cp workspace/openlayersTokyoproj/examples/proxy.cgi /usr/lib/cgi-bin/
権限を次の様に変更します。
debian:/home/user# ls -l /usr/lib/cgi-bin/
合計 1156
-rwxr-xr-x 1 root root 1172312 2008-07-23 01:10 mapserv
-rwxr--r-- 1 root root 2534 2009-09-26 10:50 proxy.cgi
debian:/home/user# chmod 755 /usr/lib/cgi-bin/proxy.cgi
debian:/home/user# ls -l /usr/lib/cgi-bin/
合計 1156
-rwxr-xr-x 1 root root 1172312 2008-07-23 01:10 mapserv
-rwxr-xr-x 1 root root 2534 2009-09-26 10:50 proxy.cgi
Eclipse では表示しないので、Webブラウザで確認します。
2009年10月4日日曜日
OpenLayers で東京都の地図表示 8a Google Maps の GeoRSS の表示
GeoRSS は、インターネットのコンテンツ配信に地理情報を埋め込むための規格です。
Atom1.0, RSS2.0, RSS1.0 で使えます。
GeoRSS の例
GeoRSS-Simple: 単純な GeoRSS
GeoRSS-GML: GML 形式の GeoRSS
GeoRSS のホームページを参考に試してみました。
OpenLayers の example サイトにある GeoRSS 関連の地図は
GeoRSS Example(georss.html) georss.xmlファイルはPlatial地図投稿サービスサイトのRDF Site Summary(RSS 0.9とRSS 1.0)。現在はRSS2.0。
GeoRSS Marker Example(georss-markers.html)yelp-georss.xmlファイルはyelp地図検索サイトのAtom + georss.xml。
GeoRSS from Flickr in OpenLayers(georss-flickr.html)georss-flickr.xmlはflickr写真共有サイトのRSS2.0。GeoFeedのリンクがある。
(GeoRSS Point Track in OpenLayers は track1.xml のデータの元が分かりませんでした。)
です。
今回は Google マップを使って RSS2.0 の地図を描画してみました。
1 Google マップの RSS
1-1 Google マップで「マイマップ」を作成して「タイトル」と「説明」を入力します。
(公開しないと思うので「限定公開」にしてください。)
1-2 「目印」を追加して「タイトル」と「説明」を入力します。
1-3 「マイマップ」を「保存」、「完了」します。
1-4 「RSS」ボタンをクリックします。
1-5 「RSS」の内容部分を右クリックして「ページのソースを表示」をクリックします。
1-6 表示されたソースをすべて選択してコピーします。
1-7 Eclipse の 「openlayersTokyoproj」を右クリックして、新規->XML ファイルをクリックします。
1-8 「新規 XML ファイル」ウィンドウの「ファイル名」を入力して「完了」をクリックします。
1-9 コピーした RSS を張り付けて保存します。
tokyo_bmi_pgis_img02.html をコピーして tokyo_bmi_pgis_img03.html を作成します。
examples フォルダの georss.html(OpenLayers GeoRSS Example)を参考に、次のコードを追加します。
試したGeoRSS
「Load Feed」ボタンをクリックするとマーカが表示されます。
マーカをクリックすると「タイトル」と「説明」がポップアップ表示されます。
Atom1.0, RSS2.0, RSS1.0 で使えます。
GeoRSS の例
GeoRSS-Simple: 単純な GeoRSS
<georss:point>35.7 139.5</georss:point>
GeoRSS-GML: GML 形式の GeoRSS
<georss:where>
<gml:Point>
<gml:pos>35.7 139.5</gml:pos>
</gml:Point>
</georss:where>
GeoRSS のホームページを参考に試してみました。
OpenLayers の example サイトにある GeoRSS 関連の地図は
GeoRSS Example(georss.html) georss.xmlファイルはPlatial地図投稿サービスサイトのRDF Site Summary(RSS 0.9とRSS 1.0)。現在はRSS2.0。
GeoRSS Marker Example(georss-markers.html)yelp-georss.xmlファイルはyelp地図検索サイトのAtom + georss.xml。
GeoRSS from Flickr in OpenLayers(georss-flickr.html)georss-flickr.xmlはflickr写真共有サイトのRSS2.0。GeoFeedのリンクがある。
(GeoRSS Point Track in OpenLayers は track1.xml のデータの元が分かりませんでした。)
です。
今回は Google マップを使って RSS2.0 の地図を描画してみました。
1 Google マップの RSS
1-1 Google マップで「マイマップ」を作成して「タイトル」と「説明」を入力します。
(公開しないと思うので「限定公開」にしてください。)
1-2 「目印」を追加して「タイトル」と「説明」を入力します。
1-3 「マイマップ」を「保存」、「完了」します。
1-4 「RSS」ボタンをクリックします。
1-5 「RSS」の内容部分を右クリックして「ページのソースを表示」をクリックします。
1-6 表示されたソースをすべて選択してコピーします。
1-7 Eclipse の 「openlayersTokyoproj」を右クリックして、新規->XML ファイルをクリックします。
1-8 「新規 XML ファイル」ウィンドウの「ファイル名」を入力して「完了」をクリックします。
1-9 コピーした RSS を張り付けて保存します。
tokyo_bmi_pgis_img02.html をコピーして tokyo_bmi_pgis_img03.html を作成します。
examples フォルダの georss.html(OpenLayers GeoRSS Example)を参考に、次のコードを追加します。
---
// ここから追加
function addUrl() {
var urlObj = OpenLayers.Util.getElement('url');
var value = urlObj.value;
var parts = value.split("/");
var newl = new OpenLayers.Layer.GeoRSS( parts[parts.length-1], value,
{
'projection': new OpenLayers.Projection("EPSG:4326") // ここがポイントです
});
map.addLayer(newl);
urlObj.value = "";
}
// ここまで
</script>
</head>
<body onload="init()">
<h1 id="title">Tokyo BMI Pgis Map 03</h1>
<div id="tags"></div>
<p id="shortdesc">
Shows the basic use of openlayers using a WMS layer
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
This is an example of how to add an WMS layer to the OpenLayers window. The images are tiled in this instance if you wanted to not use a tiled WMS
please use this example and pass the option �singleTile� as true.
</div>
<!-- ここから追加 -->
<form onsubmit="return false;">
GeoRSS URL: <input type="text" id="url" size="50" value="georss_tachikawa.xml" />
<input type="submit" onclick="addUrl(); return false;" value="Load Feed" onsubmit="addUrl(); return false;" />
</form>
<!-- ここまで -->
</body>
</html>
試したGeoRSS
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
<channel>
<link>http://maps.google.com</link>
<title>立川</title>
<description><![CDATA[多摩の拠点]]></description>
<item>
<guid isPermaLink="false">0004744981490166741bb</guid>
<pubDate>Thu, 24 Sep 2009 02:22:37 +0000</pubDate>
<title>国営昭和記念公園</title>
<description><![CDATA[<div dir="ltr">四季折々の花が咲く公園</div>]]></description>
<author>user</author>
<georss:point>
35.703041 139.410461
</georss:point>
<georss:elev>0.000000</georss:elev>
</item>
</channel>
</rss>
「Load Feed」ボタンをクリックするとマーカが表示されます。
マーカをクリックすると「タイトル」と「説明」がポップアップ表示されます。
2009年10月3日土曜日
OpenLayers で東京都の地図表示 7c ポイントの表示 - projection の変換
proj4js フォルダを openlayersTokyoproj/lib/ にインポートします。
0 OpenLayers の /sandbox/madair/lib ページ
http://trac.openlayers.org/browser/sandbox/madair/lib?rev=4572
で、インポートするディレクトリを確認します。
proj フォルダを作成して proj4js フォルダを入れます。
1 ファイル->インポートをクリックします
2 選択ウィンドウで 一般->ファイル・システム を選択して「次へ」ボタンをクリックします。
3 ファイル・システムウィンドウで 次のディレクトリからの「参照」ボタンをクリックします。
4 ディレクトリからインポートで解凍した proj フォルダを選んで「OK」ボタンをクリックします。
5 ファイル・システムウィンドウで proj をチェックします。
6 宛先フォルダーの「参照」ボタンをクリックします。
7 フォルダーにインポートウィンドウで「lib」をクリックして反転させ、「OK」ボタンをクリックします。
8 インポートウィンドウで「完了」ボタンをクリックします。
OpenLayers は projection(投影法)の変換に、transform 関数が用意されています。
次のメーリングリストを参考に、OpenLayers.Projection.tansform を試してみます。
Re: [OpenLayers-Users] OpenLayers.Projection and proj4js.js
http://www.mail-archive.com/users@openlayers.org/msg04620.html
tokyo_bmi_pgis_img02.html に次のコードを追加します。
結果は次の様に変換されました。
markers レイヤを次の様に修正します。
マウスポジションが度数表示になりました。
次の様にマップコントロールのスケールラインを追加したら表示されるようになりました。
0 OpenLayers の /sandbox/madair/lib ページ
http://trac.openlayers.org/browser/sandbox/madair/lib?rev=4572
で、インポートするディレクトリを確認します。
proj フォルダを作成して proj4js フォルダを入れます。
1 ファイル->インポートをクリックします
2 選択ウィンドウで 一般->ファイル・システム を選択して「次へ」ボタンをクリックします。
3 ファイル・システムウィンドウで 次のディレクトリからの「参照」ボタンをクリックします。
4 ディレクトリからインポートで解凍した proj フォルダを選んで「OK」ボタンをクリックします。
5 ファイル・システムウィンドウで proj をチェックします。
6 宛先フォルダーの「参照」ボタンをクリックします。
7 フォルダーにインポートウィンドウで「lib」をクリックして反転させ、「OK」ボタンをクリックします。
8 インポートウィンドウで「完了」ボタンをクリックします。
OpenLayers は projection(投影法)の変換に、transform 関数が用意されています。
次のメーリングリストを参考に、OpenLayers.Projection.tansform を試してみます。
Re: [OpenLayers-Users] OpenLayers.Projection and proj4js.js
http://www.mail-archive.com/users@openlayers.org/msg04620.html
tokyo_bmi_pgis_img02.html に次のコードを追加します。
---
<script type="text/javascript" src="./lib/proj4js/lib/proj4js-compressed.js"></script>
<script type="text/javascript" src="./lib/proj4js/lib/projCode/tmerc.js"></script>
<script type="text/javascript" src="./lib/proj4js/lib/defs/EPSG2456.js"></script>
<script type="text/javascript">
var p = new OpenLayers.Geometry.Point(139.5,35.70);
var proj_src = new OpenLayers.Projection("EPSG:4326");
var proj_tgt = new OpenLayers.Projection("EPSG:2456");
document.write("Point p [before OpenLayers.Projection.transform] is: " + p + "<br />");
OpenLayers.Projection.transform(p,proj_src,proj_tgt);
document.write("Point p [after OpenLayers.Projection.transform] is: " + p + "<br />");
document.write("proj_src is: " + proj_src + "<br />");
document.write("proj_tgt is: " + proj_tgt + "<br />");
document.write();
---
結果は次の様に変換されました。
---
Point p [before OpenLayers.Projection.transform] is: POINT(139.5 35.7)
Point p [after OpenLayers.Projection.transform] is: POINT(-226260.3162219112 1078195.254530467)
proj_src is: EPSG:4326
proj_tgt is: EPSG:2456
---
markers レイヤを次の様に修正します。
---
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
size = new OpenLayers.Size(21,25);
calculateOffset = function(size) {
return new OpenLayers.Pixel(-(size.w/2), -size.h);
};
icon = new OpenLayers.Icon('./img/marker.png',size, null, calculateOffset);
var point = new OpenLayers.LonLat(139.5,35.7);
var proj_src = new OpenLayers.Projection("EPSG:4326"); //追加
point.transform(proj_src,map.getProjectionObject()); //追加
markers.addMarker(new OpenLayers.Marker(point, icon));
---
マウスポジションが度数表示になりました。
次の様にマップコントロールのスケールラインを追加したら表示されるようになりました。
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.ScaleLine()); //追加
map.zoomToMaxExtent();
}
</script>
---
2009年9月30日水曜日
OpenLayers で東京都の地図表示 7a 投影法の違うポイントの表示
1 tokyo_bmi_pgis_img02.html の地図の layer2 だけ表示するように戻します。
投影法の違うポイントを表示するため、次のように markers レイヤを追加します。

ポイントは表示されませんでした。
次回は、ポイントの投影法を変換する方法を試します。
(レイヤの投影法の変換はできませんでした。)
---
<script type="text/javascript">
var map, layer2; //layer1, layer3, layer4
function init(){
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"),//<-1
displayProjection: new OpenLayers.Projection("EPSG:4326"),//<-1
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000)
});
---
layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img2.map',
layers: 'kukaku',
// transparent: true,
format: 'image/png'
});
map.addLayer(layer2);
---
投影法の違うポイントを表示するため、次のように markers レイヤを追加します。
---
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
size = new OpenLayers.Size(21,25);
calculateOffset = function(size) {
return new OpenLayers.Pixel(-(size.w/2), -size.h);
};
icon = new OpenLayers.Icon('./img/marker.png',size, null, calculateOffset);
var point = new OpenLayers.LonLat(139.5,35.7);
markers.addMarker(new OpenLayers.Marker(point, icon));
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition());
map.zoomToMaxExtent();
}
</script>
---

ポイントは表示されませんでした。
次回は、ポイントの投影法を変換する方法を試します。
(レイヤの投影法の変換はできませんでした。)
2009年9月28日月曜日
OpenLayers で東京都の地図表示 5d 東京都の公共施設を追加4
tokyo_pf_pgis.html に tokyo_bmi_pgis_img.map の height レイヤをベースマップに kukaku レイヤをオーバーレイしてみます。
これにより、tokyo_bmi_pgis_img.map の height レイヤ(layer1)kukaku レイヤ(layer2) が再投影されます。
地図を拡大するため、コントロールパネルの "+" を3回クリックすると、公共施設の位置が表示されました。
1 tokyo_bmi_pgis_img.map の WEB オブジェクトの "wms_srs" に EPSG:4326 を追加します。
2 layer1 と layer2 を追加。もとの layer1 と layer2 は layer3 と layer4 にします。
3 この地図の投影(projection:プロジェクション)。
tokyo_bmi_pgis_img.map
tokyo_pf_pgis.html

maxExtent で設定すると画像サイズに合った地図が最初から表示されます。
tokyo_pf_pgis.html
これにより、tokyo_bmi_pgis_img.map の height レイヤ(layer1)kukaku レイヤ(layer2) が再投影されます。
地図を拡大するため、コントロールパネルの "+" を3回クリックすると、公共施設の位置が表示されました。
1 tokyo_bmi_pgis_img.map の WEB オブジェクトの "wms_srs" に EPSG:4326 を追加します。
2 layer1 と layer2 を追加。もとの layer1 と layer2 は layer3 と layer4 にします。
3 この地図の投影(projection:プロジェクション)。
tokyo_bmi_pgis_img.map
MAP
NAME tokyo_bmi_pgis_img_map
---
WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
METADATA
"wms_title" "Tokyo Map WMS Server" # WMS サーバ設定
"wms_srs" "EPSG:2456 EPSG:4326" #<-1
END
END
---
tokyo_pf_pgis.html
---
<script type="text/javascript">
var lon = 139.5;
var lat = 35.7;
var zoom = 9;
var map, layer1, layer2, layer3, layer4;
function init(){
map = new OpenLayers.Map('map');
layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img.map',
layers: 'height',
format: 'image/png'
});
layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});
layer3 = new OpenLayers.Layer.WMS( "Tokyo Gyoseikai mlit WMS",
---

maxExtent で設定すると画像サイズに合った地図が最初から表示されます。
tokyo_pf_pgis.html
<script type="text/javascript">
/*var lon = 139.5;
var lat = 35.7;
var zoom = 9;
*/
var map, layer1, layer2, layer3, layer4;
function init(){
map = new OpenLayers.Map('map', {
units: 'dd',
maxResolution: 'auto',
maxExtent: new OpenLayers.Bounds(138.85,35.4,140,35.975)
});
---
map.zoomToMaxExtent()
}
</script>
---
2009年9月27日日曜日
OpenLayers で東京都の地図表示 5c 東京都の公共施設を追加3
tokyo_bmi_pgis_img.html に tokyo_pf_pgis.map の pf_tokyo レイヤをオーバーレイしてみます。
これにより、tokyo_pf_pgis.map の gyoseikai レイヤ(layer3)pf_tokyo レイヤ(layer4) が再投影されます。
地図を拡大するため、コントロールパネルの "+" を3回クリックすると、公共施設の位置が表示されました。
1 layer3 と layer4 を追加。
2 この地図の投影(projection:プロジェクション)。
3 マウスの位置(MousePosition)を度数表示にするための設定。(できませんでした。)

これにより、tokyo_pf_pgis.map の gyoseikai レイヤ(layer3)pf_tokyo レイヤ(layer4) が再投影されます。
地図を拡大するため、コントロールパネルの "+" を3回クリックすると、公共施設の位置が表示されました。
1 layer3 と layer4 を追加。
2 この地図の投影(projection:プロジェクション)。
3 マウスの位置(MousePosition)を度数表示にするための設定。(できませんでした。)
---
<script type="text/javascript">
var map, layer1, layer2, layer3, layer4;
function init(){
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"), //<-2
displayProjection: new OpenLayers.Projection("EPSG:4326"), //<-3
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000,1104000)
});
layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img.map',
layers: 'height',
format: 'image/png'
});
layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_bmi_pgis_img.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});
layer3 = new OpenLayers.Layer.WMS( "Tokyo Gyoseikai mlit WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'gyoseikai',
transparent: true,
format: 'image/png'
});
layer4 = new OpenLayers.Layer.WMS( "Tokyo Public Facilities WMS", //<-1
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'pf_tokyo',
transparent: true,
format: 'image/png'
});
map.addLayers([layer1, layer2, layer3, layer4]); //<-1
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.MousePosition()); //<-3
map.zoomToMaxExtent()
}
</script>
---

2009年9月26日土曜日
OpenLayers で東京都の地図表示 5b penLayers に東京都の公共施設を追加2
「OpenLayers 7units metersのWMS」を参考に 確認のため OpenLayers で東京都の国土数値地図を表示します。
Eclipse を起動して Example フォルダ内の tokyo_bmi_pgis_img.html をコピーして tokyo_pf_pgis.html ファイルを作成します。
0 tokyo_bmi_pgis_img.htmlをダブルクリックして開きます。
1 プロジェクトビューのopenlayersTokyoprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をtokyo_pf_pgis.htmlと入力し、完了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をTokyo Public Facilities Pgis Mapにします。
5 tokyo_bmi_pgis_img.html の内容ををコピーしてtokyo_pf_pgis.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。
style.cssとOpenLayers.jsのパスを変えます。
緯度、経度、倍率の宣言をします。
OpenLayers.Map のオプションを削除します。


地図を拡大するため、コントロールパネルの "+" を5回クリックすると、公共施設の位置が表示されました。
表示された地図の投影法は正距円筒図法で、縦方向が少しつぶれたようになっています。
Eclipse を起動して Example フォルダ内の tokyo_bmi_pgis_img.html をコピーして tokyo_pf_pgis.html ファイルを作成します。
0 tokyo_bmi_pgis_img.htmlをダブルクリックして開きます。
1 プロジェクトビューのopenlayersTokyoprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をtokyo_pf_pgis.htmlと入力し、完了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をTokyo Public Facilities Pgis Mapにします。
5 tokyo_bmi_pgis_img.html の内容ををコピーしてtokyo_pf_pgis.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。
style.cssとOpenLayers.jsのパスを変えます。
緯度、経度、倍率の宣言をします。
OpenLayers.Map のオプションを削除します。
---
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" /><!-- ここを追加 -->
<script src="./lib/OpenLayers.js"></script>
<script type="text/javascript">
var lon = 139.5;
var lat = 35.7;
var zoom = 9;
var map, layer1, layer2;
function init(){
map = new OpenLayers.Map('map');
layer1 = new OpenLayers.Layer.WMS( "Tokyo Gyoseikai mlit WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'gyoseikai',
format: 'image/png'
});
layer2 = new OpenLayers.Layer.WMS( "Tokyo Public Facilities WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/nob61/mapfile/tokyo_pf_pgis.map',
layers: 'pf_tokyo',
transparent: true,
format: 'image/png'
});
map.addLayers([layer1, layer2]);
map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
</script>
---


地図を拡大するため、コントロールパネルの "+" を5回クリックすると、公共施設の位置が表示されました。
表示された地図の投影法は正距円筒図法で、縦方向が少しつぶれたようになっています。
2009年9月24日木曜日
OpenLayers で東京都の地図表示 5a OpenLayers に東京都の公共施設を追加1
「OpenLayers 10a-d unitsがddとmeterのレイヤ」を参考に、
tokyo_pf_pgis.map に WMS サーバの設定をします。
1 OpenLayers では地図を表示するのに、マップファイルに MAP オブジェクトの PROJECTION オブジェクトが必要です。
epsg:4326(PROJECTION オブジェクトでは epsg を小文字で設定)は、X/Yの値で扱われるれる緯度と経度で地図を説明する一般的な識別子です。
これは、MapServer と OpenLayers のデフォルトの投影法である正距円筒図法ですが、必ず設定します。
2 WMS サーバ機能を設定するのに、WEB オブジェクトの METADATA オブジェクトに、 "wms_title" と "wms_srs" を設定します。
"wms_srs" に、基盤地図情報のに合わせて "EPSG:2456" も設定します。
これによって、"wms_srs" の識別子が WMS を利用できるすべてのレイヤに設定されます。
3 レイヤを WMS で利用できるように、同じように、METADATA オブジェクトに、 "wms_title" を設定します。
レイヤを別の投影法で利用したいときは、個別に "wms_srs" を設定します。
GetCapabilities で WMS の情報を取得できます。
警告(<!-- WARNING:...)がありますが、今回は地図の表示に影響ありません。
wget -O tokyo_pf_pgis.xml "http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&service=WMS&version=1.1.1&request=GetCapabilities"
nob61@debian:~/xml$ vim tokyo_pf_pgis.xml
tokyo_pf_pgis.map に WMS サーバの設定をします。
1 OpenLayers では地図を表示するのに、マップファイルに MAP オブジェクトの PROJECTION オブジェクトが必要です。
epsg:4326(PROJECTION オブジェクトでは epsg を小文字で設定)は、X/Yの値で扱われるれる緯度と経度で地図を説明する一般的な識別子です。
これは、MapServer と OpenLayers のデフォルトの投影法である正距円筒図法ですが、必ず設定します。
2 WMS サーバ機能を設定するのに、WEB オブジェクトの METADATA オブジェクトに、 "wms_title" と "wms_srs" を設定します。
"wms_srs" に、基盤地図情報のに合わせて "EPSG:2456" も設定します。
これによって、"wms_srs" の識別子が WMS を利用できるすべてのレイヤに設定されます。
3 レイヤを WMS で利用できるように、同じように、METADATA オブジェクトに、 "wms_title" を設定します。
レイヤを別の投影法で利用したいときは、個別に "wms_srs" を設定します。
MAP
NAME tokyo_pf_pgis_map
---
PROJECTION # 投影法 (OpenLayers のため追加)<-1
"init=epsg:4326" #
END #
WEB
IMAGEPATH "/home/nob61/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
METADATA
"wms_title" "Tokyo mlit Map WMS Server" # WMS サーバ設定<-2
"wms_srs" "EPSG:2456 EPSG:4326" #
END
END
---
LAYER
NAME gyoseikai
---
METADATA
"group_title" "行政界"
"queryable" "true"
"searchfield" "cn2"
"fields" "con:郡政令,cn2:市区町村"
"wms_title" "Gyoseikai Tokyo mlit Map WMS Layer" # 追加<-3
END
---
LAYER
NAME pf_tokyo
---
METADATA
"group_title" "公共施設"
"searchfield" "na0"
"fields" "na0:公共施設,ads:住所"
"wms_title" "Public Facilities Tokyo mlit Map WMS Layer" # 追加<-3
# "wms_srs" "EPSG:2456 EPSG:4326" #
END
---
GetCapabilities で WMS の情報を取得できます。
警告(<!-- WARNING:...)がありますが、今回は地図の表示に影響ありません。
wget -O tokyo_pf_pgis.xml "http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&service=WMS&version=1.1.1&request=GetCapabilities"
nob61@debian:~/xml$ vim tokyo_pf_pgis.xml
---
<Layer>
<Name>tokyo_pf_pgis_map</Name>
<Title>Tokyo mlit Map WMS Server</Title>
<SRS>EPSG:2456</SRS>
<SRS>EPSG:4326</SRS>
<LatLonBoundingBox minx="138.85" miny="35.4" maxx="140" maxy="35.975" />
<BoundingBox SRS="EPSG:4326"
minx="138.85" miny="35.4" maxx="140" maxy="35.975" />
<Layer queryable="1" opaque="0" cascaded="0">
<Name>gyoseikai</Name>
<Title>Gyoseikai Tokyo mlit Map WMS Layer</Title>
<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->
<LatLonBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
<BoundingBox SRS="EPSG:4326"
minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
<Style>
<Name>default</Name>
<Title>default</Title>
<LegendURL width="20" height="10">
<Format>image/png</Format>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=gyoseikai&format=image/png"/>
</LegendURL>
</Style>
</Layer>
<Layer>
---
<Layer>
<Name>pf_tokyo</Name>
<!-- WARNING: Mandatory metadata '..._GROUP_TITLE' was missing in this context. -->
<Title>pf_tokyo</Title>
<Abstract>pf_tokyo</Abstract>
<Layer queryable="1" opaque="0" cascaded="0">
<Name>pf_tokyo</Name>
<Title>Public Facilities Tokyo mlit Map WMS Layer</Title>
<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->
<LatLonBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
<BoundingBox SRS="EPSG:4326"
minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
<Style>
<Name>default</Name>
<Title>default</Title>
<LegendURL width="20" height="10">
<Format>image/png</Format>
<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://localhost/cgi-bin/mapserv?map=/home/nob61/mapfile/tokyo_pf_pgis.map&version=1.1.1&service=WMS&request=GetLegendGraphic&layer=pf_tokyo&format=image/png"/>
</LegendURL>
</Style>
<ScaleHint min="0" max="124.725712107409" />
</Layer>
</Layer>
</Layer>
</Capability>
</WMT_MS_Capabilities>
2009年9月23日水曜日
OpenLayers で東京都の地図表示 4b 東京都の地図を OpenLayers で表示2
「OpenLayers 7units metersのWMS」を参考に OpenLayers で地図を表示します。
Eclipse を起動して Example フォルダないの wms.html をコピーして tokyo_bmi_pgis_img.html ファイルを作成します。
0 wms.htmlをダブルクリックして開きます。
1 プロジェクトビューのopenlayersTokyoprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をtokyo_bmi_pgis_img.htmlと入力し、完了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をTokyo BMI Pgis Mapにします。
5 wms.html の内容ををコピーしてtokyo_bmi_pgis_img.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。
style.cssとOpenLayers.jsのパスを変えます。
OpenLayers.Map のオプションに
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000, 1104000)
を追加します。
Eclipse を起動して Example フォルダないの wms.html をコピーして tokyo_bmi_pgis_img.html ファイルを作成します。
0 wms.htmlをダブルクリックして開きます。
1 プロジェクトビューのopenlayersTokyoprojフォルダを右クリックして、新規->HTMLファイルをクリックします。
2 HTMLファイルウィンドウでファイル名をtokyo_bmi_pgis_img.htmlと入力し、完了ボタンをクリックします。
3 エディタのタブをエディタビュー内の下へドラッグすると2段になってみやすくなります。
4 charsetをUTF-8にして、<title>をTokyo BMI Pgis Mapにします。
5 wms.html の内容ををコピーしてtokyo_bmi_pgis_img.html ファイルに貼り付けます。
6 javascriptの一部を次のように修正します。
style.cssとOpenLayers.jsのパスを変えます。
OpenLayers.Map のオプションに
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000, 1104000)
を追加します。
---
<link rel="stylesheet" href="./theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="./examples/style.css" type="text/css" /><!-- ここを追加 -->
<script src="./lib/OpenLayers.js"></script>
<script type="text/javascript">
var map, layer1, layer2;
function init(){
map = new OpenLayers.Map('map', {
projection: new OpenLayers.Projection("EPSG:2456"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
maxResolution: 'auto',
units: 'meters',
maxExtent: new OpenLayers.Bounds(-279000,1054000,-185000, 1104000)
});
layer1 = new OpenLayers.Layer.WMS( "Tokyo Height WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img.map',
layers: 'height',
format: 'image/png'
});
layer2 = new OpenLayers.Layer.WMS( "Tokyo Kukaku Sen WMS",
"http://localhost/cgi-bin/mapserv?",
{
map: '/home/user/mapfile/tokyo_bmi_pgis_img.map',
layers: 'kukaku',
transparent: true,
format: 'image/png'
});
map.addLayers([layer1, layer2]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();
}
</script>
---
2009年9月22日火曜日
OpenLayers で東京都の地図表示 4a 東京都の地図をOpenLayers で表示1
「OpenLayers 7units metersのWMS」を参考にします。
tokyo_bmi_ogis_img.map を修正して WMS サーバの設定をします。
WMS 機能ドキュメントのチェック
端末(ターミナル)で次のようにコマンドを入力します。
wget -O tokyo_bmi_pgis_img.xml "http://localhost/cgi-bin/mapserv?map=/home/user/mapfile/tokyo_bmi_pgis_img.map&service=WMS&version=1.1.1&request=GetCapabilities"
tokyo_bmi_pgis_img.xml の内容をみてみます。
<!-- MapServer version 5.0.3 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->
ここには、MapServer がサポートする機能が出力されています。
WMS がサポートされています。
SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT
height レイヤに次のような警告が出力されていますが、地図は表示されます。
内容は、MAP オブジェクトか Layer オブジェクト、height レイヤの Metadata に wms_srs のどれか一つに投影法を記述するべきとあります。
<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->
tokyo_bmi_ogis_img.map を修正して WMS サーバの設定をします。
MAP
NAME tokyo_bmi_pgis_img_map
---
PROJECTION # 投影法 (OpenLayers のため追加)
"init=epsg:2456" #
END #
WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
METADATA
"wms_title" "Tokyo Map WMS Server" # WMS サーバ設定
"wms_srs" "EPSG:2456" #
END
END
---
LAYER
NAME height
TYPE RASTER
STATUS ON
DATA "../mapdata/tokyo_bmi/tokyo_height201-epsg2456.tif"
MINSCALEDENOM 1000 # 不適当な縮尺で使用されないように。
MAXSCALEDENOM 1000000 # (MINSCALE, MAXSCALE から置き換え。MapServer5より>)
METADATA
"group_title" "標高"
"wms_title" "Tokyo Height WMS LAYER" # 追加
END
END
LAYER
NAME kukaku
GROUP kukaku
TYPE LINE #POLYGON
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseisen" #gyoseikukaku
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
MINSCALEDENOM 1000 # 追加
MAXSCALEDENOM 1000000 #
METADATA
"group_title" "行政区画"
"wms_title" "Tokyo Kukaku WMS LAYER" # 追加
END
CLASS
NAME "行政区画"
STYLE
COLOR 102 102 102 #255 255 204
# OUTLINECOLOR 204 204 204
END
END
END
---
WMS 機能ドキュメントのチェック
端末(ターミナル)で次のようにコマンドを入力します。
wget -O tokyo_bmi_pgis_img.xml "http://localhost/cgi-bin/mapserv?map=/home/user/mapfile/tokyo_bmi_pgis_img.map&service=WMS&version=1.1.1&request=GetCapabilities"
tokyo_bmi_pgis_img.xml の内容をみてみます。
<!-- MapServer version 5.0.3 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->
ここには、MapServer がサポートする機能が出力されています。
WMS がサポートされています。
SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT
height レイヤに次のような警告が出力されていますが、地図は表示されます。
内容は、MAP オブジェクトか Layer オブジェクト、height レイヤの Metadata に wms_srs のどれか一つに投影法を記述するべきとあります。
<!-- WARNING: Mandatory mapfile parameter '(at least one of) MAP.PROJECTION, LAYER.PROJECTION or wms_srs metadata' was missing in this context. -->
2009年9月21日月曜日
OpenLayers で東京都の地図表示 3 東京都の公共施設のマップファイル
tokyo_pgis.map をコピーしてファイル名を tokyo_pf_pgis.map にしてレイヤを次のように追加します。
ka-Map で表示するための設定になっています。
temp_pf_tokyo_pgis.html の内容
ka-Map で表示するための設定になっています。
MAP
NAME tokyo_pf_pgis_map
---
SYMBOL
NAME 'circle'
TYPE ELLIPSE
FILLED TRUE
POINTS
1 1
END
END
---
LAYER
NAME pf_tokyo
GROUP pf_tokyo
TYPE POINT
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo host=localhost user=nob61 password=balanced"
DATA "the_geom from pf_tokyo"
MAXSCALEDENOM 250000 # ka-Mapで表示するときはなぜか表示したい一つ上の倍率
LABELITEM "na0"
METADATA
"group_title" "公共施設" # ka-Map 用
"searchfield" "na0" #
"fields" "na0:公共施設,ads:住所" #
END
CLASS
NAME "公共施設"
STYLE
SYMBOL 'circle'
COLOR 102 255 102
SIZE 5
END
LABEL
MINFEATURESIZE 40
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF8
SIZE 8
POSITION uc
END
END
TEMPLATE temp_pf_tokyo_pgis.html # 検索文字列表示用
END
END # END OF MAPFILE
temp_pf_tokyo_pgis.html の内容
<html>
<head>
<title>Pubilic Facilities Tokyo pgis Template</title>
</head>
<body>
<li>[na0]
<li>[ads]
</body>
</html>
2009年9月20日日曜日
OpenLayers で東京都の地図表示 2 東京都の公共施設をデータベースに登録
shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
pf_tokyoテーブル内のカラムとその他の一覧を表示してみます。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
user@debian:~$ cd download/pf_tokyo_shp/
user@debian:~/download/pf_tokyo_shp$ shp2pgsql -W sjis P02-06_13_FB01.shp pf_tokyo > pf_tokyo.sql
Shapefile type: Point
Postgis type: POINT[2]
user@debian:~/download/pf_tokyo_shp$ psql -d tokyo -f pf_tokyo.sql
user@debian:~/download/pf_tokyo_shp$ psql tokyo
Welcome to psql 8.3.7, 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
tokyo=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | gyoseikai | table | user
public | pf_tokyo | table | user
public | population | table | user
public | spatial_ref_sys | table | user
(5 rows)
pf_tokyoテーブル内のカラムとその他の一覧を表示してみます。
tokyo=> \d pf_tokyo
Table "public.pf_tokyo"
Column | Type | Modifiers
----------+-----------------------+--------------------------------------------------------
gid | integer | not null default nextval('pf_tokyo_gid_seq'::regclass)
aac | character varying(5) |
ren | character varying(1) |
com | character varying(1) |
cls | character varying(1) |
pca | character varying(2) |
pci | character varying(5) |
na8 | character varying(1) |
na0 | character varying(82) |
ads | character varying(63) |
apf | character varying(1) |
ad6 | character varying(1) |
ys3 | character varying(1) |
oy2 | character varying(1) |
rcn | character varying(12) |
the_geom | geometry |
Indexes:
"pf_tokyo_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = (-1))
tokyo=> \q
2009年9月14日月曜日
東京都の基盤地図情報 8 PostGIS で地図表示
シェイプファイルをデータベースに登録します。
template_postgisをテンプレートとして、オーナーがuserでtokyo_bmiというデータベースを作成します。
tokyo_bmiデータベースのgeometry_columnテーブルとspatial_ref_sysテーブルのオーナーをuserに変更します。
shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでsqlファイルのあるディレクトリに移動して、次のように入力します。
gyoseikukakuテーブル内のカラムとその他の一覧を表示してみます。
残りのシェイプファイルも登録します。
マップファイル tokyo_bmi_pgis_img.map の例。
標高画像データのレイヤを追加します。
また、kukaku レイヤの TYPE を LINE データ(gyoseisen)にします。
水涯線と0m地帯の色が同じになってしまいました。
標高画像データに座標を追加するため行政区画線がちょっと綺麗でないです。


template_postgisをテンプレートとして、オーナーがuserでtokyo_bmiというデータベースを作成します。
postgres@debian:~$ createdb -T template_postgis -O user tokyo_bmi
postgres@debian:~$ psql -l
List of databases
Name | Owner | Encoding
------------------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
template_postgis | postgres | UTF8
tokyo | user | UTF8
tokyo_bmi | user | UTF8
(6 rows)
tokyo_bmiデータベースのgeometry_columnテーブルとspatial_ref_sysテーブルのオーナーをuserに変更します。
postgres@debian:~$ psql tokyo_bmi
Welcome to psql 8.3.7, 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
tokyo_bmi=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | geometry_columns | table | postgres
public | spatial_ref_sys | table | postgres
(2 rows)
tokyo_bmi=# ALTER TABLE geometry_columns OWNER TO user;
ALTER TABLE
tokyo_bmi=# ALTER TABLE spatial_ref_sys OWNER TO user;
ALTER TABLE
tokyo_bmi=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | spatial_ref_sys | table | user
(2 rows)
tokyo_bmi=# \q
shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでシェイプファイルのあるディレクトリに移動して、次のように入力します。
postgres@debian:~$ exit
logout
user@debian:~$ cd mapdata/tokyo_bmi/
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis AdmArea.shp gyoseikukaku > gyoseikukaku.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis AdmBdry.shp gyoseisen > gyoseisen.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis AdmPt.shp gyoseiten > gyoseiten.sql
Shapefile type: Point
Postgis type: POINT[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis BldA.shp kenchikua > kenchikua.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis RailCL.shp kido > kido.sqlShapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis RdEdg.shp doro > doro.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
user@debian:~/mapdata/tokyo_bmi$ shp2pgsql -W sjis WL.shp suigai > suigai.sql
Shapefile type: Arc
Postgis type: MULTILINESTRING[2]
shp2pgsqlコマンドを使ってシェイプファイルをデータベースに登録します。
一般ユーザでsqlファイルのあるディレクトリに移動して、次のように入力します。
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f gyoseikukaku.sql
SET
BEGIN
psql:gyoseikukaku.sql:12: NOTICE: CREATE TABLE will create implicit sequence "gyoseikukaku_gid_seq" for serial column "gyoseikukaku.gid"
psql:gyoseikukaku.sql:12: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "gyoseikukaku_pkey" for table "gyoseikukaku"
CREATE TABLE
addgeometrycolumn
---------------------------------------------------------------
public.gyoseikukaku.the_geom SRID:-1 TYPE:MULTIPOLYGON DIMS:2
(1 row)
INSERT 0 1
---
COMMIT
user@debian:~/mapdata/tokyo_bmi$ psql tokyo_bmi
Welcome to psql 8.3.7, 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
tokyo_bmi=> \dt
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-------
public | geometry_columns | table | user
public | gyoseikukaku | table | user
public | spatial_ref_sys | table | user
(3 rows)
gyoseikukakuテーブル内のカラムとその他の一覧を表示してみます。
tokyo_bmi=> \d gyoseikukaku
Table "public.gyoseikukaku"
Column | Type | Modifiers
----------+-----------------------+------------------------------------------------------------
gid | integer | not null default nextval('gyoseikukaku_gid_seq'::regclass)
id | character varying(7) |
uuid | character varying(24) |
presence | integer |
finished | integer |
orggilvl | character varying(5) |
orgmdid | character varying(3) |
type | character varying(6) |
name | character varying(25) |
aac | integer |
the_geom | geometry |
Indexes:
"gyoseikukaku_pkey" PRIMARY KEY, btree (gid)
Check constraints:
"enforce_dims_the_geom" CHECK (ndims(the_geom) = 2)
"enforce_geotype_the_geom" CHECK (geometrytype(the_geom) = 'MULTIPOLYGON'::text OR the_geom IS NULL)
"enforce_srid_the_geom" CHECK (srid(the_geom) = (-1))
tokyo_bmi=> \q
残りのシェイプファイルも登録します。
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f gyoseisen.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f gyoseiten.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f kenchikua.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f kido.sq
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f doro.sql
user@debian:~/mapdata/tokyo_bmi$ psql -d tokyo_bmi -f suigai.sql
マップファイル tokyo_bmi_pgis_img.map の例。
標高画像データのレイヤを追加します。
また、kukaku レイヤの TYPE を LINE データ(gyoseisen)にします。
MAP
NAME tokyo_bmi_pgis_map
STATUS ON
SIZE 600 300
EXTENT -279000 1054000 -185000 1104000
UNITS meters
IMAGECOLOR 255 255 255
IMAGETYPE png
FONTSET "fonts.txt"
WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
END
LEGEND
TRANSPARENT TRUE
LABEL
TYPE TRUETYPE
FONT vl-gothic
COLOR 0 0 0
ENCODING UTF-8
SIZE 10
OFFSET 0 -4
END
END
SCALEBAR
TRANSPARENT TRUE
END
LAYER
NAME height
TYPE RASTER
STATUS ON
DATA "../mapdata/tokyo_bmi/tokyo_height201-epsg2456.tif"
METADATA
"group_title" "標高"
END
END
LAYER
NAME kukaku
GROUP kukaku
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseisen"
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
METADATA
"group_title" "行政区画"
END
CLASS
NAME "行政区画"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
END
END
LAYER
NAME suigaisen
GROUP suigaisen
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from suigai"
# DATA "../mapdata/tokyo_bmi/WL.shp"
METADATA
"group_title" "水涯線"
END
CLASS
NAME "水涯線"
STYLE
COLOR 102 204 204
SIZE 1
END
END
END
LAYER
NAME kenchiku
GROUP kenchiku
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from kenchikua"
# DATA "../mapdata/tokyo_bmi/BldA.shp"
MAXSCALEDENOM 50000
METADATA
"group_title" "建築物"
END
CLASS
NAME "建築物"
STYLE
COLOR 153 204 153
SIZE 1
END
END
END
LAYER
NAME doro
GROUP doro
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from doro"
# DATA "../mapdata/tokyo_bmi/RdEdg.shp"
MAXSCALEDENOM 100000
METADATA
"group_title" "道路"
"opacity" "50"
"queryable" "true"
"fields" "name:名前"
END
CLASS
NAME "道路"
STYLE
COLOR 204 204 102
SIZE 1
END
END
TEMPLATE temp_tokyo_bmi.html
END
LAYER
NAME tetsudo
GROUP tetsudo
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
# DATA "../mapdata/tokyo_bmi/RailCL.shp"
METADATA
"group_title" "鉄道"
END
CLASS
NAME "鉄道"
STYLE
COLOR 51 51 51
SIZE 1
END
END
END
LAYER
NAME kukaku2
GROUP kukaku2
TYPE ANNOTATION
STATUS OFF
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseikukaku"
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
LABELITEM "name"
METADATA
"group_title" "住所1"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "住所1"
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF8
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END
LAYER
NAME kukakuten
GROUP kukakuten
TYPE POINT
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=tokyo_bmi host=localhost user=user password=password"
DATA "the_geom from gyoseiten"
# DATA "../mapdata/tokyo_bmi/AdmPt.shp"
LABELITEM "name"
METADATA
"group_title" "行政区画代表点"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "行政区画代表点"
STYLE
COLOR 255 255 255
SIZE 1
END
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING UTF8
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END
END #MAP END
水涯線と0m地帯の色が同じになってしまいました。
標高画像データに座標を追加するため行政区画線がちょっと綺麗でないです。


2009年9月13日日曜日
東京都の基盤地図情報 7 シェイプファイルで地図表示
東京都のデータをみてみます。
AdmAreaのデータの概要をみてみます。
GML データでは経緯度のデータですが、シェイプファイルに変換後はメータのデータになっています。
東京都のマップファイルは地図範囲を島部を除いた部分にしました。
ka-Map で表示するように追加しているところがあります。
ka-map/include/config.php に追加。

(倍率で非表示になっているレイヤが「Map Info」欄の「Layers」に赤い字で表示されていました。マイナーバージョンアップ?)
user@debian:~/mapdata$ ogrinfo tokyo_bmi
INFO: Open of `tokyo_bmi'
using driver `ESRI Shapefile' successful.
1: AdmArea (Polygon)
2: AdmPt (Point)
3: RdEdg (Line String)
4: RailCL (Line String)
5: WL (Line String)
6: BldA (Polygon)
7: AdmBdry (Line String)
AdmAreaのデータの概要をみてみます。
user@debian:~/mapdata$ ogrinfo -summary tokyo_bmi AdmArea
INFO: Open of `tokyo_bmi'
using driver `ESRI Shapefile' successful.
Layer name: AdmArea
Geometry: Polygon
Feature Count: 323
Extent: (-619709.111772, -606129.469810) - (1222781.861788, 1101432.881066)
Layer SRS WKT:
PROJCS["JGD2000_Japan_Zone_14",
GEOGCS["GCS_JGD_2000",
DATUM["Japanese_Geodetic_Datum_2000",
SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",0.0],
PARAMETER["False_Northing",0.0],
PARAMETER["Central_Meridian",142],
PARAMETER["Scale_Factor",0.9999],
PARAMETER["Latitude_Of_Origin",26],
UNIT["Meter",1.0]]
ID: String (7.0)
UUID: String (24.0)
PRESENCE: Integer (8.0)
FINISHED: Integer (8.0)
ORGGILVL: String (5.0)
ORGMDID: String (3.0)
TYPE: String (6.0)
NAME: String (25.0)
AAC: Integer (5.0)
GML データでは経緯度のデータですが、シェイプファイルに変換後はメータのデータになっています。
東京都のマップファイルは地図範囲を島部を除いた部分にしました。
ka-Map で表示するように追加しているところがあります。
MAP
NAME tokyo_bmi_shp_map
STATUS ON
SIZE 600 300
EXTENT -279000 1054000 -185000 1104000
UNITS meters
IMAGECOLOR 255 255 255
IMAGETYPE png
FONTSET "fonts.txt"
WEB
IMAGEPATH "/home/user/ka-map/htdocs/tmp/kacache/"
IMAGEURL "/ka-map/tmp/kacache/"
END
LEGEND
TRANSPARENT TRUE
LABEL
TYPE TRUETYPE
FONT vl-gothic
COLOR 0 0 0
ENCODING UTF-8
SIZE 10
OFFSET 0 -4
END
END
SCALEBAR
TRANSPARENT TRUE
END
LAYER
NAME kukaku
GROUP kukaku
TYPE POLYGON
STATUS ON
DATA "../mapdata/tokyo_bmi/AdmArea.shp"
METADATA
"group_title" "行政区画"
END
CLASS
NAME "行政区画"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
END
END
LAYER
NAME suigaisen
GROUP suigaisen
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/WL.shp"
METADATA
"group_title" "水涯線"
END
CLASS
NAME "水涯線"
STYLE
COLOR 102 204 204
SIZE 1
END
END
END
LAYER
NAME kenchiku
GROUP kenchiku
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/BldA.shp"
MAXSCALEDENOM 50000
METADATA
"group_title" "建築物"
END
CLASS
NAME "建築物"
STYLE
COLOR 153 204 153
SIZE 1
END
END
END
LAYER
NAME doro
GROUP doro
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/RdEdg.shp"
MAXSCALEDENOM 100000
METADATA
"group_title" "道路"
"opacity" "50"
"layer_encoding" "SJIS"
"queryable" "true"
"fields" "name:名前"
END
CLASS
NAME "道路"
STYLE
COLOR 204 204 102
SIZE 1
END
END
TEMPLATE temp_tokyo_bmi.html
END
LAYER
NAME testudo
GROUP tetsudo
TYPE LINE
STATUS ON
DATA "../mapdata/tokyo_bmi/RailCL.shp"
METADATA
"group_title" "鉄道"
END
CLASS
NAME "鉄道"
STYLE
COLOR 51 51 51
SIZE 1
END
END
END
LAYER
NAME kukaku2
GROUP kukaku2
TYPE ANNOTATION
STATUS OFF
DATA "../mapdata/tokyo_bmi/AdmArea.shp"
LABELITEM "name"
METADATA
"group_title" "住所1"
"layer_encoding" "SJIS"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "住所1"
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING SJIS
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END
LAYER
NAME kukakuten
GROUP kukakuten
TYPE POINT
STATUS ON
DATA "../mapdata/tokyo_bmi/AdmPt.shp"
LABELITEM "name"
METADATA
"group_title" "行政区画代表点"
"layer_encoding" "SJIS"
"queryable" "true"
"searchfield" "name"
"fields" "name:住所"
END
CLASS
NAME "行政区画代表点"
STYLE
COLOR 255 255 255
SIZE 1
END
LABEL
MINFEATURESIZE 100
TYPE TRUETYPE
FONT vl-gothic
ENCODING SJIS
SIZE 8
END
END
TEMPLATE temp_tokyo_bmi.html
END
END #MAP END
ka-map/include/config.php に追加。
---
$aszTokyoBmi = array (
'title' => 'Tokyo BMI',
'path' => '/home/user/mapfile/tokyo_bmi_shp.map',
'scales' => array( 500000, 250000, 100000 ),
'format' =>'PNG'
);
---
$aszMapFiles = array( ---
'tokyoBmi' => $aszTokyoBmi
/* Add more elements to this array to offer multiple mapfiles */
);
---

(倍率で非表示になっているレイヤが「Map Info」欄の「Layers」に赤い字で表示されていました。マイナーバージョンアップ?)
登録:
コメント (Atom)
