2019年10月1日火曜日

Debian 10 - 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 10 - 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@deb10-vmw:~$ mkdir mapdata
user@deb10-vmw:~$ mkdir mapfile
user@deb10-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@deb10-vmw:~$ cd ダウンロード
user@deb10-vmw:~/ダウンロード$ mkdir 110m_cultural
user@deb10-vmw:~/ダウンロード$ ls
---
110m_cultural  ne_110m_admin_0_countries.zip
---
user@deb10-vmw:~/ダウンロード$ mv ne_110m_admin_0_countries.zip 110m_cultural
user@deb10-vmw:~/ダウンロード$ cd 110m_cultural
user@deb10-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  
 extracting: ne_110m_admin_0_countries.cpg
  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 のデータを使った国境のデータが

Data Derived from OpenStreetMap for Download ホームページ
https://osmdata.openstreetmap.de/

にあります。
「Land Polygons」をクリックします。
https://osmdata.openstreetmap.de/data/land-polygons.html ページの「Download」の一番下の「Format: Shapefile, Projection: Mercator, Last update:2019-09-21T05:39(Large simplified polygons not split, use for zoom level 0-9)」の左側の「Download」ボタンをクリックします。

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

user@deb10-vmw:~/ダウンロード$ ls
---
simplified-land-polygons-complete-3857.zip
---
user@deb10-vmw:~/ダウンロード$ unzip simplified-land-polygons-complete-3857.zip

Archive:  simplified-land-polygons-complete-3857.zip
  inflating: simplified-land-polygons-complete-3857/README.txt 
 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@deb10-vmw:~/ダウンロード$ ls
---
simplified-land-polygons-complete-3857
simplified-land-polygons-complete-3857.zip
---
user@deb10-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@deb10-vmw:~/ダウンロード$ ls
---
land_ocean_ice_2048.jpg
land_ocean_ice_2048.jpgw
---
user@deb10-vmw:~/ダウンロード$ mv land_* ../mapdata/
user@deb10-vmw:~/ダウンロード$ cd ../mapdata/
user@deb10-vmw:~/mapdata$ ls
110m_cultural  land_ocean_ice_2048.jpg  land_ocean_ice_2048.jpgw


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

An Introduction MapServer
http://mapserver.org/introduction.html



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

を参考に作成します。

user@deb10-vmw:~/mapdata$ cd ../mapfile/
user@deb10-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@deb10-vmw:~/mapfile$ shp2img -m global.map -o global.png

0 件のコメント: