【问题标题】:How to convert Coordinates to LCC using PROJ.4如何使用 PROJ.4 将坐标转换为 LCC
【发布时间】:2018-01-30 21:37:44
【问题描述】:

我编写了一个增强现实应用程序,它将对象放置在打印的街道地图上。我知道每张地图每个角落的 GPS 坐标,并且可以计算出在这张地图上放置任何对象的相对值。 虽然这适用于地图集格式,但我现在正在集成大型折叠地图(例如法国),其中位置偏差变得不可接受。

我在坐标投影方面没有任何经验,所以我发现 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";

我认为我必须从一个看起来与 lcc 非常相似(至少结果是)的球形 latlon 或 webmercator 进行投影

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 +nadgrids=@null +wktext  +no_defs";

拉特隆:

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

所以我初始化投影,然后转换他的位置列表: 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)处。

我得到的价值观相去甚远。我不知道我做错了什么以及如何继续。提前感谢您的任何提示。

【问题讨论】:

  • 这是一个 7 年级的地理问题,您将学习不同类型的投影图。你知道你有什么类型的地图吗?该代码使用墨卡托投影地图,您的地图可能不是墨卡托地图(请参阅 wiki en.wikipedia.org/wiki/Mercator_projection)。还有en.wikipedia.org/wiki/List_of_map_projections
  • 我一定是在七年级时生病了:-)... 如上所述,我的地图是 lcc(参见第一个投影定义)。我需要转换纬度/经度值,以便可以在该地图上使用 x/y 值正确放置它们。到目前为止,我得到的值是错误的。那么从循环 latlon 转换为 lcc 的方法是错误的吗?我应该尝试什么?

标签: c# dictionary coordinates projection proj


【解决方案1】:

墨卡托不是圆形的。您想从使用地图中心作为参考点的圆形圆锥转换。地球的周长为 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 度)的两倍。所以 GPS 刻度对于纬度和经度都是一样的。

所以我认为您唯一需要做的就是将距离乘以比例因子 1.57。

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2016-12-18
    • 1970-01-01
    • 2012-01-28
    • 2015-10-04
    • 2021-05-29
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多