【问题标题】:Coordinates: convert from WGS84 to a *specific* UTM-region坐标:从 WGS84 转换为*特定* UTM 区域
【发布时间】:2014-07-20 15:01:11
【问题描述】:

有很多免费工具可以将 UTM 转换为纬度/经度。很好,但我需要走另一条路;从 WGS-84 到 lat/long 格式。

但比这更复杂; '因为我需要结果在 UTM-33(北欧)区域。 这听起来可能是个坏主意。当地理点可能位于另一个区域时,我为什么要将该区域“强制”为 33N...

好吧;问题是我已经有一个数据库,其中包含挪威每个地址的 UTM33 坐标。

熟悉UTM@北欧的人都知道挪威横跨多个区域; from 31 to 36。 (好吧,也许我们只从 32 跨越到 36,因为 32V 区域的宽度奇怪,但那是另一个讨论)。

所以,回到我的问题:我的所有地址都已经以 UTM-33 格式给出(超出范围时为负值)。我怎样才能继续让我的纬度/经度进入 UTM-33?

我需要一个 PHP 解决方案,经过大量“gPoint”调试后,我发现它根本行不通......

(gPoint 非常适合从/到 UTM 转换,但它总是会在“正确”区域块中返回 UTM x/y 对。我不希望这样!我需要始终在区域 33 中获得结果,不管什么是实际正确的..)

【问题讨论】:

  • 我不使用PHP,但听起来你需要PROJ4
  • 谢谢,这帮了大忙!我只是包装了几行 Node 代码来测试这个库,它看起来比我之前尝试过的 gPoint 好多了。有关演示,请参阅pastebin.com/1BP8cWpj。现在,我只需要将我的解决方案包装到 PHP 中 :-)
  • 很高兴成功了! (只是希望我有 PHP 知识能够提供更多帮助)

标签: php wgs84 proj4js utm


【解决方案1】:

我终于通过 Proj4 找到了解决方案(thanx SlightlyCuban)!

// Conversion from WGS84 to UTM33
$proj4 = new Proj4php();
$projWGS84 = new Proj4phpProj('EPSG:4326');
$projUTM33N = new Proj4phpProj('EPSG:2078');

$result = $proj4->transform($projWGS84, $projUTM33N, new proj4phpPoint($long, $lat));

不可能猜出正确的转换格式,我苦苦挣扎了一会儿……然后我发现了一个非常方便的网页:http://spatialreference.org。在这里我找到了我需要的定义 (EPSG:2078 = "+proj=utm +zone=33 +ellps=intl +units=m +no_defs")

Proj4 的 PHP 实现需要硬编码定义;您不能通过临时定义传递。 Proj4php 最初缺少 EPSG:2078。耶;我很幸运!

因此,我建议通过 Node.jsproj4js 测试 Proj4(请参阅我在 http://pastebin.com/1BP8cWpj 的小演示)。

为了成功,我必须fork the Proj4PHP-library,并为 EPSG:2078 添加一个定义文件...

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多