Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
MapServer入門FOSS4G 2012 Hokkaidoハンズオンセッション             北海道地図株式会社 原田英夫
セッションの内容                 インストール                 MapServerとは?                 演習    MapServer入門 - FOSS4G 2012 Hokkaido -2
インストール    MapServer入門 - FOSS4G 2012 Hokkaido -3
インストールの前に…     Apacheがサービスとしてインストールされます        サービス名は[Apache MS4W Web Server]なので被らないはず。        インストール先はMS4Wのフォルダ内なので被らな...
MS4W(MapServer for Windows)を使いま    す    Windows版Mapserverと関連するアプリケーションのパッケージ        学習用途にオススメ(実運用も出来ます)    MS4W 3.0.6(2012...
MS4Wのダウンロード    1. 公式サイト : http://www.maptools.org/ms4w/       (ms4wでググればOK!)    2. Download(or Latest Version)からインストーラをダウン...
MS4Wのインストール-1    注意事項     管理者権限で実行する。     「発行元」に関するセキュリティ警告が出るが実行する。     基本的には全てデフォルトでインストール。      今回はコンポーネント構成にOpenLay...
MS4Wのインストール-2    インストーラ実行画面の一覧                                           右クリックで                                           ...
MS4Wのインストール-3    インストール結果の確認     http://localhost/       をWebブラウザで開く     http://localhost/cgi-bin/mapserv.exe        CG...
MS4Wのインストール 余談      オフラインでインストールしたい      既存Apache(Webサーバ)を使いたい       オンラインインストーラはオフラインzipをダウンロード・展開して、Apacheの設定してるだけ。   ...
MapServerとは?11   MapServer入門 - FOSS4G 2012 Hokkaido -
MapServerとは?       公式サイト http://mapserver.org/       2012/07/01現在のバージョンは6.0.3      地図をWebページで表示するための「マッピングエンジ       ン」の代表...
MapServerが提供する機能      地図描画機能         地図表現に必要な点・線・塗り、注記、記号などの描画設定。         縮尺による描画設定の切り替え。         設定方法・・・Mapfileと呼ばれるテ...
対応データ      対応データフォーマット         ベクトル・・・ ESRI Shapefile, PostGIS(DB), GML/KML,GPX,Spatilite, etc…         ラスタ・・・TIFF/GeoT...
MapServerで使用するGIS用語     以下は押さえておきたい      ESRI Shapefile (シェープファイル)      GeoTIFF (ジオティフ)      PostGIS (ポストジス、ポスジス)     ...
ESRI Shapefileとは      地図情報を格納するためのベクター形式ファイル(点・       線・面)。      ArcGISでお馴染みのESRI社が設計・リリースし、GISではデ       ファクトスタンダードになってい...
GeoTIFF      地理情報向けラスタ形式の代表的フォーマット。      TIFFフォーマットのタグに投影法・測地系、四隅座標など       が記録されている。         GIF/JPEG/PNGはworld fileを用...
PostGIS      OSSのデータベース、PostgreSQLの地理空間情報拡張。      データ格納だけではなく、各種演算機能が豊富に提供され       ている。      空間計測・関係、ジオメトリの構築・変換、フォーマット...
投影法、座標系、測地系、SRID      球体の地球を平面に投影する方法(メルカトル、正距方位       など)      数値(座標)の組み合わせの意味         地理座標系(緯度経度)         平面直角座標系(日本...
WMS・WFS      OGC(Open GIS Consortium)の定めるWeb標準プロトコル         OGCの定める規格に対応することで、異なるアプリケーション、データベース間での地理空間情          報を交換でき...
演習21   MapServer入門 - FOSS4G 2012 Hokkaido -
演習データの配置     1. 演習データ一式(mapserverフォルダ)を        c:ms4wapachehtdocs にコピー。     2. http://localhost/mapserver.html をWebブラウザで開く...
使用するデータ      今回の講習ではOpenStreetMapのベクトルデータを使用し       ています。      QGISのOpenStreetMapプラグインで表示範囲のベクトルデ       ータをダウンロードし、Shape...
例1)レイヤーを表示する      線形上の道路を単一シンボルで表示する         Mapfileの基本的要素で構成してみる      example01/index.htmlとexample01/example.mapをテキスト ...
Mapfile解説 - 例1)レイヤーを表示する               MAP                # データフォルダを相対パスで指定                        MAP,LAYER,CLASSなどのオブジェ...
Mapfileの基本      オブジェクト名は大文字小文字の区別無し      オブジェクトの順序は自由だが、階層関係は重要      インデントはタブでも空白でも良い。       無くてもエラーにはならないがバグの元!      ...
デバッグテクニック      画像が表示されない…(意図したとおりにならない)         画像だけ表示してみる(Webブラウザのコンテキストメニューから)          http://localhost/cgi-bin/mapse...
演習1)Mapfileの編集とデバッグ     1. DATAパラメータの文字列(ファイル名)を適当に変えてみ        る。     2. 前ページのデバッグテクニックを試してみる。     3. DEBUGレベルを変更して、ログファイル...
例2)属性によるスタイル設定      道路種別属性によって描画設定を変えてみる         一つのLAYERに複数のCLASSを定義する         分類に使用する属性項目、属性値の指定を理解する29   MapServer入門...
Mapfile解説 - 例2)属性によるスタイル設定        LAYER                     CLASSITEM・・・LAYERを分類するためのフィールド名         NAME "道路"         DAT...
演習2)属性によるスタイルの変更      CLASSITEMとEXPRESSIONを使用して描画設定を拡張する      パラメータは以下を使用(cf. http://wiki.openstreetmap.org/wiki/JA:Key:...
演習2)解答     LAYER                    CLASS       NAME "道路"                NAME "地方道"       DATA osm_line_road       EXPRESS...
例3)複合条件      CLASSITEMのメリット・デメリット         メリット・・・EXPRESSIONのフィールド名を省略できる。         デメリット・・・単一条件しか指定できない。数値の大小が指定できない。条件毎...
Mapfile解説 - 例3)複合条件の例       # CLASSITEM "HIGHWAY"        CLASSITEM                                        を       CLASS   ...
演習3)複合条件      道路名(フィールド名 NAME)が付与されている道路を赤、       それ以外を全て同じ灰にする。         マニュアルによると…          length ( “String1” )       ...
演習3)解答     CLASS      NAME "名前付きの道路"      EXPRESSION (length("[name]") > 0)      STYLE       COLOR 255 32 32       WIDTH 2...
演習3)解答     CLASS       NAME "名前付きの主要道路"       EXPRESSION (length("[name]") > 0 && "[HIGHWAY]" = "primary")       STYLE    ...
例4)ラベル(注記)表示      ラベル(注記)を表示する         FONTSET・・・フォントのエイリアスとファイル名のリスト         LABELITEM・・・表示するテキストのフィールド名         LABE...
Mapfile解説 - 例4)ラベル(注記)表示       FONTSET "../fonts/fonts.list“      ~~~~~~                                                 m...
例5)WMSサーバとして使う      JavaScriptによるWebマップライブラリであるOpenLayersと       の組み合わせによるWMSサーバの設定      今までのMapfileにWMS設定を加える。      Op...
Mapfile解説 -例5)WMSサーバとして使う       WEB       METADATA        "wms_title" "WMS Server"        "wms_onlineresource" "http://loc...
OpenLayers解説 -例5)WMSサーバとして使う      <script type="text/javascript">         var lon = 141.360;                              ...
OpenLayersとMapserver(WMS)の関係                                                                                              ...
OpenLayersとMapserver(WMS)の関係     OpenLayersは前ページのMapServer呼び出しを繰り返し行い     、     タイリング表示する44   MapServer入門 - FOSS4G 2012 Ho...
演習5)WMSサーバとして使う     ※例4)のMapfileをベースにします。      エリア(とラベル)レイヤも表示されるように変更する。      画像フォーマットを変えてみる。(jpeg/png/gif)      OpenL...
演習5)解答         エリア(とラベル)レイヤも表示されるように変更する。     lesson-1.html(JavaScript)     var layer = new OpenLayers.Layer.WMS( "MapServ...
演習5)解答            MapSeverのレイヤを、OpenLayers上のレイヤで分離してみる            。                                                       ...
演習5)解答     MapSeverのレイヤを、OpenLayers上のレイヤで分離してみる     。                                  isBaseLayer:falseのレイヤは             ...
謝辞               お疲れ様でした!      FOSS4G 2011 Tokyoで行われたMapServerハンズオン       (株式会社オークニーさま)       を参考に作成しました。      OpenStree...
Upcoming SlideShare
Loading in …5
×

Map server入門 - FOSS4G 2012 Hokkaido

15,737 views

Published on

使用したファイルはこちらから
https://www.dropbox.com/s/vwt99bf0hqbl51z/MapServer-lesson-foss4g-hkd-0701.zip

Published in: Technology

Map server入門 - FOSS4G 2012 Hokkaido

  1. 1. MapServer入門FOSS4G 2012 Hokkaidoハンズオンセッション 北海道地図株式会社 原田英夫
  2. 2. セッションの内容  インストール  MapServerとは?  演習 MapServer入門 - FOSS4G 2012 Hokkaido -2
  3. 3. インストール MapServer入門 - FOSS4G 2012 Hokkaido -3
  4. 4. インストールの前に…  Apacheがサービスとしてインストールされます  サービス名は[Apache MS4W Web Server]なので被らないはず。  インストール先はMS4Wのフォルダ内なので被らないはず。  Webブラウザで http://localhost/ を開く →つながってしまったら…ひとまず停める。またはMS4Wインストール時にポートを変える。  テキストエディタはUTF8対応を使いましょう  Windows付属のメモ帳はちょっと…(BOMが付く)  TeraPad,Vim,Emacsなどがお勧め MapServer入門 - FOSS4G 2012 Hokkaido -4
  5. 5. MS4W(MapServer for Windows)を使いま す Windows版Mapserverと関連するアプリケーションのパッケージ 学習用途にオススメ(実運用も出来ます) MS4W 3.0.6(2012/05/26リリース)の標準コンポーネント  Apache HTTP Server version 2.2.22  PHP version 5.4.3  MapServer CGI 6.0.3  MapScript 6.0.3 (CSharp, Java, PHP, Python)  Includes support for Oracle 11g, and SDE data (if you have associated client/dlls)  MrSID support built-in  GDAL/OGR 1.9.1 and Utilities  MapServer Utilities  PROJ Utilities  Shapelib Utilities  Shp2tile Utility  Shpdiff Utility  AVCE00 Utilities  OGR/PHP Extension 1.0.0  OWTChart 1.2.0 MapServer入門 - FOSS4G 2012 Hokkaido -5
  6. 6. MS4Wのダウンロード 1. 公式サイト : http://www.maptools.org/ms4w/ (ms4wでググればOK!) 2. Download(or Latest Version)からインストーラをダウン ロード setup.exe installer(142KB)はオンラインインストーラ ↑今回はこちらを使います zip Archive(49MB)はオフラインインストーラ ms4w-3.0.6-setup.exe MapServer入門 - FOSS4G 2012 Hokkaido -6
  7. 7. MS4Wのインストール-1 注意事項  管理者権限で実行する。  「発行元」に関するセキュリティ警告が出るが実行する。  基本的には全てデフォルトでインストール。 今回はコンポーネント構成にOpenLayersを追加  インストールパスはCドライブ直下(c:)にする。 少なくとも日本語パスやスペースを含むパスは避ける(安全策)  他のWebサーバ(Apache/IIS, etc.)があればポートを変更する。 MapServer入門 - FOSS4G 2012 Hokkaido -7
  8. 8. MS4Wのインストール-2 インストーラ実行画面の一覧 右クリックで ログをクリップボード に コピーできる MapServer入門 - FOSS4G 2012 Hokkaido -8
  9. 9. MS4Wのインストール-3 インストール結果の確認  http://localhost/ をWebブラウザで開く  http://localhost/cgi-bin/mapserv.exe  CGIで動作します  Linuxでは末尾の.exe不要9 MapServer入門 - FOSS4G 2012 Hokkaido -
  10. 10. MS4Wのインストール 余談  オフラインでインストールしたい  既存Apache(Webサーバ)を使いたい オンラインインストーラはオフラインzipをダウンロード・展開して、Apacheの設定してるだけ。 Apacheのインストール知識があれば、オンラインインストールの結果&ログファイルを参考にすると 良い。  OSGeo4Wを薦められたけど… 現在(2012/7)はMapServerが一つ前のメジャーバージョン(5.x)、 6.xと完全な互換性は無いので注意!! MapServer入門 - FOSS4G 2012 Hokkaido -10
  11. 11. MapServerとは?11 MapServer入門 - FOSS4G 2012 Hokkaido -
  12. 12. MapServerとは? 公式サイト http://mapserver.org/ 2012/07/01現在のバージョンは6.0.3  地図をWebページで表示するための「マッピングエンジ ン」の代表格。  90年代中期から開発が始まり、2004年に国際化対応される。  国内の官公庁・一般企業のサイトでの採用も進み、 Mapionの地図描画にも採用されている。  標準規格のOGC(Open GIS Consortium)仕様に対応。  Linux(UNIX)、Mac OS X、Windowsバイナリが配布されてい る。  もちろんオープンソースなのでソースからビルドできる。12 MapServer入門 - FOSS4G 2012 Hokkaido -
  13. 13. MapServerが提供する機能  地図描画機能  地図表現に必要な点・線・塗り、注記、記号などの描画設定。  縮尺による描画設定の切り替え。  設定方法・・・Mapfileと呼ばれるテキストファイル。  地図表示機能  Shapefile、地理DBなどから地図データ(画像、ベクトル)を作成する。  整飾(凡例、参照図、スケールバー画像など)も作成できる。  On-the-flyに投影法変換もできる→I/Oそれぞれで投影法が混在できる。  OGCに基づくWebサービスに対応  WMS,WFS,GML,SLD etc…  mapserver –v で確認する  開発言語・環境への対応  PHP,Python,Perl,Ruby,Java,.NET  総合GIS環境ではない  UI、解析、データ管理機能は外部ツールを使用する。13 MapServer入門 - FOSS4G 2012 Hokkaido -
  14. 14. 対応データ  対応データフォーマット  ベクトル・・・ ESRI Shapefile, PostGIS(DB), GML/KML,GPX,Spatilite, etc…  ラスタ・・・TIFF/GeoTIFF, Erdas LAN/GIS, GIF/PNG/JPEG(world fileが必要)  gdalinfo --formats、ogrinfo --formatsで確認する(環境変数を適用するためにMS4W-Shellを使用する)14 MapServer入門 - FOSS4G 2012 Hokkaido -
  15. 15. MapServerで使用するGIS用語 以下は押さえておきたい  ESRI Shapefile (シェープファイル)  GeoTIFF (ジオティフ)  PostGIS (ポストジス、ポスジス)  投影法、座標系、測地系、SRID(A Spatial Reference System Identifier)  WMS、WFS 英語ですが http://mapserver.org/glossary.html にも載ってます。15 MapServer入門 - FOSS4G 2012 Hokkaido -
  16. 16. ESRI Shapefileとは  地図情報を格納するためのベクター形式ファイル(点・ 線・面)。  ArcGISでお馴染みのESRI社が設計・リリースし、GISではデ ファクトスタンダードになっている。  ファイルは形状(.shp)、属性(.dbf)、インデクス(.shx)の3つ 一組。 投影定義の.projなどのオプションファイルもある  MapServerの標準的なデータ形式の一つ。  属性は固定長、2GBの壁、フィールド数制限があり、大規 模データには向かない。16 MapServer入門 - FOSS4G 2012 Hokkaido -
  17. 17. GeoTIFF  地理情報向けラスタ形式の代表的フォーマット。  TIFFフォーマットのタグに投影法・測地系、四隅座標など が記録されている。  GIF/JPEG/PNGはworld fileを用いる→画像+world fileでは投影法・測地系は判らない。  詳細はgdalinfoやlistgeo(libgeotiff lib utility)で確認する。  公式サイト→http://trac.osgeo.org/geotiff/17 MapServer入門 - FOSS4G 2012 Hokkaido -
  18. 18. PostGIS  OSSのデータベース、PostgreSQLの地理空間情報拡張。  データ格納だけではなく、各種演算機能が豊富に提供され ている。  空間計測・関係、ジオメトリの構築・変換、フォーマット 変換。  基本的なSQLを覚える必要はあるが、大規模データやネッ トワーク共有(DBサーバを分ける)を考えているなら必携。  公式サイト→http://postgis.refractions.net/  日本語に翻訳されたマニュアル(農研機構) →http://www.finds.jp/docs/pgisman/18 MapServer入門 - FOSS4G 2012 Hokkaido -
  19. 19. 投影法、座標系、測地系、SRID  球体の地球を平面に投影する方法(メルカトル、正距方位 など)  数値(座標)の組み合わせの意味  地理座標系(緯度経度)  平面直角座標系(日本全国に19原点、メートル単位のXY座標)  UTM/ユニバーサルメルカトル(地球を南北方向の帯で分割、メートル単位のXY座標)  ある位置を経緯度・標高により表すときの前提条件  日本測地系(旧日本測地系、Tokyo Datum)  世界測地系(新日本測地系、JGD2000)  ↑のパラメータをIDで管理・指定するのがSRID(EPSGコード )  4301:緯度経度 日本測地系(Tokyo)  4326:緯度経度 世界測地系(WGS84)  4612:緯度経度 世界測地系(JGD2000)  3857 or 900913:Webメルカトル、Google投影  日本でよく使われるコード→ http://www.finds.jp/docs/pgisman/2.0.0/postgis.html#srs_in_japan19 MapServer入門 - FOSS4G 2012 Hokkaido -
  20. 20. WMS・WFS  OGC(Open GIS Consortium)の定めるWeb標準プロトコル  OGCの定める規格に対応することで、異なるアプリケーション、データベース間での地理空間情 報を交換できる。  WMS(Web Map Service)  ベクトル/ラスター形式の地図データをラスター形式で生成、取得する。  WebブラウザではWMSでの利用が一般的。  WFS(Web Feature Service)  ベクトル形式の地図データをGML(Geography Markup Language)形式で生成、取得。  デスクトップGISや属性取得・表示用途に使用される。  Webブラウザでもレンダリングできるが、現段階では重い→HTML5,WebGL/MapGL普及に期待。  GMLもOGCが仕様策定。20 MapServer入門 - FOSS4G 2012 Hokkaido -
  21. 21. 演習21 MapServer入門 - FOSS4G 2012 Hokkaido -
  22. 22. 演習データの配置 1. 演習データ一式(mapserverフォルダ)を c:ms4wapachehtdocs にコピー。 2. http://localhost/mapserver.html をWebブラウザで開く。 3. example01/index.htmlをエディタで開き、<img>タグのsrc パラメータを確認する。 src=“/cgi-bin/mapserv.exe?map=../htdocs/mapserver/example01/example.map&mode=map” • mapパラメータ・・・Mapfileのパス。MapServer CGIからの相対パス指定。 • modeパラメータ・・・生成するファイル種別。”map”は地図画像を生成する。 • 詳しくは http://mapserver.org/cgi/controls.html22 MapServer入門 - FOSS4G 2012 Hokkaido -
  23. 23. 使用するデータ  今回の講習ではOpenStreetMapのベクトルデータを使用し ています。  QGISのOpenStreetMapプラグインで表示範囲のベクトルデ ータをダウンロードし、Shapefileに変換しました。23 MapServer入門 - FOSS4G 2012 Hokkaido -
  24. 24. 例1)レイヤーを表示する  線形上の道路を単一シンボルで表示する  Mapfileの基本的要素で構成してみる  example01/index.htmlとexample01/example.mapをテキスト エディタで開く24 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  25. 25. Mapfile解説 - 例1)レイヤーを表示する MAP # データフォルダを相対パスで指定  MAP,LAYER,CLASSなどのオブジェクトから構成されて SHAPEPATH "../data" いる。オブジェクトはENDで閉じられる。 PROJECTION  SHAPEPATH・・・データフォルダのパス。絶対パス、 "init=epsg:4326" # WGS84 あるいはマップファイルからの相対パス指定 END EXTENT 141.330 43.040 141.380 43.080  PROJECTION・・・地図の投影法  EXTENT・・・地図の出力範囲 IMAGETYPE PNG IMAGECOLOR 255 255 240  IMAGETYPE・・・画像形式 SIZE 500 400  IMAGECOLOR・・・背景色 LAYER NAME "道路"  SIZE・・・画像サイズ(px) # osm_line_road.shpでも良い DATA osm_line_road  MAP・・・MAPオブジェクトは必須であり、常に最も STATUS DEFAULT 外側になる。 TYPE LINE  LAYER・・・データソース、スタイルから構成される CLASS STYLE 。 COLOR 255 128 0  NAME・・・省略可だが、なるべく付ける。 WIDTH 2.0 END  DATA・・・データソース(ファイル名)。拡張子を省略 END END するとShapefileと見なす。 END  TYPE・・・ジオメトリタイプ。POINT/LINE/POLYGON、 RASTER。  CLASS・・・LAYERを分類するための構成要素。  STYLE・・・視覚的設定の項目。25 MapServer入門 - FOSS4G 2012 Hokkaido -
  26. 26. Mapfileの基本  オブジェクト名は大文字小文字の区別無し  オブジェクトの順序は自由だが、階層関係は重要  インデントはタブでも空白でも良い。 無くてもエラーにはならないがバグの元!  文字列はダブルクォート推奨  コメントは # で始める26 MapServer入門 - FOSS4G 2012 Hokkaido -
  27. 27. デバッグテクニック  画像が表示されない…(意図したとおりにならない)  画像だけ表示してみる(Webブラウザのコンテキストメニューから) http://localhost/cgi-bin/mapserv.exe?map=../htdocs/mapserver/example01/example.map&mode=map  Mapfileにデバッグ設定を加える(パフォーマンスチューニングにも使える) MAP DEBUG 2 CONFIG "MS_ERRORFILE" "/ms4w/tmp/ms_error.txt" # データフォルダを相対パスで指定 SHAPEPATH "../data" DEBUG ・・・ 0-5で出力レベルを変更する CONFIG “MS_ERRORFILE” ・・・ログファイルを指定。絶対パス or Mapfileからの相対パス。累積 されるので長期運用時は注意!27 MapServer入門 - FOSS4G 2012 Hokkaido -
  28. 28. 演習1)Mapfileの編集とデバッグ 1. DATAパラメータの文字列(ファイル名)を適当に変えてみ る。 2. 前ページのデバッグテクニックを試してみる。 3. DEBUGレベルを変更して、ログファイルの内容を観察す る。28 MapServer入門 - FOSS4G 2012 Hokkaido -
  29. 29. 例2)属性によるスタイル設定  道路種別属性によって描画設定を変えてみる  一つのLAYERに複数のCLASSを定義する  分類に使用する属性項目、属性値の指定を理解する29 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  30. 30. Mapfile解説 - 例2)属性によるスタイル設定 LAYER  CLASSITEM・・・LAYERを分類するためのフィールド名 NAME "道路" DATA osm_line_road  EXPRESSION・・・CLASSITEMの属性値。各CLASSに一つ定義する。 STATUS DEFAULT LAYERの最後のCLASSでEXPRESSIONを定義しないことで「その他」を定 TYPE LINE 義できる。 CLASSITEM "HIGHWAY" CLASS  EXPRESSIONを宣言すると、そのLAYERではフィールド名を省略できる EXPRESSION "trunk" STYLE 。 COLOR 127 201 127 WIDTH 3.0  数値も文字列も引用符が必要。 END  複雑な条件は定義できない。 END # else CLASS STYLE COLOR 128 128 128 WIDTH 0.5 END END END30 MapServer入門 - FOSS4G 2012 Hokkaido -
  31. 31. 演習2)属性によるスタイルの変更  CLASSITEMとEXPRESSIONを使用して描画設定を拡張する  パラメータは以下を使用(cf. http://wiki.openstreetmap.org/wiki/JA:Key:highway) 種別 属性値(文字列) 色(RGB) 線幅 国道 trunk 緑(127 201 127) 2.0 主要道路 primary 赤(228 109 113) 1.5 地方道 secondary オレンジ(253 191 11) 1.5 一般道 tertiary 青(65 105 125) 1.0 その他 - 灰(128 128 128) 0.5 ※色と線幅は参考値です31 MapServer入門 - FOSS4G 2012 Hokkaido -
  32. 32. 演習2)解答 LAYER CLASS NAME "道路" NAME "地方道" DATA osm_line_road EXPRESSION "secondary" STATUS DEFAULT STYLE TYPE LINE COLOR 253 191 11 WIDTH 1.0 CLASSITEM "HIGHWAY" END END CLASS NAME "国道" CLASS EXPRESSION "trunk" NAME "一般道" STYLE EXPRESSION "tertiary" COLOR 127 201 127 STYLE WIDTH 1.5 COLOR 65 105 225 END WIDTH 1.0 END END END CLASS NAME "主要道路" # else EXPRESSION "primary" CLASS STYLE NAME "その他" COLOR 228 109 113 STYLE WIDTH 1.5 COLOR 128 128 128 END WIDTH 0.5 END END END END32 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  33. 33. 例3)複合条件  CLASSITEMのメリット・デメリット  メリット・・・EXPRESSIONのフィールド名を省略できる。  デメリット・・・単一条件しか指定できない。数値の大小が指定できない。条件毎にCLASSが必 要。  EXPRESSION http://mapserver.org/mapfile/expressions.html  複合条件を使う場合はCLASSITEMを使わずに、EXPRESSION にフィールド名も含めて記述する  フィールド名を[]で囲む。文字列フィールドは”*フィール ド名+”。  演算子は AND,OR,NOTあるいは&&,||,!の様に文字列・記号 の両方が使える。33 MapServer入門 - FOSS4G 2012 Hokkaido -
  34. 34. Mapfile解説 - 例3)複合条件の例 # CLASSITEM "HIGHWAY" CLASSITEM を CLASS 無効に NAME "国道" EXPRESSION ("[HIGHWAY]" = "trunk") STYLE “*フィールド名+” = “属性 COLOR 127 201 127 値” WIDTH 1.5 END END CLASS NAME "主要道路/地方道/一般道" EXPRESSION ("[HIGHWAY]" = "primary“ OR "[HIGHWAY]" eq "secondary“ || "[HIGHWAY]" = "tertiary“) STYLE COLOR 228 109 113 WIDTH 1.5 条件を()で囲む END END34 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  35. 35. 演習3)複合条件  道路名(フィールド名 NAME)が付与されている道路を赤、 それ以外を全て同じ灰にする。  マニュアルによると… length ( “String1” ) returns the number of characters of “String1”  上記に加えて道路種別が primary 且つ 道路名が付与されて いる道路は青にする。35 MapServer入門 - FOSS4G 2012 Hokkaido -
  36. 36. 演習3)解答 CLASS NAME "名前付きの道路" EXPRESSION (length("[name]") > 0) STYLE COLOR 255 32 32 WIDTH 2.0 END END CLASS STYLE COLOR 128 128 128 WIDTH 0.5 END END36 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  37. 37. 演習3)解答 CLASS NAME "名前付きの主要道路" EXPRESSION (length("[name]") > 0 && "[HIGHWAY]" = "primary") STYLE COLOR 32 32 255 WIDTH 2.0 END END CLASS NAME "名前付きの道路(主要道路を除く)" EXPRESSION (length("[name]") > 0) STYLE COLOR 255 32 32 WIDTH 2.0 END END CLASS STYLE COLOR 128 128 128 WIDTH 0.5 END END37 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  38. 38. 例4)ラベル(注記)表示  ラベル(注記)を表示する  FONTSET・・・フォントのエイリアスとファイル名のリスト  LABELITEM・・・表示するテキストのフィールド名  LABEL・・・ラベル設定。CLASSにぶら下がり、STYLEと並列。38 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  39. 39. Mapfile解説 - 例4)ラベル(注記)表示 FONTSET "../fonts/fonts.list“ ~~~~~~ mincho ipaexm.ttf LAYER gothic ipaexg.ttf NAME "注記" DATA osm_polygon STATUS DEFAULT TYPE POLYGON フィールド 名 LABELITEM "NAME" ~~~~~~ LABEL http://ossipedia.ipa.go.jp/ipafont/index.html TYPE TRUETYPE # FONT mincho FONT gothic データソースの #ENCODING SJIS 文字コード ENCODING CP932 SIZE 8 COLOR 255 0 0 END END END39 MapServer入門 - FOSS4G 2012 Hokkaido -
  40. 40. 例5)WMSサーバとして使う  JavaScriptによるWebマップライブラリであるOpenLayersと の組み合わせによるWMSサーバの設定  今までのMapfileにWMS設定を加える。  OpenLayersの基礎も少しかじってみる。40 MapServer入門 - FOSS4G 2012 Hokkaido - Map data © OpenStreetMap contributors, CC BY-SA
  41. 41. Mapfile解説 -例5)WMSサーバとして使う WEB METADATA "wms_title" "WMS Server" "wms_onlineresource" "http://localhost/cgi-bin/mapserv.exe?map=../htdocs/mapserver/example05/example.map&" "wms_srs" "EPSG:4326" MapServer6.0から必要 "ows_enable_request" "*" に END # IMAGEPATH "/ms4w/tmp/ms_tmp/" # IMAGEURL "/ms_tmp/" 一時ファイルのディレクトリと URL END ~~~~~~~~ LAYER LAYER-NAMEは重要 NAME "label“ STATUS ON ~~~~~~~~ LAYER STATUSをDEFAULTからONに変更 NAME “line“ DEFAULTは常に表示されてしま STATUS ON う41 MapServer入門 - FOSS4G 2012 Hokkaido -
  42. 42. OpenLayers解説 -例5)WMSサーバとして使う <script type="text/javascript"> var lon = 141.360; map = new OpenLayers.Map( map, { controls : controls, var lat = 43.060; maxScale : 1000, var zoom = 8; minScale : 500000 var map; }); CGIに渡すパラメー var layer = new OpenLayers.Layer.WMS( "MapServer WMS", function init(){ タ "/cgi-bin/mapserv.exe", var controls = [ { new OpenLayers.Control.MousePosition(), map : "../htdocs/mapserver/example05/example.map", new OpenLayers.Control.KeyboardDefaults(), layers: "line", new OpenLayers.Control.Navigation(), format: "image/jpeg“ 表示するレイヤ new OpenLayers.Control.LayerSwitcher(), }, { LAYER new OpenLayers.Control.Scale(), isBaseLayer : true NAME “line” new OpenLayers.Control.PanZoomBar() } ]; ); map.addLayer(layer); map.setCenter(new OpenLayers.LonLat(lon, lat), zoom); OpenLayersの } レイヤパラメータ </script>42 MapServer入門 - FOSS4G 2012 Hokkaido -
  43. 43. OpenLayersとMapserver(WMS)の関係 WMS (MapServer) JavaScript (Webブラウザ) mapserver CGIに渡すパラメータ 前ページで明示的に MAP:../htdocs/mapserver/example05/example.map 指定 LAYERS:line FORMAT:image/jpeg SERVICE:WMS VERSION:1.1.1 REQUEST:GetMap STYLES: SRS:EPSG:4326 BBOX:141.33082992616,43.061780384578,141.3456030782,43.076553536614 画像サイズのデフォ WIDTH:256 ルトは256x256 HEIGHT:256 面倒な座標計算は OpenLayersが担当43 MapServer入門 - FOSS4G 2012 Hokkaido -
  44. 44. OpenLayersとMapserver(WMS)の関係 OpenLayersは前ページのMapServer呼び出しを繰り返し行い 、 タイリング表示する44 MapServer入門 - FOSS4G 2012 Hokkaido -
  45. 45. 演習5)WMSサーバとして使う ※例4)のMapfileをベースにします。  エリア(とラベル)レイヤも表示されるように変更する。  画像フォーマットを変えてみる。(jpeg/png/gif)  OpenLayersのパラメータを変更してみる。(maxScale、 Controlなど)  MapSeverのレイヤを、OpenLayers上のレイヤで分離してみ る。45 MapServer入門 - FOSS4G 2012 Hokkaido -
  46. 46. 演習5)解答 エリア(とラベル)レイヤも表示されるように変更する。 lesson-1.html(JavaScript) var layer = new OpenLayers.Layer.WMS( "MapServer WMS - Road&Area", "/cgi-bin/mapserv.exe", { map : "../htdocs/mapserver/example05/example.map", layers: "line,label", format: "image/jpeg" }, { LAYER-NAMEを isBaseLayer : true カンマで列挙す } ); る MapServerが生成する画像 は 複数レイヤが合成されてい 予めlabel,lineレイヤは記述しておくが る layersに指定しないと描画されない。(例5の状態) →Mapfileを変更しないでも描画レイヤを設定できる。46 MapServer入門 - FOSS4G 2012 Hokkaido -
  47. 47. 演習5)解答 MapSeverのレイヤを、OpenLayers上のレイヤで分離してみる 。 var layerLine = new OpenLayers.Layer.WMS( "MapServer WMS - Road", lesson-2.html(JavaScript) (JavaScript修正のみでOK) "/cgi-bin/mapserv.exe", var layerLabel = new OpenLayers.Layer.WMS( "MapServer WMS - Area", { "/cgi-bin/mapserv.exe", map : "../htdocs/mapserver/example05/example.map", { layers: "line", map : "../htdocs/mapserver/example05/example.map", format: "image/png", layers: "label", transparent: true format: "image/png", }, { transparent: true isBaseLayer : false }, { 透過画像に変更 } ); どちらかのisBaseLayer isBaseLayer : true をfalseにする } ); map.addLayer(layerLabel); map.addLayer(layerLine);47 MapServer入門 - FOSS4G 2012 Hokkaido -
  48. 48. 演習5)解答 MapSeverのレイヤを、OpenLayers上のレイヤで分離してみる 。 isBaseLayer:falseのレイヤは 表示/非表示を切り替えられ る • MapServerは単一レイヤの透過画像を生成 • OpenLayersがブラウザ上でレイヤを重ねる →画像を再取得しないで表示/非表示が切り替えられ る48 MapServer入門 - FOSS4G 2012 Hokkaido -
  49. 49. 謝辞 お疲れ様でした!  FOSS4G 2011 Tokyoで行われたMapServerハンズオン (株式会社オークニーさま) を参考に作成しました。  OpenStreetMapのベクトルデータを使用しました。49 MapServer入門 - FOSS4G 2012 Hokkaido -

×