Google Earthで見ることの可能な複数年次の変化をGE上でパスを描いて,それをGrassGISに移して,面積などの計算処理や色別に分布を示すことなどができたらと思って,ここにその作業の流れを示す。辻村くんの卒業論文で,北アルプスの積雪とハイマツ分布を捉える手法として木庭が考えた。辻村くん,提出までもう時間がないよ。
Nov. 14, 15, 2018
その後, Google EarthやGoogle Mapの利用について,幾つか気がついたことがあったので, このページの左のペーンに新たなコンテンツを追加し,これを踏まえて,今見ていただいているページも更新した。
|
I.1 Google Earthのメーンメニュー左端で,(環境)設定を開くと,4枚のタブがある。左端の3Dビュー,の,緯度/経度を表示,で,度(度,分,秒)を選ぶ。UTMを選ぶこともできるが,表示だけの問題であって,kml出力した場合,座標点は相変わらず経緯度表示されているので,処理には関係しない。
I.2 メーンメニューの六つ目の,追加または最上縁のアイコン,から入って,一番上の,自作のフォルダ(KmlToGrass),を選んで,その後,このフォルダ内に,複数のポリゴンなどを作成してゆく。名前はGrassに入れる時を考えて,フォルダ名を含めて英数字とする。
スタイル/色 Style, Color のパネルでは,範囲Areaは枠線outlinedだけにする。イラストレーターなどのドローソフトと異なり,描く過程で閉曲線になっていて,最終点は始点をクリックして終わる。この例では,2つのポリゴンで,AsukakyuParkとneighbor1である。
図1 Google Earthで作成したポリゴンを白色で示す。適当に描いています。描けるのは線分のみ。
I.3 KmlToGrassフォルダを選んで,Controlキーで押さえて,名前をつけて場所を保存Save place as,を選ぶ。ウインドウが出るので,ファイル形式としてkmlを選び,保存場所pathを指定して,保存。できたkmlファイルはエディターで見ることができる。Google Earthでは,度分秒,表示にしていたが,度表示になっていた。表示設定に関係なく,度単位で記録されていることがわかる。度表示というのは,次のように,ddd.ddddddddddddddという形。135.8207314566731,34.47354998428712
一応,そのkmlファイルをここにリンクする。
この第II章では,3種の方法を紹介する。Zonum Solutions Converter と MyGeodata Converterとそして,GDAL/OgGRのogr2ogrコマンドを使う方法である。結局,このogr2ogrを使う方法がフリーかつ最も優れているようである。一般的なコマンドでできるのに何故,有料サイトが成り立つのだろうか。
ファイル操作は,パス指定が簡便なので,USBドライブを使う。
木庭の場合はD:ドライブになる。
で,D:ドライブにポリゴンkmlファイルを入れて,ベクトル化するコマンドは,
ogr2ogr -f 'ESRI Shapefile' Output_sahpefile.shp Input_KML.kml
となる。第I章で述べたkmlファイルの作成について確認しつつ,シェープファイルの作成法までを示したいと思う。
Googel Earth 最上縁のメーンメニューの追加Addを選んで,自ら作成したKmlToGrassフォルダーの下位に,新しいフォルダーIcelandMtsを作って,例えば,海域を含めたアイスランド山地のポリゴンIL_sea_slopeを作る。前にも述べたが,Google-Earth New Polygonのパネルが出ている状態で,スクウェアー四分割線が出た状態でクリックドラッグを繰り返して行く。クリックドラッグをすると赤い点が連なりスムーズな曲線を描くことができる。ミスった際には赤点をクリックアンドドラッグして修正することができる。操作過程で使用法は各自で理解できるだろう。Style,Colorタブで,Areaをoutlinedにするか,opacityを0%にすれば,Linesでポリゴンを描くのに便利である。Linesのopacityは100%のままがいい。そうしないと,ポリゴン作成過程でのミスをライブで知ることができない。とはいえ,このクリックドラッグする方法では一つのポリゴン作成に多数のクリック点ができて,Grassへの取り込みが難しく,ぼくは未だ成功していない。
kmlからshapeへの変換の際には,もう一つ問題がある。kmlファイルとしてまとめる場合,ポリゴン,ライン,ポイントを混在してはならない。別々にkmlファイルを作成する必要がある。
このように注意しても,
現在のところどうしても,Warnig 6という次のようなメッセージが出る。この解決法がみつかっていない。なお,シェープファイル4のうち,dbfのファイル名は英数字10個までなので,shapeファイルの名称はこの制限を守る必要がある。
Warning 6: Normalized/laundered field name: 'description' to 'descriptio'
Warning 6: Field timestamp create as date field, though DateTime requested.
Warning 6: Field begin create as date field, though DateTime requested.
Warning 6: Field end create as date field, though DateTime requested.
Warning 6: Normalized/laundered field name: 'altitudeMode' to 'altitudeMo'
なお,ここの例では,アイスランドの一つの氷河域からポリゴンを作成した例のコマンドを示す。
ogr2ogr -overwrite -f "ESRI Shapefile" D:\KmlToShape\shape\ILGlacier.shp D:\KmlToShape\kml\ILGlacier.kml
ogrコマンドは,from toの配列の前後が逆転している。kmlファイルからシェープファイルを作成する場合, to shp from kmlとなっている。整理の都合上,kmlファイル用のフォルダーとシェープファイル用のフォルダーを別々にしている。
次のGEの図では二つのポリゴンを示している。緑色のものはクリックアンドドラッグをかなり使っている。赤色の方は粗くクリッククリックして作成した。
次の図は緑色のポリゴンについてGet InfoをCotrol+Clickして,Google Earth - Edit Foloderを表示したものである。緑色の線上に,多数の赤い点を見ることができる。
次の地図は, 氷河のポリゴンをGrassの世界経緯度座標系に取り込んだものである。バックにはNatureEarth_urban地図を配置している。
世界経緯度座標系では東西方向が拡大されている。とはいえ,感覚的には,次のように南北方向が圧縮されているように見える。
Zonum Solutions は,II.2 参考(非推奨),に詳細を示す。これは問題があることがわかり,MyGeodata利用を推奨していた(後述するようにこれも今後は使用しない)。図2はGoogle Earthで表示したシベリア北部の映像である。大きな構造土の2箇所をオレンジ色でトレースしている。右図はZonum Solutionsでshape変換したベクトルファイルをGrassの世界経緯度座標系に取り込み,表示したものである。左のポリゴン右端近くに斜線が入っていて,一つのポリゴンが2分割されてしまっている。この理由として,Google Earth上でのポリゴン作成時の描画にノイズがあり,それを拾った結果であろう。とはいえ,Google Earthで見る限り,そのように見えない。自然界もちろん人口構造物でも,多角形の各辺が一つのポリゴンのセントロイド(多角形の重心)側に寄ることがあり,これが影響を及ぼしているように見える。明日香村でも同様の結果となった。利用者側からすると,バグの一つと考えられるので,このZonum Solutionsは使用に耐えないということになる。MyGeodataでは,中緯度の明日香村とこの高緯度のシベリアとで問題がない。
図2 nignejansk2のGEでのポリゴン作成(左図)とGrassのWorld LatLon座標系に取り込んで得たベクトルの表示(右図)
ニシュネヤンスク nignejanskの左のポリゴンの中心は,71d26m09.53s N,136d06m27.88s E
なお,次のサイトにもkmlをシェープ化できるが,試していない。
https://freegeographytools.com/2009/online-kml-to-shapefile-converter
Convert KML to SHP Online
Enjoy fast and easy to use online converter for geospatial data!
https://mygeodata.cloud/converter/kml-to-shp
ファイルが一定以上大きくなると有料になるかもしれないが, 上記Zonumも同様のようである。マックではこのページでは,kmlファイルのドラッグアンドドロップに対応していないようで,パスの参照から実行することになる。使用法は単純なのでここでは下記のZonumのように述べない。GEで出力した 上記nignejanskのポリゴンのkmlファイルとMyGeoDataで出力されたシェープファイルを次に用意した。
nignejansk2.kml mygeodata
なお,このMyGeodataはフリー使用の限界が低い。使用量そのものは数ドルであるが,クレジットカードでの引き落としであり,不安があり,使用が憚かられる。
http://www.zonums.com/kml2shp.html
にアクセスして,オンライン版で実行する。
http://www.zonums.com/online/kml2shp.php
ファイルのmaxサイズは,7.8MBまでなので,場合によっては分割する必要性があるかも知れない。このサイトの説明を次に示す。
Kml2shp file conversion
Need of transferring Google Earth Data to a GIS? Kml2shp transforms KML
files into ESRI Shapefiles.
The KML file could contain Points, Paths and Polygons. When creating SHP
files the information is separated into thematic layers.
For each shapefile (shp), an attributes table (dbf) and index file (shx) are
created.
The kml to shp conversion consists of three steps:
1) Open KML file
2) Choose Shape Type
3) Select output Shapefile name
Optionally, you can change from WGS84 to a local datum and from Lat/Lon to
UTM.
Also, Kml2shp can export to AutoCAD (DXF) and GPS
(GPX)
______Google Earth to Shapefileをオンラインで実行______
1 Upload KML/KMZボタンをクリックして,パスを参照して,ファイルを選択すると,下のウィンドウにkmlファイルの中身が表示される。
Projectionは規定値のLat/Lonのままで動かさない。
2 Process KMLボタンを押すと,下のウィンドウに
Entities found:
# Points: 0
# Paths: 0
# Inner Polygons: 0
# Outer Polygons: 2
Select your Shapes to export and click the "Export SHP" button.
と表示される。GEで作成したのは 2 polygonsなので適切である。これに従って,中段のShapes to Exportで,outer polygonsのラジオボタンを押す。
3 Export SHPボタンを押すと,
Shape file: POLYGON,というウィンドが出る。で,Downloadボタンを押すと,polyogns10.zip
(1回目は10で,以下,9,8,........) がダウンロードされる。
4 macの場合は,StuffItExpander.appで開く。ダブルクリックでは解凍されない。ファイ名は4ファイルともpolygon10.shp,polygon10.shxなどとなっている。polygon10.prjの中身は,エディターで見ると次のようになっている。
Projection
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]
ここに作成したpolygon8の4ファイルのzipファイルをリンクする。
1. Grass内に世界経緯度座標系(EPSG:4326 (WGS84))のLocationを作成
Google Earthは,世界経緯度座標系(EPSG:4326 (WGS84))が使われている。これは次のものである。
http://spatialreference.org/ref/epsg/wgs-84/
Input Coordinates: Output Coordinates:
EPSG:4326
WGS84 Bounds: -180.0000, -90.0000, 180.0000, 90.0000
Projected Bounds: -180.0000, -90.0000, 180.0000, 90.0000
Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.
Last Revised: Aug. 27, 2007
Area: World
これまでなら明日香村はCS6に属するからogr2ogrで座標変換するのであるが,用途を考えてみると,CS6よりも,Google Earthの座標系のままの方が便宜がいい。
そこで,Grassでは,EPSG:4326のLocationを作成し,mapsとして,何らかのテーマ名を用意するのがいいだろう。ここでは,temporaryとした。
2. Grass ファイル/ベクトルデータのインポート/一般的なインポート形式 [v.in.ogr]
consoleをみると,
ベクトルマップ <polygons8@temporary> にトポロジーを作成しています...
プリミティブを登録しています...
プリミティブは登録されました
頂点は登録されました
Building areas...
作成された領域
アイルは作成されました
Attaching islands...
Attaching centroids...
ノードの数: 2
プリミティブの数: 4
ポイントの数: 0
ラインの数: 0
境界の数: 2
セントロイドの数: 2
領域の数: 2
アイルの数: 2
取り込んだポリゴンを示したのが次の図3である。左の黄色くなったポリゴンをqueryポインターで選んで表示されたポリゴンの情報を併せて示している。面積などが示されている。ベクトルマップの全ポリゴンの面積は,左のペーンの「おサルのGIS GRASS,QGIS,R ☆ はじめに」, の中に示している。
図3 取り込んだポリゴン2個と左手のポリゴンのベクトル情報
世界経緯度座標系は投影法として正距円筒図法にあたるので,横方向の拡大率は、赤道を1とすると、緯度 φで 1/cosφ となる。
次の図4と図5では, 横(経線幅)方向の拡大を縦(緯線幅)方向の圧縮として評価している。GEで作成したポリゴンをおよその矩形で囲み,その矩形を
明日香村については,1/((cos(34.473)) = 1.21。1/0.82 = 1.219
ニシュネヤンスクについては, 1/((cos(71.436)) = 3.14。1/0.32 = 3.125
となり,簡便な作業結果と真球の三角関数の計算結果とほぼ合っている。図4と図5は世界経緯度座標では,高緯度に進むほど,緯線幅が圧縮された印象を与えることを示した。本来,経線間は赤道で最も広く極点でゼロになるのに, 緯線間隔と同様に,経線幅も変わらないという投影法のために,この現象が起きている。
Google Earthの表示の投影法は,擬似メルカトール図法にあたる。この図法は全球を表示することが可能となっているが,地球形は真球で近似されている。位置情報は世界経緯度座標で,表示には,擬似メルカトール図法が使われているのである。
図4 明日香村の飛鳥京跡付近
左のポリゴンの発掘域のほぼ中心の経緯度は,34d28m24s N, 135d49m16s E
図5 ニシュネヤンスク nignejansk付近
左のポリゴンの中心は,71d26m09.53s N,136d06m27.88s E
Grassでの表示が,日本というか近畿地方ではどの程度歪むのかをここに示す。図6の左図と右図はほぼ同縮尺である。左図はCS6のもので,飛鳥京跡IIIの発掘展示された部分を表示しており,形や大きさは,いわば正しい。右図はGoogle Earthの表示であり,形と大きさはほぼ類似しており, 感覚的には問題がないことがわかる。
図6 左図はCS6の画面で右図はGoogle Earthの画面
GEやGMでは,位置情報は世界経緯度座標系(epsg: 4326)で, 画像表示は擬似メルカトール投影(epsg: 3857, 別名Web Mercator, Google Web Mercator, Spherical Mercator)されている。kmlファイルからまずは,世界経緯度座標系のLocation 座標系に取り込み, 擬似メルカトールのLocationに移動すればいいと考えてしまうが,下記のサイトに表示されているように, 形は擬似メルカトールよりも世界メルカトール図法の方がベターなので,Grassでは世界メルカトールのLocationを採用することにする。UTMを使わない理由は, Google上の作業で得たkmlまたはベクトルデータは高い精度を持っていないし, その必要もないテーマで使えると言えるのだろう。
Mercator vs. well…not Mercator (Platte Carre) Platte Carre and Mercator
まずは世界経緯度座標系のLocationに取り込んで, 新たにWorldMercator(epsg: 3395)のLocationを開いて, 世界経緯度座標系中のfileを取り込むという手順をとることになる。WorldMercator(epsg: 3395)のLocationで,ファイル/ベクトルデータのインポート/Reproject vector map from different Grass Locations (v.proj)で実行する。もちろん, 実施前に, 取り込み先のLocation名, mapset名, ファイル名(この場合, location=World_LatLonWGS84 mapset=temporary input=nignejansk2_polygon)を確認しておく必要がある。
その結果は次のよう。
(Mon Nov 26 00:54:57 2018)
v.proj location=World_LatLonWGS84 mapset=temporary input=nignejansk2_polygon output=nignejansk2
Reprojecting primitives ...
ベクトルマップ <nignejansk2@moto> にトポロジーを作成しています...
プリミティブを登録しています...
4 primitives registered
51 vertices registered
領域を作成しています...
2 areas built
2 isles built
島を接続しています...
セントロイドを接続しています...
ノードの数: 2
プリミティブの数: 4
ポイントの数: 0
ラインの数: 0
境界の数: 2
セントロイドの数: 2
領域の数: 2
アイルの数: 2
(Mon Nov 26 00:54:58 2018) コマンド終了 (0 sec)
図7 Location: World Mercatorの表示
IV.1 北アルプスの研究に関連して
Google Earthの時間スライダーで,複数の画像を見ることができるので,積雪域とハイマツ域の分布の季節的変化を知ることができる。それぞれの撮影年月日と種類をフォルダ名にして,個々のポリゴンには,東斜面や西斜面などの地形的な位置を示す用語を含むようにすると後々,分析する際に便宜を得ることができる。名前は全て英数字にしないと,Grassで文字化けして使えなくなるので注意する必要がある。
IV.2 全世界の何らかの分布を描くことができる
Grassの Locationを世界経緯度座標系にすることで, GEでの作業をGrassに移動して,分析することができる。
IV.3 PlugX-shapeを使う
PlugX-shapeはGEのkmlファイルをイラストレーターに取り込んで, さらなる作業を実施し, 日本の平面直角座標系へのシェープファイルを出力することができる。その際, 3点座標値が必要で,kml出力する前に, 適当な3点をポイントする必要がある。上記のKml2shpオンラインアプリから出力されたシェープファイルは, ogr2ogrによる経緯度座標系とUTM座標系以外への変換が困難なので,注意する必要がある。
以 上