MyQTHはJavascriptを使って端末の位置情報を取り出し、myqth.gaのリバースジオコーダを使ってJCC/JCGコードを国土地理院地図に表示するシステムです。
MYActはMyQTHにJAFF/POTAの公園位置情報とSOTAのサミットを表示するシステムで、各々myqth.gaのリバースジオコーダを使って国土地理院地図上に情報を表示しています。
公園の領域情報は国土地理院地図の自然公園の領域情報を使って生成しています。
ファイル名 | 内容 |
---|---|
A10-10.geojson | 国土地理院地図の自然公園の領域情報をQGISを使ってGeoJSON形式で保存したもの |
A10-10-property.xml | GeoJSON中に振られたIDと公園名を紐づける定義ファイル |
最初に国土数値情報ダウンロードサイトから領域情報をダウンロードします。 メニュー「TOP> 国土数値情報>自然公園地域データ」から都道府県毎に最新データをすべてダウンロードしてください。(全国版は更新時期が古いため使用できません)
次にQGIS(バージョン3.30以降)で新規プロジェクトを作成しベース地図に国土地理院タイルを指定します。ブラウザの「XYZTiles→GSI」をクリックすると地理院地図タイルが表示されます。
次にダウンロードしたZIPファイルをドラッグ&ドロップします。レイヤパネルにA10-06_01_GML-A10-06_01_NaturalPark.shp
等のレイヤが現れます。座標系を指定するためにレイヤ名の右端にある?アイコンをクリックし座標参照系JGD2000
参照系IDEPSG:4612
を指定すると画面上に領域図が現れます。これを繰り返し全ての県のデータを取り込みます。
領域図は自然公園の特別地域等のデータが入っておりサイズが大きいためこれを軽量化するために2段階でレイヤー内の地物を融合します。まず県ごとの
JAFF/POTAの公園名称・リファレンスコードが入ったsqliteのデータベースを作成します。
sh makedump.sh
このスクリプトはJAFFPOTAXref.csv
で定義されているコードをsqliteのデータベースにインポートすると共にデータベースのダンプを行います。
次にA10-10.geojson
にJAFF/POTAのコードを振ります。
python importpotajaff.py
このスクリプトはA10-10.geojson
を読み込みA10-10-property.xml
とsqliteのデータベースから各領域にJAFF/POTAのリファレンスコードJAFF
,POTA
とユニークなIDUID
を属性として付与しjaffpota.geojson
として出力します。同時に公園の形状から面積を求めsqliteのデータベースで該当する公園の面積データを更新します。この面積のデータはMyActでどのズームレベルでどの大きさの公園まで表示するか判断するために使われます。
jaffpota.geojson
はファイルサイズが大きいためMap Shaperを使ってファイルをTopoJSON形式に変換します。地図上にjaffpota.geojson
をドラッグ後、Simplifyのメニューで25%程度まで圧縮します。その後ExportでTopoJSON形式でjaffpota.json
というファイル名で保存してください。
最後にこのTopoJSONファイルの各領域に公園名を入れます。
python addanotation.py
このスクリプトでは各領域に名称を付与する共に瀬戸内海国立公園のようにエリアが細分化されている場合、エリア毎に振られたUID単位で名称の再設定をしています。このスクリプトで生成されたjaffpota-annotated.json
が最終的にMyActから読み込まれる領域ファイルになります。