gpt4 book ai didi

r - 根据经度/纬度确定 UTM 区域(要转换)

转载 作者:行者123 更新时间:2023-12-02 02:57:26 25 4
gpt4 key购买 nike

我正在编写一个需要多个纬度/经度点的程序,我将它们在内部转换为 UTM,以便以米为单位进行一些计算。

纬度/经度点本身的范围非常小——大约 200m x 200m。可以信赖它们几乎总是位于单个 UTM 区域内(除非您不走运并且跨越了区域边界)。

但是,纬度/经度所在的区域不受限制。有一天,该计划可能会为澳大利亚的人们运行(哦,即使是一个州也跨越多少个区域,这已经给我带来了多少痛苦......),另一天为墨西哥的人们运行。

我的问题是——有没有办法确定特定的经/纬度位于哪个区域,以便可以将其输入转换库(我目前使用 proj4 以及 R 包 rgdal )。

我的语言是 R,但答案不一定是——也许这只是一个简单的计算,或者也许我可以嵌入一个系统调用到 proj可执行。

干杯。

最佳答案

编辑:对于适用于地球上所有非极地区域的(非R)代码,请参阅herehere .

<小时/>

除非您正在处理来自几个特殊区域的数据 ( Svalbard and parts of Norway ),否则这是一个足够简单的计算,您不妨在 R 中自己完成。这是 Wikipedia's description经度与 UTM 区域编号的关系:

The UTM system divides the surface of Earth between 80°S and 84°N latitude into 60 zones, each 6° of longitude in width. Zone 1 covers longitude 180° to 174° W; zone numbering increases eastward to zone 60 that covers longitude 174 to 180 East.

因此,假设您的数据经度位于 Prime Meridian 以西被编码为从 -180 到 0 度运行,这是上述内容的 R 代码版本:

long2UTM <- function(long) {
(floor((long + 180)/6) %% 60) + 1
}

# Trying it out for San Francisco, clearly in UTM Zone 10
# in the figure in the Wikipedia article linked above
SFlong <- -122.4192
long2UTM(SFlong)
# [1] 10

这个表达式显然可以简化一点,但我认为在这种形式中,其构造背后的逻辑是最清晰的。 %% 60 位位于其中,以防某些经度大于 180 或小于 -180。

关于r - 根据经度/纬度确定 UTM 区域(要转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com