ラベル MapServer7 の投稿を表示しています。 すべての投稿を表示
ラベル MapServer7 の投稿を表示しています。 すべての投稿を表示

2017年7月13日木曜日

Debian 9 - 7 MapServer でマップファイルのテスト2

7-4 東京都の地図を表示
7-4-1 ダウンロード
国土交通相は地理空間情報を推進するための一貫として、国土数値情報のダウンロードサービスをしてます。
このうちのJPGIS準拠データのダウンロードサービスから東京のデータをダウンロードして地図を表示してみます。「4. 交通」の「空港間流通量」もダウンロードします。

国土交通省
http://www.mlit.go.jp/index.html

の「政策情報・分野別一覧」の「国土政策」をクリックします。

国土政策
http://www.mlit.go.jp/kokudoseisaku/index.html

の「データ・情報コーナー」の「国土数値情報ダウンロードサービス」をクリックします。

国土数値情報ダウンロードサービス
http://nlftp.mlit.go.jp/ksj/index.html

で、東京の行政区域のデータをダウンロードします。
a 「JPGIS2.1」の「行政区域」をクリックします。
b 「データのダウンロード(2.各データ詳細)」で、「東京」のチェックボックスをクリックしてチェックし、「次へ」ボタンをクリックします。

c 「データのダウンロード(3.ファイルの選択)」で、最新のデータのチェックボックスをクリックしてチェックします。(2017-7-1現在 平成29年度)
「次へ」ボタンをクリックします。

d アンケートに回答します。

e データのダウンロード(4.国土数値情報利用約款)の内容を読み、「上記のことを理解しました。」で「はい」ボタンをクリックします。

f データのダウンロード(5.ダウンロード)で「ダウンロード」ボタンをクリックします。
ダイアログボックス---ダウンロードしますか?の「OK」ボタンをクリックします。


7-4-2 データの確認
ダウンロードしたファイルを解凍します。
nlni/tokyo というフォルダを作成し、そこにファイルを移動して解凍します。

user@deb9-vmw:~$ cd ダウンロード
user@deb9-vmw:~/ダウンロード$ ls
---
N03-170101_13_GML.zip
---
user@deb9-vmw:~/ダウンロード$ mkdir nlni
user@deb9-vmw:~/ダウンロード$ mkdir nlni/tokyo
user@deb9-vmw:~/ダウンロード$ mv N03-170101_13_GML.zip nlni/tokyo/
user@deb9-vmw:~/ダウンロード$ cd nlni/tokyo/
user@deb9-vmw:~/ダウンロード/nlni/tokyo$ ls
N03-170101_13_GML.zip
user@deb9-vmw:~/ダウンロード/nlni/tokyo$ unzip -j N03-170101_13_GML.zip
Archive:  N03-170101_13_GML.zip
  inflating: KS-META-N03-17_13_170101.xml  
  inflating: N03-17_13_170101.dbf    
  inflating: N03-17_13_170101.prj    
  inflating: N03-17_13_170101.shp    
  inflating: N03-17_13_170101.shx    
  inflating: N03-17_13_170101.xml

user@deb8-vmw:~/ダウンロード/nlni/tokyo$ ls
KS-META-N03-17_13_170101.xml  N03-17_13_170101.prj  N03-17_13_170101.xml
N03-170101_13_GML.zip         N03-17_13_170101.shp
N03-17_13_170101.dbf          N03-17_13_170101.shx
データがどのようになっているか、N03-17_13_170101.dbf を LibreOffice Calc で開きます。
(データ量が多いと開かない場合があります。)
アクティビティ -> アプリケーションを表示する(左側の一番下のアイコン) -> LibreOffice Calc




「開く」ボタン
をクリックします。



文字列は日本語(Shift-JIS)にします。







確かめたら LibreOffice を閉じます。




7-4-3 地図の表示
 最初に、マップデータ N03-17_13_170101 の情報を知るために管理ツール gdal-bin を使います。
ないときは、Synaptic パッケージマネージャでインストールします。
nlni/tokyo フォルダを mapdata フォルダへ移動し、利用可能なレイヤ名を表示します。

user@deb9-vmw:~/ダウンロード/nlni/tokyo$ cd ../../
user@deb9-vmw:~/ダウンロード$ ls
---
nlni
---
nob61@deb9-vmw:~/ダウンロード$ mv nlni/ ../mapdata/
user@deb9-vmw:~/ダウンロード$ cd ../mapdata/
user@deb9-vmw:~/mapdata$ ls
110m_cultural  land_ocean_ice_2048.jpg  land_ocean_ice_2048.jpgw  nlni
user@deb9-vmw:~/mapdata$ cd nlni/
user@deb9-vmw:~/mapdata/nlni$
user@deb9-vmw:~/mapdata/nlni$ ls
tokyo
user@deb9-vmw:~/mapdata/nlni$ ogrinfo tokyo
INFO: Open of `tokyo'
      using driver `ESRI Shapefile' successful.
1: N03-17_13_170101 (Polygon)
次に、N03-17_13_170101 レイヤのデータを表示します。

user@deb8-vmw:~/mapdata/nlni$ ogrinfo -summary tokyo N03-17_13_170101
INFO: Open of `tokyo'
      using driver `ESRI Shapefile' successful.

Layer name: N03-17_13_170101
Metadata:
  DBF_DATE_LAST_UPDATE=2017-02-17
Geometry: Polygon
Feature Count: 6210
Extent: (136.069520, 20.422746) - (153.986844, 35.898424)
Layer SRS WKT:
GEOGCS["GCS_JGD_2011",
    DATUM["JGD_2011",
        SPHEROID["GRS_1980",6378137.0,298.257222101]],
    PRIMEM["Greenwich",0.0],
    UNIT["Degree",0.0174532925199433]]
N03_001: String (10.0) -> 都道府県名
N03_002: String (20.0) -> 支庁・振興局名
N03_003: String (20.0) -> 郡・政令市名
N03_004: String (20.0) -> 市区町村名
N03_007: String (5.0) -> 行政区域コード
属性名は、

データのダウンロード(2.各データの詳細)国土数値情報 行政区域データ
http://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03.html

にあります。
このレイヤは、Geometry: Polygon からポリゴンデータであることが分かります。
また、Extent: (136.069520, 20.422746) - (153.986844, 35.898424)は座標で緯度経度を表し、レイヤの範囲が分かります。

これをもとに、マップファイルを作成します。

user@deb8-vmw:~/mapdata/nlni$ cd ../../mapfile/
user@deb8-vmw:~/mapfile$ vim tokyo_shp.map
MAP
 NAME tokyo_shp_map #任意の名前
 STATUS ON
 SIZE 600 300
 EXTENT 136.069482 20.425119 153.986898 35.898424 #ogrinfoで得た情報から
 UNITS DD
 SHAPEPATH "../mapdata/nlni/tokyo" #シェイプファイルの相対位置
 IMAGECOLOR 255 255 255
 WEB
  IMAGEPATH "/home/user/public_html/ms_tmp/"
  IMAGEURL "/~user/ms_tmp/"
 END
 LAYER
  NAME gyoseikuiki #任意の名前
  TYPE POLYGON #ogrinfoで得た情報から
  STATUS ON
  DATA "N03-17_13_170101.shp"
  CLASS
   NAME "City Boundaries" #任意の名前
   STYLE
    OUTLINECOLOR 153 153 153 #面の外周の色(灰色)
   END
  END
 END
END #MAP END
shp2imgで地図を確認します。

user@deb9-vmw:~/mapfile$ shp2img -m tokyo_shp.map -o tokyo_shp.png


画像ビューワで確認すると、範囲が広すぎるのが分かります。
今回は、諸島部分を除いた範囲にします。

---
EXTENT 138.85 35.4 140 35.975
---

全体は次の様になります。

user@deb9-vmw:~/mapfile$ vim tokyo_shp.map
MAP
 NAME tokyo_shp_map
 STATUS ON
 SIZE 600 300
 EXTENT 138.85 35.4 140 35.975 #修正
 UNITS DD
 SHAPEPATH "../mapdata/nlni/tokyo"
 IMAGECOLOR 255 255 255
 WEB
  IMAGEPATH "/home/user/public_html/ms_tmp/"
  IMAGEURL "/~user/ms_tmp/"
 END
 LAYER
  NAME gyoseikuiki
  TYPE POLYGON
  STATUS ON
  DATA "N03-14_13_140401.shp"
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
  END
 END
END #MAP END
shp2imgで地図を確認します。

user@deb9-vmw:~/mapfile$ shp2img -m tokyo_shp.map -o tokyo_shp.png


Web ブラウザのアドレスバーに次のように入力して Enter キーを押します。

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=gyoseikuiki&map=/home/user/mapfile/tokyo_shp.map


7-4-4 LABELの日本語表示
地図に市区町村名を表示します。
地図に市区町村名(ラベル)を表示するには、マップファイルに次のように追加します。
---
 LAYER
  NAME gyoseikuiki
  TYPE POLYGON
  STATUS ON
  DATA "N03-17_13_170101.shp"
  LABELITEM "N03_004" #LABELを使うときのフィールドの属性値の指定
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL #追加
    MINFEATURESIZE 40 #フィーチャがラベルを表示する最小サイズ
   END #LABEL
  END
 END
---
Web ブラウザのアドレスバーに次のように入力して Enter キーを押します。

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=gyoseikuiki&map=/home/user/mapfile/tokyo_shp.map

次のようにエラーが表示されました。


エラーログを見てみます。

root@deb9-vmw:~# vim /var/log/apache2/error.log
---
[Mon Jul 03 10:54:03.410475 2017] [cgid:error] [pid 2421:tid 140081675323136] [client ::1:36578] End of script output before headers: mapserv

「End of script output before headers: mapserv」でネット検索すると cgi で文字コードが違うことでエラーが表示されることがあるとありました。属性 N03_004 の文字コードが shift-jis のためと思われます。

日本語を表示できるように次のようにします。
次の内容の fonts.txt というファイルを作成します。
マップファイルと同じフォルダに保存します。

user@deb9-vmw:~/mapfile$ vim fonts.txt
vl-gothic /usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
vl-pgothic /usr/share/fonts/truetype/vlgothic/VL-PGothic-Regular.ttf
ipafont-gothic /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
ipafont-pgothic /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf

(それぞれパッケージ名は、fonts-vlgothic、 fonts-ipafont-gothicです。)

どれか1行でOKです。
[フォント名] [フォントがある場所の絶対パス] という内容になっています。
フォント名は任意のわかりやすい名前をつけてください。
パスは Synaptic パッケージマネージャで、例えば gothic で検索するとパッケージ一覧が表示されます。
インストールされているパッケージを選択し、プロパティをクリックしてインストール済みファイルタブをクリックすると、パスが表示されます。
インストールされていないときは、Synaptic パッケージマネージャでインストールしてください。(上記以外にも日本語フォントがあります。)

マップファイル全体は次のようになります。
MAP
 NAME tokyo_shp_map
 STATUS ON
 SIZE 600 300
 EXTENT 138.85 35.4 140 35.975
 UNITS DD
 SHAPEPATH "../mapdata/nlni/tokyo"
 IMAGECOLOR 255 255 255
 FONTSET "fonts.txt" #追加
 WEB
  IMAGEPATH "/home/user/public_html/ms_tmp/"
  IMAGEURL "/~user/ms_tmp/"
 END
 LAYER
  NAME gyoseikuiki
  TYPE POLYGON
  STATUS ON
  DATA "N03-17_13_170101.shp"
  LABELITEM "N03_004"
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL
    MINFEATURESIZE 40
    TYPE TRUETYPE #フォントのタイプ
    FONT vl-gothic #fonts.txt で指定したフォント名
    ENCODING SJIS #マップデータのエンコード
    SIZE 8 #フォントサイズ
   END
  END
 END
END #MAP END
Web ブラウザのアドレスバーに次のように入力して Enter キーを押します。

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=gyoseikuiki&map=/home/user/mapfile/tokyo_shp.map


Debian 9 - 7 MapServer でマップファイルのテスト1

7-1 MapServer 付属の OpenLayers
MapServer に組み込まれた OpenLayers を使って、マップファイルのテストをします。
これは表示テスト用なので、レイヤ別の表示などの機能の設定はできません。

MapServer OpenLayers Viewer
http://mapserver.org/cgi/openlayers.html

の 「Opening the OpenLayers viewer in your browser」 の

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=lakespy2&layer=dlgstln2&map=/var/www/workshop/itasca.map

で /var/www/workshop/itasca.map の部分を、itasca demo(Debian 9 - 6 MapServer のインストール の 6-4 動作確認 で使った workshop-5.4)の 自分のマップファイルの位置にします。

Web ブラウザのアドレスバーに次のように入力して Enter キーを押します。

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=lakespy2&layer=dlgstln2&map=/home/user/public_html/workshop-5.4/itasca.map


7-2 マップデータの準備
7-2-1 フォルダの作成
マップファイルを保存する mapfile フォルダとマップデータを保存する mapdata フォルダを作成します。

user@deb9-vmw:~$ mkdir mapdata
user@deb9-vmw:~$ mkdir mapfile
user@deb9-vmw:~$ ls
---
mapdata/
mapfile/
---
public_html/
---

7-2-2 NaturalEarth
国境のデータを準備します。

NaturalEarth ホームページ
http://www.naturalearthdata.com/

の、「Get the Data」をクリックします。

Downloads サイト
http://www.naturalearthdata.com/downloads/

の「Small scale data, 1:110m」の「Cultural」をクリックします。

1:110m Cultural Vectors サイト
http://www.naturalearthdata.com/downloads/110m-cultural-vectors/

の「Admin 0 – Countries」の「Download countries」ボタンをクリックしてダウンロードします。
「110m_cultural」というフォルダを作成してその中で解凍し、mapdataフォルダに移動します。

user@deb9-vmw:~$ cd ダウンロード
user@deb9-vmw:~/ダウンロード$ mkdir 110m_cultural
user@deb9-vmw:~/ダウンロード$ ls
---
110m_cultural  ne_110m_admin_0_countries.zip
---
user@deb9-vmw:~/ダウンロード$ mv ne_110m_admin_0_countries.zip 110m_cultural
user@deb9-vmw:~/ダウンロード$ cd 110m_cultural
user@deb9-vmw:~/ダウンロード/110m_cultural$ unzip ne_110m_admin_0_countries.zip
Archive:  ne_110m_admin_0_countries.zip
  inflating: ne_110m_admin_0_countries.README.html  
 extracting: ne_110m_admin_0_countries.VERSION.txt  
  inflating: ne_110m_admin_0_countries.dbf  
  inflating: ne_110m_admin_0_countries.prj  
  inflating: ne_110m_admin_0_countries.shp  
  inflating: ne_110m_admin_0_countries.shx

user@deb9-vmw:~/ダウンロード/110m_cultural$ cd ../
user@deb9-vmw:~/ダウンロード$ mv 110m_cultural ../mapdata/

///// 参考 /////
OpenStreetMap のデータを使った国境のデータが

OpenStreetMap DATA ホームページ
http://openstreetmapdata.com/

にあります。
ページの下の方にある「Show all data」ボタンをクリックします。
http://openstreetmapdata.com/data ページの「Land Polygons」をクリックします。
http://openstreetmapdata.com/data/land-polygon ページの「Download」の一番下の「Format: Shapefile, Projection: Mercator, Last update: 2017-05-25 09:05(Large simplified polygons not split, use for zoom level 0-9)」の左側の「Download」ボタンをクリックします。

simplified-land-polygons-complete-3857.zip を解凍します。

user@deb9-vmw:~/ダウンロード$ ls
---
simplified-land-polygons-complete-3857.zip
---
user@deb9-vmw:~/ダウンロード$ unzip simplified-land-polygons-complete-3857.zip
Archive:  simplified-land-polygons-complete-3857.zip
  inflating: simplified-land-polygons-complete-3857/README  
 extracting: simplified-land-polygons-complete-3857/simplified_land_polygons.cpg  
  inflating: simplified-land-polygons-complete-3857/simplified_land_polygons.dbf  
  inflating: simplified-land-polygons-complete-3857/simplified_land_polygons.prj  
  inflating: simplified-land-polygons-complete-3857/simplified_land_polygons.shp  
  inflating: simplified-land-polygons-complete-3857/simplified_land_polygons.shx
user@deb8-vmw:~/ダウンロード$ ls
---
simplified-land-polygons-complete-3857
simplified-land-polygons-complete-3857.zip
---
user@deb9-vmw:~/ダウンロード$ ogrinfo simplified-land-polygons-complete-3857
INFO: Open of `simplified-land-polygons-complete-3857'
      using driver `ESRI Shapefile' successful.
1: simplified_land_polygons (Polygon)
///// ここまで /////

7-2-3 Blue Marble
Blue Marble 画像の準備します。

VISIVLE EARTH
http://visibleearth.nasa.gov/

の「The Blue Marble」をクリックします。

http://visibleearth.nasa.gov/view_cat.php?categoryID=1484

の 「The Blue Marble: Land Surface, Ocean Color and Sea Ice」をクリックします。

http://visibleearth.nasa.gov/view.php?id=57730

の「land_ocean_ice_2048.jpg 」を右クリックして「名前をつけてリンク先を保存」をクリックします。

次の内容のワールドファイル land_ocean_ice_2048.jpgW を作成します。

user@deb9-vmw:~/ダウンロード$ vim land_ocean_ice_2048.jpgw
0.17578125  --------- A
0.00000     --------- B
0.00000     --------- C
-0.17578125 --------- D
-179.96666666666667 - E
89.96666666666667  -- F

A 画像ピクセルが左から右に進む際の1ピクセル当りの座標増減値
B 回転行列パラメータ
C 回転行列パラメータ
D 画像ピクセルが上から下に進む際の1ピクセル当りの座標増減値
E 画像左上のX座標(経度方向)
F 画像左上のY座標(緯度方向)



A = 360degree / 2048pixel
D = 180degree / 1024pixel

user@deb9-vmw:~/ダウンロード$ ls
---
land_ocean_ice_2048.jpg
land_ocean_ice_2048.jpgw
---
user@deb9-vmw:~/ダウンロード$ mv land_* ../mapdata/
user@deb9-vmw:~/ダウンロード$ cd ../mapdata/
user@deb9-vmw:~/mapdata$ ls
110m_cultural  land_ocean_ice_2048.jpg  land_ocean_ice_2048.jpgw

7-3 マップファイルの準備
基本のマップファイルは、

An Introduction MapServer - MapServer 7.0.6
http://mapserver.org/el/introduction.html

の

Introduction to the Mapfile
http://mapserver.org/el/introduction.html#introduction-to-the-mapfile

を参考に作成します。

user@deb9-vmw:~/mapdata$ cd ../mapfile/
user@deb9-vmw:~/mapfile$ vim global.map
MAP
# NAME "sample"
 NAME "global_map"
 STATUS ON
# SIZE 600 400
 SIZE 600 300
# SYMBOLSET "../etc/symbols.txt"
 EXTENT -180 -90 180 90
 UNITS DD
# SHAPEPATH "../data"
 SHAPEPATH "../mapdata"
 IMAGECOLOR 255 255 255
# FONTSET "../etc/fonts.txt"
#
# Start of web interface definition
#
 WEB
# IMAGEPATH "/ms4w/tmp/ms_tmp/"
  IMAGEPATH "/home/user/public_html/ms_tmp/"
  IMAGEURL "/~user/ms_tmp/"
 END # WEB
#
# Start of layer definitions
#
 LAYER
  NAME global-raster
  TYPE RASTER
  STATUS DEFAULT
#  DATA bluemarble.gif
  DATA "land_ocean_ice_2048.jpg"
 END # LAYER
 LAYER
  NAME country-boundary
  TYPE POLYGON
  STATUS ON
  DATA "110m_cultural/ne_110m_admin_0_countries.shp"
  CLASS
   NAME 'Country Boundary'
   STYLE
    OUTLINECOLOR 153 0 0
   END
  END
 END
END # MAP
Map オブジェクト
MAP
 NAME "global_map"
 STATUS ON
 SIZE 600 300
 EXTENT -180 -90 180 90
 UNITS DD
 SHAPEPATH "../mapdata"
 IMAGECOLOR 255 255 255
END # MAP
STATUS: ブラウザで開いた時のマップの ON/OFF/DEFAULT(表示/非表示/初期値)
SIZE: ピクセル単位のマップの幅と高さ
EXTENT: 出力マップの単位の出力範囲
UNITS: マップの緯度経度の単位 DD 度 degree
SHAPEPATH: シェープファイルの位置 Layer オブジェクトで省略可能
IMAGECOLOR: 画像背景色初期値

Layer オブジェクト
MapServer 5.0 からマップファイルでレイヤの数に制限はありません。
DATA パラメータは、MAP オブジェクトの SHAPEPATH パラメータを基準にしています。
DATA 拡張子が、ファイル名に用意されていない場合、MapSeerver は、ESRI シェープフォーマット(.shp)と仮定します。

Raster レイヤ
(Raster: ピクセル(画素)画像のようにマス目の集合体で表現された画像データ。)
 LAYER
  NAME global-raster
  TYPE RASTER
  STATUS DEFAULT
#  DATA bluemarble.gif
  DATA "land_ocean_ice_2048.jpg"
 END # LAYER
Vector レイヤ
TYPE point、line、または polygon のベクタレイヤを表示することができます。次の例では、OUTLINECOLORパラメータを使用して、TYPE polygon レイヤからのline([外周]線)だけを表示する例を示します。
 LAYER
  NAME country-boundary
  TYPE POLYGON
  STATUS ON
  DATA "110m_cultural/ne_110m_admin_0_countries.shp"
  CLASS
   NAME 'Country Boundary'
   STYLE
    OUTLINECOLOR 153 0 0
   END # STYLE
  END # CLASS
 END # LAYER
CLASS: CLASS オブジェクト
STYLE: STYLE は、シンボル化とスタイリングのためのパラメータを保持しています。複数の STYLE が、CLASS または LABEL 内に適用することができます。
([http://mapserver.org/el/mapfile/style.html#style])

Webブラウザのアドレスバーに次のように入力して Enter キーを押します。

http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers&layer=global-laster&layer=country-boundary&map=/home/user/mapfile/global.map

基本部分
http://localhost/cgi-bin/mapserv?mode=browse&template=openlayers

マップファイル global.map の レイヤー LAYER
$layer=global-laster
&layer=countries-border

マップファイルの位置
&map=/home/user/mapfile/global.map

次のように地図が表示されます。

* shp2img コマンドを使って画像を生成することもできます。
user@deb9-vmw:~/mapfile$ shp2img -m global.map -o global.png

Debian 9 - 6 MapServer の設定

OpenLayers では、MapServer のデータを使用することは少ないですが、Web マッピングを理解するには良いガイドになります。

6-1 MapServer のインストール
インストールされていないときは、Synaptic パッケージマネージャで cgi-mapserver をインストールしてください。
Mapserver のバージョンは 7.0.4 です。

インストールの確認は、Web ブラウザに

http://localhost/cgi-bin/mapserv

と入力して Enter キーを押し、

No query information to decode. QUERY_STRING is set, but empty.

と表示されれば OK です。
もし、次のように表示されたら CGI が動作していません。


CGI のモジュールは /etc/apache2/mods-available/cgi.load ファイルです。

user@deb9-vmw:~$ su -
パスワード:
root@deb9-vmw:~# ls /etc/apache2/mods-available/
---
cgi.load
cgid.conf
cgid.load
---

このファイルが有効になっているかは /etc/apache2/mods-enable/ でわかります。

root@deb9-vmw:~# ls /etc/apache2/mods-enabled/

cgid.conf がないので有効にします。
root@deb9-vmw:~# a2enmod cgi
Your MPM seems to be threaded. Selecting cgid instead of cgi.
Enabling module cgid.
To activate the new configuration, you need to run:
  systemctl restart apache2
Apache2 を再起動してください。

root@deb9-vmw:~#  apachectl -k graceful
root@deb9-vmw:~# ls /etc/apache2/mods-enabled/
---
cgid.conf
cgid.load
---


6-2 mapserver-bin gdal-binのインストール
MapServer を使用する上で便利なユーティリティソフトを Synaptic パッケージマネージャでインストールしておきます。

6-3 一時フォルダの作成
MapServerでは、表示するための画像が生成されますが、これを保存する一時保存フォルダを作成します。
次のように入力してEnterキーを押します。

root@deb9-vmw:~# exit
ログアウト
user@deb9-vmw:~$ cd public_html/
user@deb9-vmw:~/public_html$ mkdir ms_tmp

次のように入力すると所有者(オーナ)とグループが表示されます。

user@deb9-vmw:~/public_html$ ls -l
---
drwxr-xr-x 2 user user  4096  6月 26 14:17 ms_tmp
---

MapServerがこのフォルダに画像を保存できるようにするには、所有者とグループを Apache2 の実行ユーザの www-data にします。(rootで)
(/etc/apache2/envvars に
---
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
---
と記述があります。)

user@deb9-vmw:~/public_html$ su
パスワード:
root@deb9-vmw:/home/user/public_html# chown www-data:www-data ms_tmp

このフォルダの所有者とグループを確かめてみます。

root@deb9-vmw:/home/user/public_html# ls -l
---
drwxr-xr-x 2 www-data www-data  4096  6月 26 14:17 ms_tmp
---


6-4 動作確認
Demo Application の準備

MapServer Download ページ
http://mapserver.org/download.html

「Download」の「Demo Application」の「MapServer 5.4.x Demo」リンクをクリックしてダウンロードします。

root@deb9-vmw:/home/user/public_html# exit
exit
user@deb9-vmw:~/public_html$ cd ../ダウンロード
user@deb9-vmw:~/ダウンロード$ ls
---
workshop-5.4.zip
---

ダウンロードした workshop-5.4.zip を解凍します。

user@deb9-vmw:~/ダウンロード$ unzip workshop-5.4.zip
user@deb9-vmw:~/ダウンロード$ ls
---
workshop-5.4
workshop-5.4.zip
---

解凍した workshop-5.4 フォルダを public_html に移動します。

user@deb9-vmw:~/ダウンロード$ mv workshop-5.4/ ../public_html/
user@deb9-vmw:~/ダウンロード$ cd ../public_html/
user@deb9-vmw:~/public_html$ ls
index.html  ms_tmp  workshop-5.4

index.html のコードを修正します。

user@deb9-vmw:~/public_html$ cd workshop-5.4/
user@deb9-vmw:~/public_html/workshop-5.4$ ls
---
index.html
---
user@deb9-vmw:~/public_html/workshop-5.4$ vim index.html

---
The base data is the old-reliable Itasca dataset that we know and love...

<!-- EDIT THE FORM ACTION -->
<!--
<form name="demo" method="GET" action="/cgi-bin/mapserv54" onSubmit="configure()">
-->
<form name="demo" method="GET" action="/cgi-bin/mapserv" onSubmit="configure()">
<input type="hidden" name="layer" value="lakespy2">
<input type="hidden" name="layer" value="dlgstln2">
<input type="hidden" name="zoomsize" value=2>
<input type="hidden" name="map_web" value="">
<!-- EDIT THESE HIDDEN VARIABLES -->
<!--
<input type="hidden" name="map" value="/usr/local/www/docs_maps/mapserver_demos/workshop-5.4/itasca.map">
<input type="hidden" name="program" value="/cgi-bin/mapserv54">
<input type="hidden" name="root" value="/mapserver_demos/workshop-5.4">
-->
<input type="hidden" name="map" value="/home/user/public_html/workshop-5.4/itasca.map">
<input type="hidden" name="program" value="/cgi-bin/mapserv">
<input type="hidden" name="root" value="/~user/workshop-5.4">
---

itasca.map のコードを修正します。
user@deb9-vmw:~/public_html/workshop-5.4$ vim itasca.map
---
 WEB
  HEADER templates/header.html
  TEMPLATE "set in index.html"
  FOOTER templates/footer.html
  MINSCALE 1000
  MAXSCALE 1550000
  # change the next two lines to match your setup
# IMAGEPATH "/usr/local/www/docs_maps/tmp/"
# IMAGEURL "/tmp/"
  IMAGEPATH "/home/user/public_html/ms_tmp/" # 追加
  IMAGEURL "/~user/ms_tmp/" # 追加
  METADATA
   WMS_TITLE "UMN MapServer Itasca Demo"
   WMS_ABSTRACT "This is a UMN MapServer application for Itasca County located in north central Minnesota."
   WMS_ACCESSCONSTRAINTS "none"
   # change this value to match your setup
   WMS_ONLINERESOURCE "http://localhost.localdomain/mapserver_demos/itasca/index.html"
   WMS_SRS "EPSG:26915"
  END
 END
---
Webブラウザのアドレスバーに次のように入力してEnterキーを押します。
http://localhost/~user/workshop-5.4/index.html

ページが表示されたら 「Initialize」 ボタンをクリックします。


次のようなメッセージが表示されたました。

loadLayer(): Unknown identifier. Annotation Layers have been removed. To obtain same functionality, use a layer with label->styles and no class->styles

これは、TYPE の annotation が削除されたためレイヤ()が削除されたためです。
MapServer のドキュメント「LAYER(http://mapserver.org/mapfile/layer.html#layer)」に次のようにあります。

Note: TYPE annotation has been deprecated since version 6.2. Identical functionality can be obtained by adding LABEL level STYLE blocks, and do not require loading the datasets twice in two different layers as was the case with layers of TYPE annotation.

TYPE annotation は、6.2 バージョン以降、非推奨になりました。同様の機能は、LABEL レベルの STYLE ブロックを追加することによって得られ、TYPE annotation のレイヤを使用した場合のように、2つの異なるレイヤにデータセットを2度ローディングする必要がありません。

itasca.map のコードで、次の3つのレイヤ ctyrdln3_anno、majrdln3_anno、mcd90py2_anno をコメントアウトします。(今回は、表示が目的なのでこの修正だけにしました。)
---
#  LAYER
#    NAME ctyrdln3_anno
#    GROUP roads
#    MAXSCALE 300000
#    STATUS OFF
#    DATA ctyrdln3
#    TYPE ANNOTATION
---
#  LAYER
#    NAME majrdln3_anno
#    GROUP roads
#    MAXSCALE 600000
#    STATUS OFF
#    DATA majrdln3
#    TYPE ANNOTATION
---
#  LAYER
#    NAME mcd90py2_anno
#    GROUP cities
#    TYPE ANNOTATION
---

地図が表示されたら成功です。