wmsのおさらい
shapefileをOpenLayersで表示させようとした場合、方法としては、
-
直接読み込んで使う。 js2shapefileなど。
-
GeoJSONに変換して使う。
-
MapServerを使ってWMSとして使う。
の3点になるかと思います。
GeoJSONとして読み込むとVector Dataで利用できるため、座標値や属性値を利用することができます。一方、WMSで利用すると画像としての配信となるので、どちらかと言うと背景図に近い形となります。
今回は、OpenLayersを使ってみる[Chapter 1] でせっかくms4w-3.0.6をインストールしたので、自前でWMSを提供して、Tree Actionに追加してみます。
GeoExt1.1でTree Actionを使ってみる。[Chapter 9] では、exampleとしてTasmaniaのdemo wmsを使っていましたが、この部分を入れ替えることになります。
ますは、ms4w-3.0.6でのoverlayについてから、mapfileを作成します。
layerは、県界、市町村界、主要道路、水域、鉄道、標高ラスターとしています。
mapfileは、C:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.mapに作成します。
EPSGは4326で世界測地系です。
そのcodeは、
# wms map file MAP NAME "WMS-MAP" # Map image size SIZE 600 480 UNITS dd EXTENT 138.870901 35.096973 139.794999 35.715121 FONTSET "../fonts/msfontset.txt" #SYMBOLSET "../symbols/symbols-pmapper.sym" # Ver6.0よりsymbol変更のため未使用にする。 SHAPEPATH "../data" # #EPSG:4326(JGD_2000 WGS84) # PROJECTION "init=EPSG:4326" #"init=EPSG:3785" END TRANSPARENT ON #for OpenLayers.Layer.MapServer # Background color for the map canvas -- change as desired IMAGECOLOR 255 255 255 IMAGEQUALITY 95 IMAGETYPE png OUTPUTFORMAT NAME png DRIVER 'GD/PNG' MIMETYPE 'image/png' IMAGEMODE RGBA EXTENSION 'png' TRANSPARENT OFF END # Web interface definition. Only the template parameter # is required to display a map. See MapServer documentation WEB METADATA "wms_title" "WMS Server" "wms_onlineresource" "http://localhost/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.map&" "wms_srs" "EPSG:4326 EPSG:3857" "ows_enable_request" "*" #"wms_enable_request" "*" END IMAGEPATH "/ms4w/tmp/ms_tmp/" IMAGEURL "/ms_tmp/" END # # raster layer (shp file) # #神奈川県 標高ラスター LAYER NAME "height" TYPE RASTER DUMP true TEMPLATE fooOnlyForWMSGetFeatureInfo EXTENT 138.841265 34.953235 139.870265 35.848283 DATA 'c14_ras2qgs.tif' METADATA 'ows_title' 'height' END STATUS OFF TRANSPARENCY 100 PROJECTION 'init=EPSG:4326' #'proj=longlat' #'ellps=WGS84' #'datum=WGS84' #'no_defs' END END # # Vector layer (shp file) # #県界 LAYER NAME 'kanagawa' TYPE POLYGON DUMP true TEMPLATE fooOnlyForWMSGetFeatureInfo #EXTENT 138.870901 35.096973 139.794999 35.715121 DATA 'c14_pref.shp' METADATA 'ows_title' 'kanagawa' END STATUS ON #OFF TRANSPARENCY 50 PROJECTION 'init=EPSG:4326' #'proj=longlat' #'ellps=WGS84' #'datum=WGS84' #'no_defs' END CLASS NAME 'kanagawa' STYLE SYMBOL 0 SIZE 7.0 OUTLINECOLOR 255 10 10 COLOR 200 5 76 # -1 -1 -1 WIDTH 3 END END END #市区町村界 LAYER NAME 'region' TYPE POLYGON DUMP true TEMPLATE fooOnlyForWMSGetFeatureInfo #EXTENT 138.870901 35.096973 139.794999 35.715121 DATA 'c14_region' METADATA 'ows_title' 'region' END STATUS ON #OFF TRANSPARENCY 100 PROJECTION 'init=EPSG:4326' #'proj=longlat' #'ellps=WGS84' #'datum=WGS84' #'no_defs' END CLASS NAME 'region' STYLE SYMBOL 0 SIZE 7.0 OUTLINECOLOR 255 0 0 COLOR -1 -1 -1 #255 5 76 WIDTH 2 END END END #水涯線 LAYER NAME 'water' TYPE LINE DUMP true TEMPLATE fooOnlyForWMSGetFeatureInfo #EXTENT 138.870901 35.096973 139.794999 35.715121 DATA 'c14_water.shp' METADATA 'ows_title' 'water' END STATUS OFF TRANSPARENCY 100 PROJECTION 'init=EPSG:4326' #'proj=longlat' #'ellps=WGS84' #'datum=WGS84' #'no_defs' END CLASS NAME 'water' STYLE SYMBOL 0 SIZE 7.0 #OUTLINECOLOR 170 170 255 COLOR 170 170 255 #0 0 0 WIDTH 2 END END END #主要道路 LAYER NAME 'road' TYPE LINE DUMP true TEMPLATE fooOnlyForWMSGetFeatureInfo #EXTENT 138.870901 35.096973 139.794999 35.715121 DATA 'c14_road.shp' METADATA 'ows_title' 'road' END STATUS ON TRANSPARENCY 100 PROJECTION 'init=EPSG:4326' #'proj=longlat' #'ellps=WGS84' #'datum=WGS84' #'no_defs' END CLASS NAME 'road' STYLE SYMBOL 0 SIZE 7.0 #OUTLINECOLOR 162 42 42 COLOR 162 42 42 #0 0 0 WIDTH 2 END END END #鉄道 LAYER NAME 'railroad' TYPE LINE DUMP true TEMPLATE fooOnlyForWMSGetFeatureInfo #EXTENT 138.870901 35.096973 139.794999 35.715121 DATA 'c14_railroad.shp' METADATA 'ows_title' 'railroad' END STATUS ON TRANSPARENCY 100 PROJECTION 'init=EPSG:4326' #'proj=longlat' #'ellps=WGS84' #'datum=WGS84' #'no_defs' END CLASS Name 'railroad' STYLE SYMBOL 0 SIZE 7.0 COLOR 102 102 102 WIDTH 2 END END END END END
htmlについては、ms4w-3.0.6でのoverlayについてを参考にしてください。
な感じで、表示されます。
Tree Actionの変更
次に、GeoExt1.1でTree Actionを使ってみる。[Chapter 9] のjavascriptを変更します。
変更する部分は、Layerの定義とmapの定義の部分です。
修正点だけですが、
// Base Layer var prefLayer = new OpenLayers.Layer.WMS("神奈川県", "http://localhost/cgi-bin/mapserv.exe", { map : "c:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.map", layers : "kanagawa", format : "image/png", transparent : true }, { buffer : 0, isBaseLayer : true, // exclude this layer from layer container nodes displayInLayerSwitcher : false }); // var regionLayer = new OpenLayers.Layer.WMS("市区町村界", "http://localhost/cgi-bin/mapserv.exe", { map : "c:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.map", layers : "region", format : "image/png", transparent : true }, { buffer : 0, isBaseLayer : false // true }); var roadLayer = new OpenLayers.Layer.WMS("主要道路", "http://localhost/cgi-bin/mapserv.exe", { map : "c:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.map", layers : "road", format : "image/png", transparent : true }, { buffer : 0, isBaseLayer : false }); var railroadLayer = new OpenLayers.Layer.WMS("鉄道", "http://localhost/cgi-bin/mapserv.exe", { map : "c:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.map", layers : "railroad", format : "image/png", transparent : true }, { buffer : 0, isBaseLayer : false }); var waterLayer = new OpenLayers.Layer.WMS("水域", "http://localhost/cgi-bin/mapserv.exe", { map : "c:/ms4w/Apache/htdocs/mapserver/example/kanagawa_wms.map", layers : "water", format : "image/png", transparent : true }, { buffer : 0, isBaseLayer : false }); // layerの追加 map.addLayers([prefLayer, regionLayer, roadLayer, railroadLayer, waterLayer]); // map center var lonlat = new OpenLayers.LonLat(139.35, 35.40); map.setCenter(lonlat, 10);
となります。
な感じで、表示されます。
tree panel上にiconにmouse overでup,down,deleteなどやLayerの表示順を変更することができます。
今回のまとめ
GeoEXTでWMSサービスを追加してみました。
今回のBase Layerをgoogle mapや電子国土、基盤地図情報WMS配信サービスなどに変更をtryしてください。
さて、次回はprintについてtryしてみます。GeoServerやMapFishが必要なんて書いていますので、そこら辺からやっていくことになります。
Comments are closed.