- ベストアンサー
世界測地から日本測地への変換について
Google Mapsで、世界測地系の座標を日本測地系へ変換する方法が わかりません。 世界測地に固定の値を設定していまうと他の地域で誤差が出てしまいます。 何か良い方法はありませんでしょうか? 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>この取り出した緯度・経度をこのプログラムに投げて、計算された数字をHTMLに表示させる方法などはわかりますでしょうか? かなりめんどくさいです。 いわゆるAjaxを用いてappを呼び出すしか方法がありません。 // javascriptを使わず、普通のhttpの応答だけでもすこし面倒ですが →clientからxmlhttprequestを使用し、httpでサーバ呼び出し →httpで呼ばれたサーバはphpやperlなどを介し、exeが吐き出した文字列をclientにxml形式でclientへ返答 →xml形式で受け取ったclientは適切に情報を取り出し、画面に出力 と言った流れになります。 プロに頼むと3時間で作ってくれる、程度のボリュームですが。^^; 私だったら金取ります。 以下にざっくりとした流れだけ書いてみます。 // client側js // ボタンとかのonclickでsetData()を呼ぶ感じ // XMLHttpRequestの取得(やり方は古いかも function getXMLHTTPObj(){ try{ return new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){ if(typeof(XMLHttpRequest) != 'undefined'){ return new XMLHttpRequest(); } return false; } } } function setData(){ var reqSend = getXMLHTTPObj(); if(reqSend) { str = "座標など送信するもろもろの情報"; reqSend.onreadystatechange = function(){ if(reqSend.readyState == 4 && reqSend.status == 200) { xmlData = getNode(reqSend.responseXML, 'main'); for(ii=0;ii<mlData.childNodes.length;ii++) { node = fd.xmlData.childNodes[ii]; } } } reqSend.open('POST', "./set.php"); reqSend.setRequestHeader('content-type', "application/x-www-form-urlencoded;charset=UTF-8;"); reqSend.send(str); } } //server側php <?php $prm = join(' ', $_POST); // ←座標とかが渡ってくる $ret = system('起動したいexe'.$prm); $str = ごにょごにょ($retをxml形式に変換) header('content-type:application/xml'); echo "<main>"; echo $str; echo "</main>"; ?> つまるところ、かなり面倒だと言うことです。 世界測地とか私は良く知りませんが、世界測地→日本測地のロジックを調べた上で javascriptで実装されたほうが早道かと思います。
その他の回答 (3)
- equinox2
- ベストアンサー率48% (321/660)
ANo.2です。 ANo.3さんの回答のお礼に反応して恐縮ですが・・ >世界測地→日本測地のロジックについて、もう少し調べてみます。 ダウンロードされたEXEをJavaScriptから呼び出すのは大変なので、必要な精度を満足するのであれば、簡易的な変換がよろしいのでは・・? との理由から http://homepage3.nifty.com/Nowral/02_DATUM/02_DATUM.html を参照させていただきました。 html内にも変換のJavaScriptがありますし、何種類かの簡易的な変換式のソースが公開されています。 世界測地→日本測地への変換は、単純なオフセットではないので1m未満の精度で変換するならTKY2JGDのような仕組みが必要だと思いますが、それほど必要なければ簡易的な方法でもよいのではないでしょか。
- equinox2
- ベストアンサー率48% (321/660)
どの程度の誤差を許容するのか判りませんが、簡単な方法から試してみてはいかがでしょうか。 http://homepage3.nifty.com/Nowral/02_DATUM/02_DATUM.html
補足
equinox2さん ありがとうございます。 国土地理院から提供されている「datum.exe」(本測地系と世界測地系(WGS84)の相互変換)というコマンドプロンプトで起動するものをダウンロードしたのですが、こちらとの繋ぎ方がわからなくて・・・ Google Maps API の提供されているもので緯度・経度を取り出しているのですが、この取り出した緯度・経度をこのプログラムに投げて、計算された数字をHTMLに表示させる方法などはわかりますでしょうか?
- rise_against
- ベストアンサー率37% (92/247)
座標変換だけが目的ならば 国土地理院のTKY2JGDを利用して 逆方向の変換で世界測地系→日本測地系にして 座標を確認してはダメですか? http://vldb.gsi.go.jp/sokuchi/tky2jgd/
補足
rise_against さん ありがとうございます。国土地理院で提供されているコマンド プロンプトから実行するプログラムなどをダウンロードしたのですが、 コードでの処理はやはり難しいでしょうか?
お礼
wp_さん ありがとうございます。難しいんですね・・・ 世界測地→日本測地のロジックについて、もう少し調べてみます。