x=0.805018,2.415053,4.025088…
y=74.995682,224.987045,374.978394…

などと中心からのx方向、y方向の距離[m]があります。
中心の緯度経度は、
緯度=34.9083333333333
経度=136.5975
です。

c言語でそれぞれのx,yの地点の緯度経度を知る変換プログラムを作りたいのですが、どうすればよいでしょうか。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

いろいろと条件が足りません。


・地球上の北緯約34.9度、東経約136.6度、と考えていいのでしょうか?
・x,yはどの方向に対しての距離なのでしょうか?Yの正が北?南?それとも全然違う方角?Xの正は?
・どの程度の誤差まで許容できるの?

誤差が十分に許容できるなら、その緯度/経度付近は球面に接する平面に近似できます。
北緯約34.9度、東経約136.6度、Yの正が北、Xの正が東
とすると、アークタンジェント(x/地球の半径)で東経の、アークタンジェント(y/地球の半径)で北緯の差分の角度が求まります。
計算してませんが、数km程度ならこれで十分なはずです。

それ以上の距離があったり、より高い精度が欲しい、となると、緯度による東西の長さ、曲面上での距離、地球の偏平率などいろんなものを考慮する必要があるでしょう。


    • good
    • 0

2地点の経度・緯度から距離を求めるなら過去の質問にありました。


計算式を改良すればできるかもしれません。

参考URL:http://oshiete.goo.ne.jp/qa/249931.html
    • good
    • 0

無理では。



緯度経度って、3次元座標を示す(ここでは極座標の動径が暗黙的に指定されているはず。)ものだから、xとyの2変数だけでは情報が足りないような。

質問内容を読み違えているだけかもしれませんが。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q緯度・経度からの距離計算

ある地点の緯度・経度ともう一方のある地点の緯度・経度が
わかっているとして、その各緯度・経度より2地点間の距離を
計算できないのでしょうか?
計算方法を知りたいのです。
なんか公式みたいなものはないのでしょうか?
なんかヒントになるサイトのURLでもかまいません。
お願いします。教えて下さい。

Aベストアンサー

簡略バージョン(地球を完全な球とみなす)と,精密バージョン(地球を回転楕円体とみなす)があります。

まずは簡略バージョン。
ある地点の緯度・経度をδ1・λ1,もう一方の地点はδ2・λ2とします。
経度は,東経を正,西経を負。緯度は,北緯を正,南緯を負とします。(実は逆でもよい。要は,東と西,北と南で,それぞれ符号が異なっていればよいのです)
また,2地点間の角度(地球の中心から見た時の)をdとします。
すると,球面三角法の公式より,
cos d = (sinδ1)×(sinδ2) + (cosδ1)×(cosδ2)×cos(λ1-λ2)
となります。ここに緯度・経度をあてはめて,cos dが求まります。
cos dから角度dが逆三角関数cos^-1で求まります。電卓のcos^-1キーを使うと便利です。ただし,dはラジアンで求めてください。(緯度・経度は度単位でかまいません)
あとは,距離(km)=6370×dで2地点間の距離が出ます。(6370kmは地球の平均半径です)

やや精密バージョンは,No.1の参考URLに出ています。楕円体であるため,地心緯度と地理緯度にわずかながら差が生じているので,それを補正します。

以上の方法の問題点は,2地点間が近い時に誤差が大きくなることです。
たとえば,2地点間の距離が1kmのとき,d=0.9999999877となりますが,末尾を四捨五入してd=0.999999988とすると,距離=0.54kmとなってしまいます。
これはcosを使っているからです(cosは角度が小さいとほとんど変化しませんね)。

そのような場合は,次の近似式が使えます。
2地点の緯度の平均(ふつうに足して2で割る)をδ0とすると,
d=√[{(λ1-λ2)×(cosδ0)}^2 + (δ1-δ2)^2]
角度は度でもラジアンでも構いません(式中の値がすべて同じ単位であれば)。

もっと精密な方法は,国土地理院のページに載っています。(参考URL)
コンピュータならよいのですが,手計算で試みるのはかなり大変そうです。

参考URL:http://vldb.gsi.go.jp/sokuchi/surveycalc/bl2salfa/bl2salfa.html

簡略バージョン(地球を完全な球とみなす)と,精密バージョン(地球を回転楕円体とみなす)があります。

まずは簡略バージョン。
ある地点の緯度・経度をδ1・λ1,もう一方の地点はδ2・λ2とします。
経度は,東経を正,西経を負。緯度は,北緯を正,南緯を負とします。(実は逆でもよい。要は,東と西,北と南で,それぞれ符号が異なっていればよいのです)
また,2地点間の角度(地球の中心から見た時の)をdとします。
すると,球面三角法の公式より,
cos d = (sinδ1)×(sinδ2) + (cosδ1)×(cosδ2)×cos(λ...続きを読む

Q緯度、経度の 10進法と 60進法の変換方法について

135°46'10.90" のように分以下が60進法で記述された経度を
135.6733223 のように 分以下が10進法の方式に変換したいと思います。(相互変換)

このような時どのように計算すればいいのでしょうか?

10進数を2進数に変換くらいはなんとか理解できたのですが、60進法で分とか秒とか出てくるとさっぱりわかりません。

説明できる方いらっしゃいましたらよろしくお願いいたします。

Aベストアンサー

135°46'10.90"なら
135 + 46÷60 + 10.90÷60÷60

135.6733223なら
整数部分だけ取り出して135°
小数部分だけに60をかける
0.6733223×60=40.399338

整数部分だけ取り出して40'
小数部分だけに60をかける
0.399338×60=23.96028

23.96028"
よって、135°40'23.96028"

60をかけたり割ったりすればいいです。

Q緯度経度から方位角を求める

いつもお世話になっています。

緯度と経度が分っている2点の方位角をプログラム(C言語)求めたいのですが、国土地理院のHPにあるような計算式だと計算に時間が掛かってしまいます。
精度はそこそこで簡単な計算方法があれば教えてください。
【国土地理院HP】
http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/

Aベストアンサー

その「そこそこの精度」が一体どの程度かお示し下さらないと回答する方はちょっと困ります。
例えば目的が測量とカーナビゲーションとでは月と鼈ほどの大きな差があります。

以下の方法は地球を球体とみなして球面三角法で解く簡便なものなので測量には使えませんが、
日本付近の緯度での2点間の距離400kmほどで誤差は0.1度を少し超える程度です。

地点Aの経度と緯度をそれぞれL1,B1とし、
地点Bの経度と緯度をそれぞれL2,B2とし、
地点Aからみた地点Bの方位(真北を0度として東回りにはかった角度)をθとすると以下の手順で
求められます。

Y = cos(B2) * sin(L2 - L1)
X = cos(B1) * sin(B2) - sin(B1) * cos(B2) * cos(L2 - L1)
θ[rad] = atan2(Y, X)
もし θ[rad]<0 なら θ = θ + 2π とし結果を0から2π未満に収めます。
θ[deg] = θ[rad] * 180 / π

※ 「*」は乗算、「/」は除算、sin()は正弦関数、cos()は余弦関数、
  atan2(y, x)は逆正接関数(返り値は-2π~+2π)、
  θ[rad]は弧度法でのラジアン単位の角度、θ[deg]は度単位の角度をそれぞれ表す。
  経度は東経を「+」西経を「-」、緯度は北緯を「+」南緯を「-」の数として扱います。

地球を回転楕円体として扱うもっと精度の高い式もありますので先の式で不足なら必要な精度をお示し下さった上でお尋ね下さい。

まずは参考ページをご覧下さい。
http://forum.nifty.com/fyamap/kyorihoi.htm
@niftyでの距離と方位の計算に関する書き込みのLOGです。

http://www.arknext.com/utility/contents/gccj.html
様々な回転楕円体要素(球体を含む)での距離と方位を計算してくれるページです。

書籍では「現代測量学 第4巻 測地測量1」社団法人日本測量協会 をお薦めします。

参考URL:http://forum.nifty.com/fyamap/kyorihoi.htm

その「そこそこの精度」が一体どの程度かお示し下さらないと回答する方はちょっと困ります。
例えば目的が測量とカーナビゲーションとでは月と鼈ほどの大きな差があります。

以下の方法は地球を球体とみなして球面三角法で解く簡便なものなので測量には使えませんが、
日本付近の緯度での2点間の距離400kmほどで誤差は0.1度を少し超える程度です。

地点Aの経度と緯度をそれぞれL1,B1とし、
地点Bの経度と緯度をそれぞれL2,B2とし、
地点Aからみた地点Bの方位(真北を0度として東回りにはかった角度)を...続きを読む

Q日本測地系のXY座標から緯度・経度を求める方法

こんばんは。
過去ログからみつけることができなかったので、質問させていただきます。

手持ちの旧座標(日本測地系)のXY座標から、緯度・経度を求めるには、どのような計算が必要になるのでしょうか。

GPSを使う、という方法もありますが、もし計算方法があるのであれば、と思っています。

手持ちの図書も少なく、浅学のため、もしご存じでしたらご指導ください。

Aベストアンサー

こんな感じなんでしょうか

http://vldb.gsi.go.jp/sokuchi/surveycalc/trans_alg/trans_alg.html

めんどくさければ、

http://vldb.gsi.go.jp/sokuchi/surveycalc/xy2blf.html

こちらで計算してしまうのが手っ取り早いです。

QExcelの自動計算で緯度・経度を60進法⇔10進法で相互変換したい

Excelの自動計算で60進法の緯度・経度を10進法に、
10進法の緯度・経度を60進法に相互変換したいのですが、
計算式をご存知の方はいらっしゃいますでしょうか。

具体的には、
経度139453.5 ⇔ 経度139.759774
といった感じです。

地理の項目で質問して計算方法はわかったのですが、
これをExcelの計算式にしようとしたところ行き詰まりました…

http://okwave.jp/qa3217137.html

よろしくお願いします。

Aベストアンサー

>経度139453.5 ⇔ 経度139.759774
まずこれは変ですね。経度139.759774なら1394535.19になるはずです。

ともあれ計算式は、A1に1394535.19があるとき
=INT(A1/10^4)+INT(MOD(A1,10^4)/100)/60+MOD(A1,100)/60^2
で139.759774が求められます。

またA2に139.759774があるとき
=VALUE(INT(A2)&TEXT(INT(MOD(A2,1)*60),"00")&TEXT(MOD(MOD(A2,1)*60,1)*60,"00.00"))
で1394535.19が求まります。

意味は考えてみてください。上の式の方が考えやすいと思います。下の式はその反対を行っているだけです(ただし桁数を合わせるため、一旦文字列にしていますが)

Q【至急!】座標データを緯度経度に変換

業務上、行き詰まっております。 【至急!】でお願いできれば助かります。

平面直角座標9系(世界測地)のデータがあります。
このデータを緯度経度に変換したいのですが、エクセルでどのように計算すればよろしいでしょうか?

座標データはたくさんあります。一部HPで、一つずつ変換することができるようなのですが、とても手間がかかるので、エクセルでできたらと思いました。また、別のHPで、とても専門的な長い計算式を見つけたのですが、エクセルではできないでしょうか?

一般事務員で、専門的なことは全く分かりません。どうぞよろしくお願いいたします。

Aベストアンサー

No.5捕捉回答

=> この5)、6)は、世界測地系から日本測地系への変換結果という理解でよろしいでしょうか?
良いと思いますよ。

緯度経度だけなら、も一つ戻って
http://surveycalc.gsi.go.jp/sokuchi/surveycalc/xy2blf.html
の方でもよかったのかな。

Q距離と方位角から緯度、経度がわかるサイト

「緯度、経度から2点間の距離と方位角を求める」というプログラムは国土地理院のサイトにあったのですが、その逆の距離と方位角から緯度、経度を求めることができるプログラムをご存じないでしょうか?
バイトで今日はこれやっといて、と言われたのですがまったく判りません。質問しようにも現在事務所に誰もいないので、とても困っています。
どこか良いサイトまたはプログラムをご存知の方、よろしくお願いします。

Aベストアンサー

検索したら、こんなサイトを見つけました。

参考URL:http://www.arknext.com/utility/contents/gccj.html

QGPS(緯度,経度)から,ローカル(局所平面)のXYZ座標を求めるには?

GPSに関して,何度か質問をさせていただいております。
以前,GPS(緯度,経度)から,地心座標系(XYZ)への変換について教えていただきました。
その方法で地心座標系(XYZ)を計算することができたのですが,緯度,経度,平均海水面からの高さ(MSL)から,局所平面(ローカル)座標系(X,Y)を求める方法について悩んでおります。
例を申しますと,平坦地の100m(南北方向100m,東西方向100m)の矩形のラインをGPSで計測し,地心座標系で軌跡を求めると,南北方向の100mに対して,距離が70mの長方形の走行軌跡になってしまいます。
GPSで平面での走行距離や方向を求めたいと思っております。
緯度,経度情報からローカルの平面座標系(X,Y)(m単位)を求める方法をご存知でしたら,教えてください。よろしくお願いします。

Aベストアンサー

お使いのGPS受信機は測量用ではなくごく一般的な低価格の物ですよね?
そうだと一般にC/Aコードと呼ばれる信号のみを使って位置を計算しますから、S/A(意図的な精度劣化)が解除された現在でも場合によっては数十mの誤差が生じる事があります。S/Aがかかっていた頃は百mを越えるのは当たり前でした。
また高度の誤差はその倍以上になります。

ですから一台の受信機である点で測位しその後別の地点に移動して再び測位した場合、確率的には低いですが最悪誤差は倍になります。
通常わずか100m離れた2点であればどういう移動体か存じませんがその間の移動時間は短いでしょうからそのような距離計算みたいな相対位置に大きな誤差が生じることはまず無いと思われますが、もし誤差が大きいとすればそれは測位計算に使われた衛星(の組み合わせ)がその2点で異なる場合が考えられます。この場合は測位位置が急に離れた場所にジャンプします。
またDGPS対応の受信機ならそれを使えば単独測位でも誤差を数m程度に軽減できますがDGPSデータの受信機が別途必要になりますね。

さてお尋ねの座標変換と距離と方位の計算方法は、
国土交通省国土地理院のホームページ
http://www.gsi.go.jp/
から「測地測量と地殻変動」→「便利なプログラム・データ」→「測量計算」とリンクを辿ると
「距離と方位角の計算」や「平面直角座標への換算」というのがありそこからさらに計算式へのリンクがあって
http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/
に辿りつきます。
ここに緯度・経度から平面直角座標への変換式や2点間の距離と方位の計算式などへのリンクがあります。

でも様々な距離の計算式で高度を考慮した物はまず見かけません。結局必要な精度内で地球表面を平面とみなしても差し支えない短い距離の2点間で勾配が大きいのなら地心直角座標で三次元的に計算するのがいいでしょう。例えば御殿場から富士山五合目までの走行距離が知りたいならGPS受信機から(通常1秒毎に)出力されるデータを記録しておいて適当な時間間隔の位置データ同士で移動距離を算出しそれを積算すればいいと思います。

山の展望と地図のフォーラムの案内ページ http://www.nifty.ne.jp/forum/fyamap/
の「地図の広場」の「距離と方位に関する議論」もおすすめします。
直接リンクは http://www.nifty.ne.jp/forum/fyamap/kyorihoi.htm

参考URL:http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/

お使いのGPS受信機は測量用ではなくごく一般的な低価格の物ですよね?
そうだと一般にC/Aコードと呼ばれる信号のみを使って位置を計算しますから、S/A(意図的な精度劣化)が解除された現在でも場合によっては数十mの誤差が生じる事があります。S/Aがかかっていた頃は百mを越えるのは当たり前でした。
また高度の誤差はその倍以上になります。

ですから一台の受信機である点で測位しその後別の地点に移動して再び測位した場合、確率的には低いですが最悪誤差は倍になります。
通常わずか100m離れた2点であ...続きを読む

QC言語 配列で座標

C言語で二次元の配列a[11][11]を考えたとき、a[1][0]はxy座標の(1,0)を、a[0][5]はxy座標の(0, 5)を表しているという風な考えはあっているのでしょうか?
また、C言語で、xy座標で(0.5, 3.1)などの小数を表そうとしたらどうしたら良いのでしょうか?

Aベストアンサー

もう少し数の小さい例で説明します。
以下のように配列を宣言したとします。

***************
//配列宣言
int a[3][4];
***************

この場合 int型の値を格納できる変数が3×4=12個
作られたと考えることができます。

配列の使い方は以下のようになります。

*********************
//配列の扱い方の例
a[0][0]=1;
a[0][1]=234;
a[0][2]=-123;
a[0][3]=5;

a[1][0]=a[0][2];



*******************
つまり普通のint型の変数とそれぞれが同じ扱い方ができます。
どの様に使うかは様々です。

イメージとしては

  [0][1][2][3]
[0] □ □ □ □
[1] □ □ □ □
[2] □ □ □ □

このようなint型の値が格納できる箱が用意されるような感じです。

ここからは主観ですが
配列で座標を扱うといった概念はあまりないように思います。
たくさんの座標を扱うのであれば便利かもしれません。


少数の座標を表現する方法ですが

****************
//double型で座標を表現
double x = 0.5;
double y = 3.1;
****************

のように扱うといいかもしれません。
構造体を知っているのであれば
それで記述するとまとまって見やすいかもしれません。

もう少し数の小さい例で説明します。
以下のように配列を宣言したとします。

***************
//配列宣言
int a[3][4];
***************

この場合 int型の値を格納できる変数が3×4=12個
作られたと考えることができます。

配列の使い方は以下のようになります。

*********************
//配列の扱い方の例
a[0][0]=1;
a[0][1]=234;
a[0][2]=-123;
a[0][3]=5;

a[1][0]=a[0][2];



*******************
つまり普通のint型の変数とそれぞれが同じ扱い方ができます。
どの...続きを読む

Qfloat型とdouble型の変数の違いを教えてほしいです

float型とdouble型の変数の違いを教えてほしいです
2Dゲームを作っててdoubleの変数を使ってたんですが使ってはだめだと先輩に言われたんです。
理由を聞いたら、先生が「doubleは使わないほうがいい」と言われたらしくてちゃんとした理由がわかりませんでした。
それを知って何をするということではないんですが、気になって調べても出てこなかったので質問させてください。
まだゲーム作りを始めたばっかりでぜんぜん詳しくないですが教えてくれたら助かります。

Aベストアンサー

doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。

ですが、実際には「一概に言えない、処理系依存」です。

以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速にできたり、と様々です。
32bitCPUでは、32bitのfloatの方が扱いやすいでしょうが、64bitCPUでは64bitのdoubleの方が扱いやすいかもしれません。
Cのmath.hで使える標準関数はdouble型のものがほとんどです。三角関数は2Dのゲームでも使う機会が多いのではないでしょうか。sinもcosもdouble型です。内部演算は当然doubleですので、変数にfloatを使ったからと早くはならず、むしろfloat型の変数に入れるときに暗黙の型変換が発生する分遅くなる可能性もあります。

そういった背景を考え検討した結果、floatを使う方がよい、と判断したのならいいのですが、「先生に言われた」では理由になりません。
聞けるのなら、その先生に理由を聞いてください。真意がわからないうちは、鵜呑みしないことです。

doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。

ですが、実際には「一概に言えない、処理系依存」です。

以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報