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

Php 坐标:从WGS84转换为*特定*UTM区域,php,wgs84,proj4js,utm,Php,Wgs84,Proj4js,Utm,有很多免费工具可以将UTM转换为Lat/Long。很好,但我需要走另一条路;从WGS-84到lat/long格式 但比这更复杂;'因为我需要的结果是在UTM-33(北欧)区。 这听起来可能是个坏主意;当地理点可能位于另一个区域时,我为什么要将该区域“强制”为33N 嗯,;问题是我已经有了一个数据库,上面有挪威每个地址的UTM33坐标 熟悉UTM@Northern Europe的人都知道挪威跨越多个地区。 (好吧,也许我们只跨越32到36,这是32V区奇怪宽度的原因,但这是另一个讨论) 所以,回到

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

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

嗯,;问题是我已经有了一个数据库,上面有挪威每个地址的UTM33坐标

熟悉UTM@Northern Europe的人都知道挪威跨越多个地区。 (好吧,也许我们只跨越32到36,这是32V区奇怪宽度的原因,但这是另一个讨论)

所以,回到我的问题:我的所有地址都已经以UTM-33格式给出(超出范围时带有负值)。我怎样才能进入UTM-33呢

我需要一个PHP解决方案,在使用“gPoint”进行了大量调试之后,我发现它根本不起作用


(gPoint很适合从UTM转换到UTM,但它将始终返回“正确”区域块中的UTM x/y对。我不希望这样!我需要始终在区域33中获得结果,无论实际正确与否。

我终于找到了一个解决方案,尽管Proj4(thanx)

要猜出转换的正确格式是不可能的,我挣扎了一段时间。。。然后我发现了一个非常方便的网页:。在这里我找到了我需要的定义(
EPSG:2078=“+proj=utm+zone=33+ellps=intl+units=m+no_defs”

Proj4的PHP实现需要硬编码定义;您不能通过临时定义传递。EPSG:2078最初在ProJ4HP中丢失。耶;我真幸运

因此,我建议通过
Node.js
proj4js
测试Proj4(请参阅我的小演示)


为了成功,我不得不添加一个EPSG:2078的定义文件…

我不使用PHP,但听起来你需要Thanx,这帮了大忙!我只是包装了几行节点代码来测试库,它看起来比我以前尝试的gPoint好多了。有关演示,请参见。现在,我只需要将我的解决方案包装成PHP:-)很高兴它成功了!(真希望我有PHP的专门知识能提供更多帮助)
// 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));