微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Proj4js - 将 WGS84 转换为 UTM军事网格参考系统

如何解决Proj4js - 将 WGS84 转换为 UTM军事网格参考系统

对 proj4js 库和大多数地理空间相关的东西来说非常新,所以让我了解所有命名约定和不同类型的坐标系。

本质上,我试图从多边形中获取一组 wgs84 Lat-Long 坐标并将它们转换为 UTM,以便获得 military grid reference system 中的相应区域。

我试过了

const corrdinates = [ [ [ -1.5321158470515384,52.34135509678963 ],[ 0.0777579252987236,52.310366914514184 ],[ 0.01125412258311688,51.324523354307196 ],[ -1.5638793748853044,51.354439389788006 ],[ -1.5321158470515384,52.34135509678963 ] ] ]

function latLngToMgrsUtmZones(coords) {
  try {
    coords[0] = coords[0].map((p) =>
      proj4(
        "wgs84",`utm`,p
      )
    );
    console.log('coords',coords);
  } catch (err) {
    console.log(err);
  }
}

latLngToMgrsUtmZones(coordinates);

但这只会返回 utm。我以为只需要将投影名称传递给 proj4js,它就会转换它。

如何使用这个库来做到这一点?

解决方法

根据您的坐标列表,UTM 区域为 31。该 UTM 区域的 proj4 定义字符串为:-

"+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs"

您可以按如下方式定义新的“proj4”定义:-

// add a definition of a UTM zone
proj4.defs("EPSG:32631","+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs");

那么,麻烦的函数可以更新为:

function latLngToMgrsUtmZones(coords) {
  try {
    coords[0] = coords[0].map((p) =>
      proj4(
        "WGS84","EPSG:32631",p
      )
    );
    console.log('coords',coords);
  } catch (err) {
    console.log("ERR: "+err);
  }
}

如果你跑

latLngToMgrsUtmZones(coordinates);

你会得到:-

coords:  [
  [
    [ 191321.4903300695,5808679.516222329 ],[ 300798.59040295583,5799580.45321534 ],[ 291767.8812803207,5690155.850511101 ],[ 182274.43537953158,5699133.648491979 ],[ 191321.4903300695,5808679.516222329 ]
  ]
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。