2017-08-22 18 views
0

印刷されたストリートマップの上にオブジェクトを配置する拡張現実感アプリケーションを作成しました。私は各マップの各コーナーのGPS座標を知っていて、このマップ上にオブジェクトを配置する相対的な値を計算することができます。 これはアトラス形式ではうまくいきましたが、位置の偏差が許容できなくなった大きな折り畳みマップ(p.e. France)を統合しています。PROJを使用して座標をLCCに変換する方法

私は座標投影で何の経験もないので、完璧と思われ、unity3d統合を見つけることが本当にうれしいproj.4が見つかりました。 私が試したものは何でも間違った値を返しています(ここで私がここでやっていることを深く理解していないのでおそらく私のせいです)

これは私の他の地図がすべてI私が(でTOB eはかなり似ているようだ球状latlonまたはwebmercatorから突出していることを前提とします文字列を自分で組み立てられ、それは構文エラーが含まれている可能性がありましたが、値がが正しい)

"+proj=lcc +lat_1 =49 +lat_2=46 +lat_0=47.5 +lon_0=13.33333333333333 +x_0=400000 +y_0=400000 +ellps = bessel +datum=hermannskogel +towgs84=577.326,90.129,463.919,5.137,1.474,5.297,2.4232 +units=m +no_defs"; 

少なくとも結果は)lcc

Webmercator:

"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [email protected] +wktext +no_defs"; 

Latlon:

"+proj=latlong +a=6370 +b=6370 +towgs84=0,0,0 +no_defs" 

だから私は、突起部を初期化し、その後、transformt位置の彼はリスト: WebMercator.Transform(mainMapProj、xValues、yValues)。

テストデータセットとして私は南フランスのマップのGPS座標を使用しています:

testMap.TopLeft_lat = 46.985; 
    testMap.TopLeft_lon = -3.702; 
    testMap.TopRight_lat = 47.3162; 
    testMap.TopRight_lon = 9.1447; 
    testMap.BottomRight_lat = 42.41; 
    testMap.BottomRight_lon = 9.1667; 
    testMap.BottomLeft_lat = 41.3022; 
    testMap.BottomLeft_lon = -2.291; 

と同様にchereay

cheray.lat = 45.97316; 
cheray.lon = -1.352547; 

Coordinates of the map

の座標しばしば彼ランダム市

正しく投影すると、座標はほぼ矩形(印刷ページ)になり、都市は相対的にローエから約0.1748,0.9044に配置されますr長方形の左隅。

私が得意な値は遠いです。私は何が間違っているのか、どのように続行するのか分かりません。どのようなヒントもありがとうございます。

+0

これは、さまざまな種類の投影マップを学習する第7学年の地理的な質問です。あなたはあなたが持っている地図のタイプを知っていますか?このコードではメルカトルプロジェクションマップを使用していますが、マップはメルカトルマップではない場合があります(wiki https://en.wikipedia.org/wiki/Mercator_projectionを参照)。そして、https://en.wikipedia.org/wiki/List_of_map_projections – jdweng

+0

私は第7学年で病気になっているに違いありません: - )...上記のとおり、私のマップはlccです(最初の投影定義を参照)。緯度/経度値を変換して、そのマップ上にx/y値を正しく配置できるようにする必要があります。私がこれまでに得てきた価値は間違っています。それで循環的なlatlonからlccに間違って変換するアプローチはありますか?代わりに私は何を試すべきですか? – kiu

答えて

0

メルカトルは円形ではありません。参照点として地図の中心を使用して円である円錐から変換する必要があります。地球は、直径25,000マイル、直径8,000マイルです。だから、月から地球を見て、平らな土地を見たら、直径8,000マイルの円が見えます。直径は12,500マイルの半分の円です。したがって、地球の曲率は12,500/8000 = 1.5の比率になります。実際には、これはpi * r/2r = pi/2 = 1.57です。

GPSの経度は-324000000(西)から+324000000(東)、緯度は0(赤道)から+/- 162000000.0(北/南極)になります。最大経度(180度)は最大緯度(90度)の2倍です。 GPSの規模は、緯度と経度の両方で同じです。

だから、あなたがする必要があるのは、スケーリング係数1.57で距離を倍にすることだけです。

関連する問題