2013年11月26日火曜日

24 - あきる野市の地図をWFSで表示 1 - WFS サーバを設定(東京都)

24-1 東京都のマップファイルに WFS サーバを設定
WFS を利用して地図に属性を表示します。
WFS(Web Feature Service)は、座標や属性など、実際の地物のデータを配信します。

1 WFS サーバ機能を設定するのに、WEB オブジェクトの METADATA オブジェクトに、 "wfs_title"(必須)と "wfs_srs", "wfs_enable_request", "wfs_onlineresource"(以上推奨) を設定します。
"wfs_enable_request" は、GetCapabilities, GetFeature and  DescribeFeatureType のリクエストを許可します。
"wfs_srs" に、基盤地図情報のに合わせて "EPSG:2451" も設定します。
これによって、"wfs_srs" の識別子が WFS を利用できるすべてのレイヤに設定されます。
2 レイヤを WFS で利用できるように、同じように、METADATA オブジェクトに、 "wfs_title"、"wfs_srs"、"gml_featureid"、"gml_include_items" を設定します。
"gml_featureid" は、WFS データの属性の中でユニーク(唯一)なものを設定します。
"gml_include_items" は、配信する属性を決められます。設定は必須となっていませんが、しておいたほうがいいようです。

user@debian7-vmw:~/mapfile$ vim nippon_nlni_tokyo_pgis.map

MAP
 NAME nippon_nlni_tokyo_pgis_map
 STATUS ON
 SIZE 600 300
 EXTENT 138.85 35.4 140 35.975 # 諸島部を除いた範囲
 UNITS DD
 IMAGECOLOR 255 255 255
# IMAGETYPE PNG
 FONTSET "fonts.txt"

 PROJECTION # 投影法 (OpenLayers のため追加)
  "init=epsg:4326"
 END
 
 WEB
  IMAGEPATH "/home/user/mapsite/ms_tmp/"
  IMAGEURL "/mapsite/ms_tmp/"
  METADATA
   "wms_title" "Nioopn NLNI Tokyo Map WMS Server"
   "wms_onlineresource" "http://192.168.1.200/cgi-bin/mapserv?map=/home/user/mapfile/nippon_nlni_tokyo_pgis.map&"
   "wms_srs" "EPSG 2451 EPSG:4326"
   "wms_enable_request" "*"
   "wfs_title" "Nippon NLNI Tokyo Map WFS Server" # <-1 ここから追加
   "wfs_onlineresource" "http://192.168.1.200/cgi-bin/mapserv?map=/home/user/mapfile/nippon_nlni_tokyo_pgis.map&"
   "wfs_srs" "EPSG:4326"
   "wfs_enable_request" "*"
  END
 END
---
 LAYER
  NAME tokyo_kuiki
  TYPE POLYGON
  STATUS ON
#  DUMP TRUE (ver.6より非推奨)
---
  METADATA
   "wms_title" "Tokyo Kuiki Map WMS Layer"
   "wms_srs" "EPSG:2451 EPSG:4326"
   "wfs_title" "Tokyo Kuiki Map WFS Layer" # <-2 ここから追加
   "wfs_srs" "EPSG:4326"
   "gml_featureid" "gid"
   "gml_include_items" "all"
  END
---
 LAYER
  NAME tokyo_pf
  GROUP tokyo_pf
  TYPE POINT
  STATUS ON
---
  METADATA
   "wms_title" "Tokyo Public Facilities Map WMS Layer"
   "wms_srs" "EPSG:2451 EPSG:4326"
   "wfs_title" "Tokyo Public Facilities Map WFS Layer" # <-2 ここから追加
   "wfs_srs" "EPSG:4326"
   "gml_featureid" "gid"
   "gml_include_items" "all"
  END
---

nippon_nlni_tokyo_pgis.map の WFS GetCapabilities の出力結果。

user@debian7-vmw:~/ドキュメント$ wget -O nlni_tokyo_wfs_gc.xml "http://localhost/cgi-bin/mapserv?map=/home/user/mapfile/nippon_nlni_tokyo_pgis.map&service=wfs&version=1.0.0&request=GetCapabilities"
user@debian7-vmw:~/ドキュメント$ vim nlni_tokyo_wfs_gc.xml
<?xml version='1.0' encoding="ISO-8859-1" ?>
<WFS_Capabilities
 version="1.0.0"
 updateSequence="0"
 xmlns="http://www.opengis.net/wfs"
 xmlns:ogc="http://www.opengis.net/ogc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd">

<!-- MapServer version 6.0.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=CAIRO SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE -->

<Service>
 <Name>MapServer WFS</Name>
 <Title>Nippon NLNI Tokyo Map WFS Server</Title>
 <OnlineResource>http://192.168.1.200/cgi-bin/mapserv?map=/home/user/mapfile/nippon_nlni_tokyo_pgis.map&</OnlineResource>
</Service>
---
<FeatureTypeList>
 <Operations>
  <Query/>
 </Operations>
  <FeatureType>
   <Name>tokyo_kuiki</Name>
   <Title>Tokyo Kuiki Map WMS Layer</Title>
   <SRS>EPSG:4326</SRS>
   <LatLongBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
  </FeatureType>
  <FeatureType>
   <Name>tokyo_pf</Name>
   <Title>Tokyo Public Facilities Map WFS Layer</Title>
   <SRS>EPSG:4326</SRS>
   <LatLongBoundingBox minx="-2.5e+07" miny="-2.5e+07" maxx="2.5e+07" maxy="2.5e+07" />
  </FeatureType>
---

1 「<WFS_Capabilities...」WFS Capabiities の名前空間
2 「<!-- MapServer version 6.0.1...」MapServer の動作している機能
3 「<Service>...」WFS の設定
4 「<FeatureTypeList>...」各レイヤの設定

nippon_nlni_tokyo_pgis.map の WFS GetFeature の出力結果。

user@debian7-vmw:~/ドキュメント$ wget -O nlni_tokyo_pf_wfs_gf.xml "http://localhost/cgi-bin/mapserv?map=/home/user/mapfile/nippon_nlni_tokyo_pgis.map&service=wfs&version=1.0.0&request=GetFeature&TYPENAME=tokyo_pf"
<?xml version='1.0' encoding="ISO-8859-1" ?>
<wfs:FeatureCollection
 xmlns:ms="http://mapserver.gis.umn.edu/mapserver"
 xmlns:wfs="http://www.opengis.net/wfs"
 xmlns:gml="http://www.opengis.net/gml"
 xmlns:ogc="http://www.opengis.net/ogc"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd
  http://mapserver.gis.umn.edu/mapserver
  http://192.168.1.200/cgi-bin/mapserv?map=/home/user/mapfile/nippon_nlni_tokyo_pgis.map&SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=tokyo_pf&OUTPUTFORMAT=XMLSCHEMA">
 <gml:boundedBy>
  <gml:Box srsName="EPSG:4326">
   <gml:coordinates>139.015694,26.640098 142.203778,35.841866</gml:coordinates>
  </gml:Box>
 </gml:boundedBy>
 <gml:featureMember>
  <ms:tokyo_pf fid="tokyo_pf.1">
   <gml:boundedBy>
    <gml:Box srsName="EPSG:4326">
     <gml:coordinates>139.734103,35.681014 139.734103,35.681014</gml:coordinates>
    </gml:Box>
   </gml:boundedBy>
   <ms:msGeometry>
    <gml:Point srsName="EPSG:4326">
     <gml:coordinates>139.734103,35.681014</gml:coordinates>
    </gml:Point>
   </ms:msGeometry>
   <ms:gid>1</ms:gid>
    <ms:p02_001>13101</ms:p02_001>
    <ms:p02_002>3</ms:p02_002>
    <ms:p02_003>03001</ms:p02_003>
    <ms:p02_004>ニューオータニ美術館</ms:p02_004>
    <ms:p02_005>紀尾井町4-1</ms:p02_005>
    <ms:p02_006>4</ms:p02_006>
    <ms:p02_007>数値地図画像</ms:p02_007>
   </ms:tokyo_pf>
  </gml:featureMember>
---

1 「<wfs:FeatureCollection...」WFS FeatureCollection の名前空間
2 以下、地物のデータ

0 件のコメント: