我已经编写了一个增强现实应用程序,可将对象放置在打印的街道地图上。我知道每个地图的每个角落的GPS坐标,并可以计算相对值,以便将任何物体放置在此地图上。 虽然这与atlas格式很好,但我现在整合了大型折叠地图(p.e. France),在这些地图中,位置的偏差变得不可接受。如何使用PROJ.4将坐标转换为LCC
我在坐标投影方面没有任何经验,所以我找到了proj.4,看起来很完美,并且非常高兴能够找到unity3d集成。 但无论我尝试我得到错误的价值回(可能是我的错,因为我没有一个深刻的理解我在这里做什么)
这是投影的地图所有我的其他地图是从(我已经组建了自己的字符串,它可能包含语法错误,该值是正确的,虽然)
"+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";
我会假定我有一个球形latlon或webmercator这似乎TOBé相当类似项目(在至少结果是)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)矩形的左角。
我得到的价值是遥远的。我不知道我做错了什么,以及如何继续。预先感谢任何提示。
这是一个7年级的地理问题,您可以在其中学习不同类型的投影地图。你知道你有什么类型的地图吗?代码使用的是墨卡托投影地图,而您的地图可能不是墨卡托地图(请参阅wiki https://en.wikipedia.org/wiki/Mercator_projection)。和https://en.wikipedia.org/wiki/List_of_map_projections – jdweng
我一定在七年级生病: - )...如上所述,虽然我的地图是lcc(请参阅第一个投影定义)。我需要转换纬度/经度值,以便我可以在地图上正确放置x/y值。尽管如此,我得到的值是错误的。那么从圆形latlon转换为lcc的方法是错误的吗?我应该试试什么? – kiu