自然環境保全基礎調査(環境省)ベクトルデータのGrassでの利用

Jul. 5-7, 2012作成 Jan.1, 2013修正

はじめに

 環境省から最近,2009年の2万5000分のT植生図のベクトルデータが公開された。これをダウンロードしてGrassに取り込み,表示するまでのプロセスを示す。

1. ダウンロードそして座標系などの情報

 地理・地質主題図リンク集 にダウンロードサイトとダウンロード法を示している。
 ここでは4枚のまとまった矩形の地形図範囲(箕面市周辺)について述べる。北西部は広根図幅5235-23,北東部は高槻図幅-24,南西部は伊丹-13,南東部は吹田-14が該当する。ダウンロードされたshapeファイルについては各フォルダにまとまっている。その名称はUTM座標系番号(標準地域メッシュの2次メッシュ番号)が付加されている。shp523523など。shp523523のフォルダを開くと,p523523.dbf(図形の属性情報), p523523.shp(図形の座標情報), p523523.shx(図形の属性情報と座標情報の対応関係), そしてReadme.txt, 凡例ver1.5.lyr(レイヤー情報で,米国ESRI社製ArcGIS Ver.9.1において、凡例を作成するためのレイヤーファイル 変換法は次のサイト)である。

 以下の情報はRead.meから。

 座標系:世界測地系(日本測地系2000)に基づく10進緯度経度座標系で作成されています。
※日本測地系の2次メッシュ図郭で作成したものを、世界測地系(日本測地系2000)に変換したもの。

 文字コード: 日本語の文字コードはShift JIS。

属性情報の内容 

┌─────┬───────────────────────────────┐

│ 項目名 │             内 容               │

├─────┼───────────────────────────────┤

│MESH2_C  │旧図郭の二次メッシュコード                  │

├─────┼───────────────────────────────┤

│HANREI_C │統一凡例コード                │

├─────┼───────────────────────────────┤

│SURV_YEAR │植生調査を実施した年次(西暦4桁)         │

├─────┼───────────────────────────────┤

│ORG_NO │植生図に記載されるローカルな凡例番号             │

├─────┼───────────────────────────────┤

│ZUKAKU_NO │図郭内凡例通し番号                      │

├─────┼───────────────────────────────┤

│SHOKU_C  │植生区分のコード  │

├─────┼───────────────────────────────┤

│SHOKU_N  │植生区分の名称  │

├─────┼───────────────────────────────┤

│DAI_C  │植生大区分のコード  │

├─────┼───────────────────────────────┤

│DAI_N   │植生大区分の名称  │

├─────┼───────────────────────────────┤

│CHU_C  │植生中区分のコード  │

├─────┼───────────────────────────────┤

│CHU_N  │植生中区分の名称  │

├─────┼───────────────────────────────┤

│SAI_C  │植生細区分のコード  │

├─────┼───────────────────────────────┤

│SAI_N   │植生細区分の名称  │

├─────┼───────────────────────────────┤

│HANREI_N │統一凡例名  │

└─────┴───────────────────────────────┘

※統一凡例、植生区分等については下記HPを参照。

「自然環境保全基礎調査 植生調査 情報提供ホームページ」 http://www.vegetation.jp/index.html

 後に,dbfファイルの編集が必要になるだろう。

2. dbfファイルの内容を確認

 座標系の変換の前に,dbfファイルの構造を確認した方がいいだろう。
 Excel 2004で開くと,上述の,属性情報の内容,と異なり,7列のみである。

Mesh2_C Hanrei_C Surv_Year Org_No Zukaku_No Shoku_C Shoku_N

 第7列だけに2バイト文字が使われていて,これはGrassで使えない。

Shoku_N
植林地、耕作地植生
植林地、耕作地植生
ヤブツバキクラス域代償植生
その他
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
植林地、耕作地植生
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生
その他
ヤブツバキクラス域代償植生
ヤブツバキクラス域代償植生

など。

 そこで,それぞれの凡例の名称をローマ字化することになるのであるが,その前に,この名称の分類レベルを確認しよう。

統一凡例(植生区分・大区分一覧表) には,下記のリストがある。ローマ数字で始まる「植生区分」がdbfファイルの第7列に対応している。「大区分」の情報がdbfには無い。

植生区分 大区分
(中区分と細区分は各行末の「表示」文字をクリックすることで表れる構造になっている)
下記のローマ数字のものは植生区分,01〜58が大区分に対応している
I 高山帯自然植生域 01 高山低木群落 表示
02 高山ハイデ及び風衝草原 表示
03 雪田草原 表示
II コケモモ−トウヒクラス域自然植生 04 亜高山帯針葉樹林(北海道) 表示
05 亜高山帯針葉樹林 表示
06 亜高山帯広葉樹林 表示
07 高茎草原及び風衝草原 表示
III コケモモ−トウヒクラス域代償植生 08 亜高山帯二次林 表示
09 二次草原 表示
10 伐採跡地群落 表示
IV ブナクラス域自然植生 11 落葉広葉樹林(日本海型) 表示
12 下部針広混交林 表示
13 落葉広葉樹林(太平洋型) 表示
14 冷温帯針葉樹林 表示
15 岩角地針葉樹林 表示
16 渓畔林 表示
17 沼沢林 表示
18 河辺林 表示
19 岩角地・風衝地低木群落 表示
20 なだれ地自然低木群落 表示
21 自然草原 表示
V ブナクラス域代償植生 22 落葉広葉樹二次林 表示
23 常緑針葉樹二次林 表示
24 落葉広葉低木群落 表示
25 二次草原 表示
26 伐採跡地群落 表示
VI ヤブツバキクラス域自然植生 27 常緑広葉樹林 表示
28 暖温帯針葉樹林 表示
29 岩角地・海岸断崖地針葉樹林 表示
30 落葉広葉樹林 表示
31 沼沢林 表示
32 河辺林 表示
33 自然低木群落 表示
34 海岸風衝低木群落 表示
35 亜熱帯常緑広葉樹林 表示
36 亜熱帯常緑広葉樹林(隆起石灰岩上) 表示
37 亜熱帯湿生林(マングローブ林) 表示
38 亜熱帯常緑針葉樹林 表示
39 亜熱帯低木群落 表示
VII ヤブツバキクラス域代償植生 40 常緑広葉樹二次林 表示
41 落葉広葉樹二次林 表示
42 常緑針葉樹二次林 表示
43 タケ・ササ群落 表示
44 低木群落 表示
45 二次草原 表示
46 伐採跡地群落 表示
VIII 河辺・湿原・塩沼地・砂丘植生 47 湿原・河川・池沼植生 表示
48 塩沼地植生 表示
49 砂丘植生 表示
50 海岸断崖地植生 表示
51 岩角地・石灰岩地・蛇紋岩地植生 表示
52 火山荒原植生・硫気孔原植生 表示
53 隆起珊瑚礁植生 表示
IX 植林地・耕作地植生 54 植林地 表示
55 竹林 表示
56 牧草地・ゴルフ場・芝地 表示
57 耕作地 表示
X その他 58 市街地等

 以上から,唯一漢字表現されている第7列は,上のローマ数字で区分される「植生区分」に対応していることがわかる。そして第6列の数字は,このローマ数字と一致している。
 さて,下にdbf(広根)の中味の一部を示している。第3列のHanrei_Cの前二桁の最大値は58なので,大分類を示している。Hanrei_Cの下三桁は何か。例えば,リストを除いて,第1行のだい4列Org_Noは96であるが,これは,ベクトルデータと同時にダウンロードしたjpgファイル(広根)の植生画像の凡例(下に表示)を見ると,竹林となっており,統一凡例コードとして550000が示されている。第4列は,ORG_NO │植生図に記載されるローカルな凡例番号で,これだと最も上位の「植生区分」がわからない。そこで,第2列のHanrei_Cを使うこととしよう。これだと,全図幅で統一されており,最下位の植生の特定も,最上位の植生の特定も可能である。
 この2009年の植生図は,土地利用図としても機能する区分で,大変参考になる。

Mesh2_C Hanrei_C Surv_Year Org_No Zukaku_No Shoku_C Shoku_N
523523 550000 2009 96 9 植林地、耕作地植生
523523 550000 2009 96 9 植林地、耕作地植生
523523 420102 2009 70 7 ヤブツバキクラス域代償植生
523523 580100 2009 k 10 その他
523523 400100 2009 66 7 ヤブツバキクラス域代償植生
523523 410105 2009 69 7 ヤブツバキクラス域代償植生
523523 420102 2009 70 7 ヤブツバキクラス域代償植生

広根凡例

 以上から,dbfはGrassで利用する上で,特に編集作業をする必要がないことがわかる。

 

3. 座標系の変換

 この座標系は世界測地系(日本測地系2000)に基づく10進緯度経度座標系(国土地理院のデータはすべて経緯度座標系と考えて良いが環境省もそれを踏襲している)であり,Grassの対応Locationは平面直角座標系第Y系であるから,Grassに取り込む前に座標変換しなければならない。

 10進緯度経度とは何か。例えば,北緯35度23分28秒を,10進法で表すと,35.3911(35+23/60+28/3600)となると言えば,わかるであろう。おさるのGIS,の,はじめに,のEPSGコードを見ると,日本測地系2000緯度/経度は,4612,日本測地系2000 平面直角座標系第Y系は,2448である。
 ベクトルデータの座標系の変換例は,おさるのGISの,国土数値情報をGrassでの,5. 座標系の変換:ogrを使って,に示している。
gdalコマンドが実行可能な環境で,私の場合は次の様に実行した。
> ogr2ogr -t_srs EPSG:2448 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523523/Hirone523523.shp -s_srs EPSG:4612 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523523/p523523.shp

 ogrコマンドは,変換前データと変換後データの順序を逆にする。from-toではなく,to-fromなのである。grassdataフォルダの下位に,FileConvert_folder,という作業フォルダを私は置いている。その下位に新たにOsaka2009Vegetationを作成し,この例では環境省からダウンロードした広根図幅のshp523523フォルダ以下のファイルを置いている。p523523.shpを指定することで,p523523.shx,p523523.dbfもまとめて変換する。ダウンロードした際のread.meと.lyrファイルは/grassdata/FileConvert_folder/Osaka2009Vegetation/shp5235??フォルダでは,使わないから削除した方がいいだろう。
 これからの作業のために,他の3枚の植生図用のスクリプトも示す。
 > ogr2ogr -t_srs EPSG:2448 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523524/Takatsuki523524.shp -s_srs EPSG:4612 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523524/p523524.shp

> ogr2ogr -t_srs EPSG:2448 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523514/Suita523514.shp -s_srs EPSG:4612 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523514/p523514.shp

> ogr2ogr -t_srs EPSG:2448 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523513/Itami523513.shp -s_srs EPSG:4612 /Users/moto/grassdata/FileConvert_folder/Osaka2009Vegetation/shp523513/p523513.shp

 

4. Grass内への取り込み

 File/Import vector map/Multiple formats using OGR で選んで,パネルで,OGRのdata source nameとして,例えばOsaka2009Vegetation/shp523523フォルダのHirone523523.shpを選ぶ(Finderで選ぶ形)。Output vector mapとしては,vege25000Hirone523523all(当初,ファイル名をHirone523523としたがこれではGrass内でのベクトル表示をすると他地域から外れる,それゆえ,vege2500....とした)を入力して,OptionタブでOverride dataset projection (use location's projection),と,Extend location extents based on new dataset(既存のregionは広根と伊丹の全域をカバーしないためにこのオプションをつけないとregion外が取り込まれない)にチェックを入れる。エラーメッセージがなく,種々のメッセージが流れて終わる。
 広根の場合, dbfのデータ行列数は1605であるが,Grassの取り込み時のOutput GIS.mの表示を見ると,Number of centroids: 1605 Number of areas: 1605 1605 input polygons Total area: 1.056177e+08 (1605 areas)

となっており,無事にポリゴンが取り込まれたことがわかる。なお,広根と伊丹は平面直角座標系VI系の範囲を超えているため,Map Displayには表示されない。

 

-----------------------------------------------------

5. Grass内での特定の植生のベクトルファイルの保存

 ベクトルデータとともにダウンロードした画像データの凡例から,図廓内の植生種別を知ることができる。まずは個々の植生種ごとにGrassのベクトルファイルを作成することになる。そして,植生種のグループ化が目的を実行する上で有効と考えるのであれば,新たにベクトルファイルを合成すれば良い。一例を次に示す。

 属性テーブルのリスト(列タイトル)とその列に見られる植生種を検索して,新たなベクトルファイルを作る方法を次に示す。複数の植生種をANDまたはORでまとめて検索して,植生種の組み合わせを一つの新たな名称に変更することも可能である(番号だけか?)。
 ここでは,個々の植生種を検索して新たなベクトルファイルを作成する方法を示す。コマンドは,v.extractである。gis.mでは,vector/Query with attributesが対応している。
OptionsとSelectionという二つのタブがある。Optionsのタブのうち,Name of input vector map: vege25000Hirone523523all@PERMANENT。Name for output vector map: vegeHirone_550000。Enter -1...には初めから-1が入力されており,変更しない。
Selectionタブでは,Types to be extracted: centroid, areaのみチェック。Layer number: 1。WHERE conditions of SQL statement without 'where' keyword: Hanrei_C = '550000'
最後のHanrei_C = '550000'は,Hanrei_C 列の,550000,を検索するということである。550000は竹林である。複数の植生種を並べる場合は,例えば,Hanrei_C = '550000' OR Hanrei_C = '270200' とする。ちなみに270200はアラカシ群落である。なお,=とORの前後には半角スペースが必要である。
次の段階として,両方を一つにまとめる,つまり,mergeまたはdissolve adjacent polygons(v.dissolve)することも可能で,接している場合は一つのポリゴンとなる。

Output gis.mで表示された実行文は次の様である。

v.extract input=vege25000Hirone523523all@PERMANENT output=vege550000chikurin_Hirone type=centroid,area layer=1 {where=Hanrei_C = '550000'} new=-1

 なお,outputファイル名は,vege550000chikurin_Hirone ,のように長いけれども,統一凡例コード,統一凡例名の両方が入っていた方がいい。そうして,v.dissolveなどをする際にGrass表示で固まって示されるように図廓名は最後がいい。
 蛇足だけど,梅田君の統一凡例名で,580200 残存・植栽樹群をもった公園,墓地等を,vege580200zanzon_koen_Hironeとするのは良いが,580300 工業地帯をvege580300kouju_Hirone,570100 路傍・空地雑草群落をvege570100 rokata_Hironeと単純ミスしているのはまずい。後々,まとめてrenameする必要がある。2バイト文字を如何に簡便なローマ字表記にするかも重要だ。

 さて,Output gis.mにはv.extractの結果が示されている。

85 categories loaded from table <vege25000Hirone523523all> Extracting features... Building topology for vector map <vegeHirone_550000>... 388 primitives registered 85 areas built 85 isles built Attaching islands... Attaching centroids... Number of nodes: 388 Number of primitives: 388 v.extract complete. Number of points:  Number of lines: 0 Number of boundaries: 303 Number of centroids: 85 Number of areas: 85 Number of isles: 85 Writing attributes... 2073 vertices registered Building areas... Registering primitives...

要するに,85個のポリゴンが検出された。次にその表示を示す。

 Grass gui on Windowsでのgis.mベースでの実行例も下に示す。
ベクトル/Feature selection/属性で検索[v.extract],
必須タブで入力するベクトルマップ名,出力するベクトルマップ名 選択タブで,Where’句なしのSQL文のWHEREコンディション,に_Hoki type=centroid,area layer=1 {where=Hanrei_C = '550000' を入力。
コマンド出力の表示は次のようである。
v.extract input=vege25000Hoki523534all@PERMANENT output=vege550000chikurin_Hoki type=centroid,area layer=1 {where=Hanrei_C = '550000'} new=-1

コマンドベースでの実行は次の様に入力すればいい。
v.extract input=vege25000Hoki523534all@PERMANENT output=vege550000chikurin_Hoki type=centroid,area where=Hanrei_C = '550000'

6. 福島県の植生図の例

 日本全域でみると,2万5千分の1植生図は網羅されていない。たとえば,福島県では多くが5万分の1である。このシェープファイルをダウンロードする際,県全域がまとめてダウンロードされる。言い換えれば,5万分の1植生図が県単位にマージされているので,非常に便利である。必ずしも県全域が網羅されている訳ではないようである。そして,5万分の1植生図の区分は担当者や作製年次によって違いがあるため,隣接図廓の表現と合っていない。以下,ダウンロードと利用法について簡便に述べる。

1. ダウンロード
 環境省自然環境局生物多様性センターの自然環境情報GIS提供システムのページ http://www.biodic.go.jp/trialSystem/top.html
から,Shapeデータのダウンロード,を選ぶ。植生調査(1/25,000縮尺),のリンクから入る。植生調査情報提供ホームページへ,をクリック。植生図の参照とダウンロードhttp://www.vegetation.biodic.go.jp/を選ぶ。インデックスマップが表示される。赤いメッシュ部は2万5千分の1があるところで,黒いメッシュは5万分の1だけ。地形図2次メッシュのコード番号で地形図廓を選ぶが,必ずしも図廓の全範囲のデータがある訳では無い。求める図廓まで拡大した後で,その図廓をクリックして選ぶこと。

2. 植生図の参照とダウンロードのインデックスマップで
 2万5千分の1植生図がある場合は,5万分の1植生図の情報とともに表示される。 2万5千分の1植生図について,地図画像のjpgとpdfファイルそしてシェープファイルがこのページからダウンロードできる。5万分の1植生図(jpgとpdfファイルは用意されている)のシェープファイルは環境省生物多様性センターのダウンロードページへのリンクが示されている。このリンクは結局,上の1. ダウンロード,で示したページで,ここで,植生調査(1/50,000縮尺),を選ぶことになる。前述のように県単位になっており,_aと_l,つまり,領域ベクトルと線ベクトルの二種類がある。後者が必要になる場合もあるのだろう。

3. 利用法

 これはこのページの中ほどに示している。ベクトルデータだけ見ても,ただポリゴンまたは線が表示されるだけで,使えない。必要な図廓のシェープファイルだけでなく,画像ファイルをともにダウンロードして,対比して,必要なポリゴンをピックアップする必要がある。
 なお,5万分1植生図と2万5千分の1の植生図のコード番号が異なる。たとえば,果樹園では後者は570200。次のページには対照表(excelファイル)が公開されている。これによれば,前者はMAJOR1の列に,9064,9063, 9065とされている。5万分1植生図のイメージデータには各凡例に番号が付されているが(福島県の果樹園は59),全く関係がない。

http://www.vegetation.biodic.go.jp/qanda/index.html#q2

凡例Q&Aの2 「 1/5万植生図(第5回調査まで)と1/2.5万植生図(第6回・第7回調査)の凡例対応表(エクセルファイルをダウンロード)を参考にしてください」


福島南部,2万5千分の1植生図の経緯度からUTM54への座標変換
ogr2ogr -t_srs EPSG:3100 /Users/moto/grassdata/FileConvert_folder/Fukushima_veg/FukushimaS_veg.shp -s_srs EPSG:4612 /Users/moto/grassdata/FileConvert_folder/Fukushima_veg/P564043.shp
福島南部,2万5千分の1植生図のGrass UTM54への取り込み
v.in.ogr

dsn=/Users/moto/grassdata/FileConvert_folder/Fukushima_veg/FukushimaS_veg.shp output=FukushimaN_veg min_area=0.0001 snap=-1 --overwrite
福島県,5万分の1植生図の経緯度からUTM54への座標変換
ogr2ogr -t_srs EPSG:3100 /Users/moto/grassdata/FileConvert_folder/Fukushima_veg/FukushimaPre5man_veg_l.shp -s_srs EPSG:4612 /Users/moto/grassdata/FileConvert_folder/Fukushima_veg/vg_07l.shp

福島県,5万分の1植生図のGrass UTM54への取り込み
v.in.ogr dsn=/Users/moto/grassdata/FileConvert_folder/Fukushima_veg/FukushimaPre5man_veg_l.shp output=FukushimaPre5man_veg_line min_area=0.0001 snap=-1 --overwrite

果樹園を抽出

v.extract input=FukushimaPre5man_veg_area@PERMANENT output=FukushimaPre5man_veg9054Kajuen type=boundary,centroid,area layer=1 {where=MAJOR1=9064 OR MAJOR1=9063 OR MAJOR1=9065} new=-1 --overwrite

以 上