ヤマレコなら、もっと自由に冒険できる

Yamareco

HOME > ヤマレコ質問箱 > カテゴリその他 > 地理院地図V4でインタラクティブに線描画する方法を教えてください

ヤマレコ質問箱 カテゴリ:その他

受付終了
緊急度 3その他
地理院地図V4でインタラクティブに線描画する方法を教えてください
質問2014年11月30日 18:25 (2014年12月12日 20:54更新)
皆さんこんばんわ

あまりに狭い領域の話題で、本来は国土地理院に問い合わせすべき内容なのですが、その前にこちらの質問箱に質問したいと思います。ヤマレコシステムとは関係なく、回答者を的場さんに限定しないという意味でこちらに投稿します。

皆さん、国土地理院のWEB版地形図が昨年あたりから新しくなったのはご存知でしょうか。まずは何が違うか説明します。

新地形図の変更点
・GoogleMapの概念を取り入れ、世界標準およびスマホ対応に適用した
・タイル画像が正方形になった
・記述言語をOpenLayersとした
・呼び出しデータの拡張子がxmlからkmlになった

新地形図でできなくなった(小生には実現できなかった)項目
・DRAWLINE関数で線描画を行う

旧地形図にはDrawLine関数がありまして、インタラクティブに線描画ができたのです。どんな内容かというと、次のリンクをクリックしてみてください。最初に出てくるウィンドーに問題点が書かれており、このレベルの内容はすでに国土地理院のページからは削除されています(移行期は掲載されていた)。
・中心経緯度周辺に地北線を描く
http://tancro.e-central.tv/grandmaster/sanpo2013/20130811/lineK-20130811.html
・ある地点から入力された方位角・距離に直線を描く(富士山と色川富士見台)
http://tancro.e-central.tv/grandmaster/maps/Kbasemap_vincenty.html?lat=35.36061111&lng=138.7273611&scl=9000&alpha=-124.151591&length=322.525488

新地形図は、例えばヤマレコの今の地形図。ウォッチ図がわかりやすいかも
http://portal.cyberjapan.jp/site/mapuse4/index.html#zoom=17&lat=35.36064&lon=138.72738&layers=BTTT

今のところ、新地形図で線描画はKMLデータを呼び出すしか見つけることができていません。このままでは上記のようなインタラクティブでの描画はできないことになります。画像であれば呼び出すことはできるようです(地理院地形図のカーソルは透明PNGを呼び出している)。

ということで質問です。

「新地形図でKMLファイルを呼び出さずに線描画する方法」をご教授お願いします。できればJSファイルのみでの実現方法で教えてください。内容が長文になると思いますので、実現したページのURLだけでも結構です。

2014年中に結論が出ない場合&自力解決ができない場合、国土地理院に問い合わせします。解決方法の質問 or 地形図V2の存続依頼

ちょっと風変わりすぎたでしょうか。。。
回答2014年12月12日 20:54 (2014年12月12日 20:54更新)
投稿から2週間、とりあえず締切とさせていただきます。
実際に可能となったら日記か山ノートでつぶやきたいと思います。

tancro
5 ポイント 役に立った
回答2014年12月01日 06:39 (2014年12月12日 20:54更新)
V4以降では,国土地理院は地図のタイル画像を標準的な形式で提供されて,
描画や画面周りは,OpenLayersなどの出来合いのライブラリを使って行うようになっていると思います.

例えば,国土地理院のOpenLayers2による構築サンプル
http://portal.cyberjapan.jp/help/development/sample.html#sample-ol2131

ですと,次のようなJavaScriptを追加すれば,線を表示できると思います.
-------------------------
var points = [];
// 線のポイントの緯度経度 (3ポイント以上でも可)
points.push(new OpenLayers.Geometry.Point(135.50766,34.662234).transform(projection4326,projection3857));
points.push(new OpenLayers.Geometry.Point(139.820535,35.658671).transform(projection4326,projection3857));

var lineString = new OpenLayers.Geometry.LineString(points);

// 線の書式
var style = {strokeColor:"#ff0000",strokeOpacity:1,strokeWidth:5};

var lineFeature = new OpenLayers.Feature.Vector(lineString, null, style);

// レイヤーを作成
var lines = new OpenLayers.Layer.Vector("Lines");
lines.addFeatures([lineFeature]);

// マップにレイヤーを追加
map.addLayer(lines);
-------------------------
OpenLayersの機能になりますので,
「OpenLayers 直線」あたりで検索されると,他にも情報が見つかると思います.

OpenLayersは汎用的で色々なことができるのですが,そこがかえって手を付けにくいというところはあるかも知れません...
10 ポイント! とても役に立った
お礼 
ご返信ありがとうございます。

OpenLayersは2.3.1と3.をそれぞれざっくり見たのですが、 OpenLayers.Geometry.LineString、 OpenLayers.Feature.Vectorは見落としていました。他ページも見ながら、OpenLayers3.0の文面をもう一度読み直したいと思います。

>「OpenLayers 直線」あたりで検索
おお、こちらは的確なURLが見つかりました。探せばあるものですね。こちらの不勉強で見つけ方が悪かったようです。ありがとうございます。


なお、投稿からまだ1日ですのでまだ完了設定にはせず、12月いっぱいぐらいは新規投稿を受け付ける予定です。
回答2014年12月01日 01:47 (2014年12月12日 20:54更新)
たぶんご満足いただける回答にはならないと思いますが、悪しからずご了承下さい。

地理院サイト、ウォッチ図等を山行計画に過去に利用しておりました。新VERに移行してから使い勝手が悪くなったので現在はカシミールで地理院地形図+5m・10mメッシュ高度基準データを開き、場合によっては航空写真をレイヤー重ねして山に持って行く地形図データを作成しています。

描画するものは予定トラック、地形図にない新道やポイント、幕営予定箇所、危険箇所等です。そのままオーバーレイするものは参考にしたい他の方のGPSトラック(ヤマレコ、WEBでDLしたGPSファイル)です。

カシミールで開きドロー処理したものはマップカッターで切り出し、ストレージ容量や処理能力に見合ったサイズの形式にタイル化してGPSに転送して現地で使っています。

難点はカシミールがスマホに対応していない。事前処理に時間と手間がかかることです。

公的なサイトにユーザー視点の機能を期待するだけ無駄なことは解っていますのでさっさとそっちは見切ってカシミールで今は充分満足しています。

ジャバスクリプト等の難しい事はわかりません。

PS。地北線を描くとありますが磁北線ではないでしょうか?緯経度による微妙な磁北偏差はカシミールでは自動計算されて表示されます。
10 ポイント! とても役に立った
お礼 
返信ありがとうございます。
磁北線のミスタイプです。