地理空間とOSGeoとPostGISとを簡単に紹介してみます

23,278 views

Published on

Published in: Technology
0 Comments
19 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
23,278
On SlideShare
0
From Embeds
0
Number of Embeds
14,316
Actions
Shares
0
Downloads
74
Comments
0
Likes
19
Embeds 0
No embeds

No notes for slide

地理空間とOSGeoとPostGISとを簡単に紹介してみます

  1. 1. 地理空間とOSGeoとPostGISとを簡 単に紹介してみます 寺元郁博
  2. 2. 自己紹介○ 福山市在住○ (独)農業・食品産業技術総合研究機構 近畿中国四国農業研究センター 営農・環境研究領域 所属○ http://www.finds.jp/ を運営
  3. 3. はじめに○ 前半○ OSGeoという団体があります○ 様々なソフトが出ています○ 後半○ PostGISをちょっと紹介します • 具体性ゼロです • 具体的な使用法については「続きはWebで」
  4. 4. ご注意○ 時々 Finds.jp とか出ます○ 私が運営しているから○ 時間調整能力が無い○ だいたい15分が限度○ 余ったらFinds.jpの紹介でもする (私物化)
  5. 5. OSGeoについて
  6. 6. OSGeoとは○ オープンなジオを応援する財団○ ジオ = 地理空間情報○ 地理空間情報=現実の空間と絡む情報○ 「地図」など
  7. 7. オープンなジオ=Google Maps ?○ たしかに地図が絡んでるし無料 Google
  8. 8. しかし○ 右下にある利用規約 Google
  9. 9. オープンと呼ぶにはキツい ○ 地図はゼンリンさんから購入品 ○ 印刷できない! (私的利用でない場合)2. …ユーザーは、事前に Google…の書面による同意を得ることなく、…できません:…(b) コンテンツまたはその一部を複製…または派生物を作成すること、(c) …再配布、再使用許諾…すること、
  10. 10. オープンソースでできないか?○ たとえばこんなん (http://www.finds.jp/damimp/) 基盤地図情報 (国土地理院) 位置参照情報 (国土計画局)
  11. 11. 必要なもの○ サクサク動くJavaScript地図ライブラリ○ 空間データベース○ ジオなデータを貯めておく + インデクス○ 地図画像作成○ 空間データベースのデータは線、多角形○ 色や線幅を決めてビットマップデータとして描き出す
  12. 12. 必要なもの 1/3○ サクサク動くJavaScript地図ライブラリ○ 空間データベース○ ジオなデータを貯めておく + インデクス○ 地図画像作成○ ビットマップデータとして描き出す
  13. 13. あります !○ OpenLayers (http://openlayers.org/)○ JavaScriptアプリ
  14. 14. 必要なもの 2/3○ サクサク動くJavaScript地図ライブラリ○ 空間データベース○ ジオなデータを貯めておく + インデクス○ 地図画像作成○ ビットマップデータとして描き出す
  15. 15. これもあります!○ PostGIS (http://postgis.refractions.net/) ○ PostgreSQL の拡張 ○ ジオなデータが入る ○ 空間インデクス ○ 幾何関数等
  16. 16. 必要なもの 3/3○ サクサク動くJavaScript地図ライブラリ○ 空間データベース○ ジオなデータを貯めておく + インデクス○ 地図画像作成○ ビットマップデータとして描き出す
  17. 17. これもあるんです!○ MapServer (http://mapserver.org/) ○ CGIとして動作 基盤地図情報 (国土地理院)
  18. 18. 国内で無償入手可能データ○ 基盤地図情報○ 国土地理院刊行○ 無償配布 (再配布は要承認)○ 1:25000地図 1:2500地図○ 国土数値情報○ 国土交通省国土計画局発行○ 無償配布,再配布は出典明記のみ○ 一般的な地図とは異なる
  19. 19. ベクタデータからブラウザまで ブラウザ 地図画像 基盤地図情報
  20. 20. OSSさまさま○ http://www.finds.jp/ の構成 (本当に) ○ GeoWebCaceは地図画像のキャッシュ OpenLayers ブラウザ 地図画像 MapServer Apache HTTPD PostGIS GeoWebCache 基盤地図情報 FreeBSD
  21. 21. オープンソースでできちゃった○ ダム貯水率マップ (http://www.finds.jp/damimp/) 基盤地図情報 (国土地理院) 位置参照情報 (国土計画局)
  22. 22. もっと違うデータは ?○ 基盤地図情報は無償配布だけど…○ 再配布には承認が必要○ 「白地図」 • 例: 道路や河川は縁を表示 • 道路トポロジを構築できない → 経路探索は無理○ これらを解決できないか?○ しかも世界中の
  23. 23. 実はあります !○ OpenStreetMap ○ 寄ってたかって地図を作る 地図のWikiPedia○ オープンなデータ ○ CC‐BY‐SA • 著作権表示 • ライセンス継承○ 未整備地域は 整備すれば良い
  24. 24. 東北関東大震災関連○ http://sinsai.info/
  25. 25. sinsai.info○ 現地情報をマッピングする ○ モデレータはボランティア○ http://www.ushahidi.com/ を利用○ 地図データは OSM
  26. 26. ところでデスクトップGIS○ GIS = Geographical Information System ○ 地理情報システム○ 分析やデータ加工に利用 ○ 国勢調査データから商圏分析 ○ 標高データから浸水域分析 ○ 空中写真から植生分布の推定○ 今回は詳細は爽やかに無視 ○ あまり知らないんだもん…
  27. 27. こんなかんじ○ 国勢調査 (平17) + 国土数値情報(行政区域)○ 人口(左,福山濃い) 人口密度 (右, 広島濃い)
  28. 28. デスクトップGISは高い○ 某市販品○ 基本で40万円 • データ表示・作成まで○ 追加機能は本体以上の値段 • 空間解析で68万円 • ○○で68万円 … etc
  29. 29. OSSなデスクトップGISあります !○ QGIS (http://www.qgis.org/)○ GRASS (http://grass.osgeo.org/)
  30. 30. 前半のまとめ○ ジオなものでもオープンなものはかなりある○ OSGeoが応援している○ うちのサイトは相当世話になってる○ もちろんApacheもFreeBSDも
  31. 31. 後半につづく○ 12時20分に達していないなら質疑応答もありか もしれない○ 12時30分を過ぎていると早口になると思う
  32. 32. PostGIS
  33. 33. なぜPostGIS ?○ 一番しゃべりやすかったから○ 非ジオとジオとの中間に居るから○ 非ジオな人 = ジオな部分が分からん○ ジオな人 = SQLとかよく分からん
  34. 34. PostGISとは○ PostgreSQL + GIS ○ PostgreSQLは…となりでやってるよね….○ PostgreSQL を拡張 ○ ジオな図形 (点,線,ポリゴン) ○ 空間インデクス (図形に適したインデクス) ○ 幾何関数 (図形の結合,AがBに含むかテスト)○ ライセンスはGPL
  35. 35. マニュアル日本語訳○ http://www.finds.jp/docs/pgisman/
  36. 36. 空間データベース構築方法○ まずはインストール○ PostgreSQLのWindows用インストーラにはPostGISもつ いてくるのでそこから入れる○ ソースからのビルド、インストールも可○ とりあえずPostgreSQL データベース作成○ データベースに叩き込む○ 次のどちらか • psql (DB名) –f /(path) /postgis.sql • createdb ‐T template_postgis (DB名)
  37. 37. PostgreSQLとPostGISの違い○ インデクス○ テスト関数○ 集計関数
  38. 38. インデクス○ インデクスには感謝しても足りない ○ 初心者がインデクス付けてないのを見てキれたことも ありますよね?○ CREATE INDEX IX_市町村コード T_市町村(市町 村コード);
  39. 39. PostGISでは○ CREATE INDEX IX_市町村geom USING GiST T_市町村(geom);○ PostGIS独自インデクスをGiSTで実現
  40. 40. なんら変わらない○ USING GiST が付くだけ
  41. 41. テスト関数○ SELECT * FROM T_市町村 WHERE 人口 >= 20000;○ 人口2万人以上の市町村を抜き出す
  42. 42. PostGISでは○ SELECT * FROM T_市町村 WHERE geom && BBOX(130,30,135,35);○ 130E 30N – 135E 35E の範囲にひっかかる市町 村を抜き出す.
  43. 43. なんら変わらない○ 関数の効果は当然ちがうんですけどね
  44. 44. 集計関数○ SELECT Sum(人口) FROM T_市町村 GROUP BY  都道府県;○ 都道府県ごとの人口を集計する
  45. 45. PostGISでは○ SELECT ST_Union(geom) FROM T_市町村 GROUP  BY 都道府県;○ 市区町村を都道府県ごとにつなぎあわせる → 市区町村ポリゴンから都道府県ポリゴンがで きる ST_UNION(A,B)
  46. 46. なんら変わらないとはちょっと言いにくいけど,そんなに変ではないと思うんだけどどうでしょう
  47. 47. PostGISでひっかかるところ○ データの入手○ 空間参照系
  48. 48. PostGISでひっかかるところ○ データの入手○ 空間参照系
  49. 49. データの入手○ 初めから自作は厳しい○ とりあえずなら国土数値情報○ 国土交通省国土計画局刊行○ “JPGIS” (XMLベース)○ PostGISが対応するのはシェープ形式○ SQL/ダンプ以外の話ね○ ESRI社策定○ GISでは「いったんシェープに変換」が多い ○ ほとんどのGISが対応
  50. 50. 国土数値情報をPostGISに○ 国土数値情報→シェープ ○ 国土数値情報サイトで配布 ○ Windows専用 (パス区切りが ’¥’ 固定) • Javaなのに (´・ω・`)○ シェープ→SQL/ダンプ ○ PostGIS添付の shp2pgsql を使用○ SQL/ダンプ→PostGIS ○ PostgreSQL添付の psql を使用
  51. 51. PostGISでひっかかるところ○ データの入手○ 空間参照系
  52. 52. PostGISは空間参照系に厳しい○ データ投入時に空間参照系が違うとエラー○ 「空間参照系ってなんだよー!?」
  53. 53. 地図は投影変換する○ 直交座標系に変換した方が楽に決まってる○ Sqrt(緯度差^2+経度差^2) で距離計算できない○ 目的に応じて投影法を変える○ メルカトル(近世海図)とか○ 縦メルカトル(戦後の地形図)とか
  54. 54. 地図上の位置を決める要素○ 測地系×投影法×パラメータ○ 測地系: 測量の基準(適用回転楕円体等)○ 投影法: メルカトルとか縦メルカトルとか○ パラメータ: 原点位置,係数等○ ひとつでも違うと値が異なる → 重ね合わせができない
  55. 55. 空間参照系○ 測地系、投影法、パラメータごとに コード番号を振る ○ コードが違うと基本的には重ね合わせ不可○ EPSG (European Petroluem Survey Group) が有名○ “EPSG:4612”等と表記
  56. 56. 日本測地系と世界測地系○ 日本測地系 (Tokyo Datum) 2001年度まで○ 世界測地系 (JGD2000) 2002年度から○ 南西方向に400mほどのズレが出る○ 2001年度までに作製された地図は日本測地系 なので変換が必要○ WGS84 (GPS用)とJGD2000はほぼ同じ ○ JGD2000はGPSの位置を変換なく重ねてOK
  57. 57. 日本でよく使う空間参照系コード 測地系 投影法 その他EPSG:4612 JGD2000 緯度経度EPSG:2443‐2461 JGD2000 横メルカトル 平面直角1系から19系EPSG:3097‐3101 JGD2000 横メルカトル UTM ゾーン51から55EPSG:4326 WGS84 緯度経度EPSG:32651‐32656 WGS84 横メルカトル UTM ゾーン51から55EPSG:4301 Tokyo Datum 緯度経度EPSG:30161‐30179 Tokyo Datum 横メルカトル 平面直角1系から19系EPSG:3092‐3096 Tokyo Datum 横メルカトル UTM ゾーン51から55 半径6378137m メルカトルEPSG:900913 球体※ EPSG:900913 は非公式コード
  58. 58. PostGISは空間参照系に厳しい○ データ投入時にCRSが違うとエラー発生○ 「このカラムはEPSG:4612でしばってるけど EPSG:4301 のデータを入れようとしてるぜ」 • 400mズレたらかなり悲しい○ これがないとユーザが泣く○ 「元データがEPSG:4612のつもりがEPSG:4301のデータ だったの間違えてた、これまでデータ加工で長時間回 してたジョブが無・意・味 … orz」 を防ぐ
  59. 59. 後半のまとめ○ PostGIS = PostgreSQL + GIS○ SQLでしかない、Postgresで書くのと大差ない○ シェープデータがあればPostGISに格納可能 ○ シェープに変換できれば勝ち○ 空間参照系はキツいけどおさえるべし
  60. 60. ここに具体的な使用法が!?○ http://lets.postgresql.jp/documents/tutorial/Pos tGIS○ ごめん宣伝です…
  61. 61. OSGeo日本のイベント○ FOSS4G Tokyo/Osaka ○ Tokyo: 11/5,6,7 ○ Osaka: 11/11,12 (関西オープンフォーラム)○ つづきはWebで http://www.osgeo.jp/○ PostGISのハンズオンがあるらしい ○ 私ではないので安心ですね
  62. 62. ありがとうございました

×