坐标:从WGS84转换为*特定* UTM区域

时间:2014-05-30 18:54:11

标签: php wgs84 proj4js utm

有很多免费工具可以从UTM转换为Lat / Long。很好,但我需要走另一条路;从WGS-84到lat / long-format。

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

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

那些熟悉UTM @ Northern Europe的人都知道挪威跨越几个区域; from 31 to 36。 (好吧,也许我们只跨越32到36,导致32V区域的奇怪宽度,但这是另一个讨论)。

所以,回到我的问题:我的所有地址都已经以UTM-33格式提供(超出范围时为负值)。如何让我的Lat / Long进入UTM-33?

我需要一个PHP解决方案,经过大量的“gPoint”调试后,我发现它不会起作用......

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

1 个答案:

答案 0 :(得分: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实现需要硬编码定义;你无法通过ad-hoc定义。 EPSG:2078最初是从Proj4php中丢失的。好极了;幸运的我!

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

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