如何解决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 举报,一经查实,本站将立刻删除。