印刷されたストリートマップの上にオブジェクトを配置する拡張現実感アプリケーションを作成しました。私は各マップの各コーナーの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;
の座標しばしば彼ランダム市
正しく投影すると、座標はほぼ矩形(印刷ページ)になり、都市は相対的にローエから約0.1748,0.9044に配置されますr長方形の左隅。
私が得意な値は遠いです。私は何が間違っているのか、どのように続行するのか分かりません。どのようなヒントもありがとうございます。
これは、さまざまな種類の投影マップを学習する第7学年の地理的な質問です。あなたはあなたが持っている地図のタイプを知っていますか?このコードではメルカトルプロジェクションマップを使用していますが、マップはメルカトルマップではない場合があります(wiki https://en.wikipedia.org/wiki/Mercator_projectionを参照)。そして、https://en.wikipedia.org/wiki/List_of_map_projections – jdweng
私は第7学年で病気になっているに違いありません: - )...上記のとおり、私のマップはlccです(最初の投影定義を参照)。緯度/経度値を変換して、そのマップ上にx/y値を正しく配置できるようにする必要があります。私がこれまでに得てきた価値は間違っています。それで循環的なlatlonからlccに間違って変換するアプローチはありますか?代わりに私は何を試すべきですか? – kiu