我正在为javascript编写一个坐标转换库(用于NodeJS和浏览器javascript)。我已经做了很多事。 Check it out如果你有兴趣的话。我没有编写大部分代码,所以我不确定一切是如何工作的。
据我所知,MGRS / USNG区域基本上是重命名的UTM区域,而这些区域又以纬度/经度来定义。
假设我有一个MGRS坐标,我移动了一个位移。我是否可以准确地确定是否在没有先转换为纬度/经度的情况下越过区域边界?我知道如何在区域内移动时更新坐标,因为大多数内容都是区域内的正方形。
有没有办法检测区域更改而无需转换为lat / long?
是否有任何语言的图书馆可以执行此操作?
现有代码需要纬度和经度,所以我想我可以转换为lat / long,应用转换,然后转换回MGRS。如果我只想确定我所在的区域,那就不会那么糟糕,那么我可以将其余的转换内容保留在MGRS中以保持精度。唯一的问题是,我希望尽可能精确。
注意:
我确实找到this article来解释坐标转换,但这并不能真正涵盖坐标转换。
答案 0 :(得分:2)
openmap Java library可能会有所帮助(您可以将代码调整为JavaScript)。他们将MGRS转换为Lat / Lon等。至于检测区域更改,您可以尝试将此问题发布到GIS Stack Exchange site。我相信有人会有答案。
MGRS具有网格参考编号,而非lat / lngs。见here。因此,您似乎不需要转换为lat / lng来确定您越过了网格。
答案 1 :(得分:1)
根据我的发现,不可能在MGRS和Lat / Long之间直接转换。
MGRS(或USNG)使用与UTM相同的区域定义,UTM由纬度/经度坐标定义。 UTM和MGRS(USNG)使世界基本平坦,使用软糖因子来保持精确度(在一米左右)。由于这些网格被视为平坦的,因此它们对于确定区域边界并不可靠,区域边界是根据大圆圈定义的。
MGRS和UTM之间的转换很容易(并且非常无损),UTM和lat / long之间的转换非常准确,尽管不是100%精确。
根据我的阅读,准确翻译MGRS坐标的最佳方法是首先将其转换为纬度/经度,应用平移,然后转换回来。这对于检测区域变化很有用,但是可以通过使用来自纬度/经度转换的区域并在MGRS坐标中应用其余的平移来找到更准确的目标点。这应该可以检测到中间区域的变化。
参考文献/资源: