mud*_*ock 4 javascript proj4js
我正在尝试使用 Proj4js 执行一些坐标转换,但关于如何使用它的信息很少。
我想要做的是将纬度和经度转换为 UTM 坐标,但我不知道该区域是什么。这应该很容易,因为经度决定了区域,并且如果您知道默认情况下会出现该区域。
我尝试在 Proj4js 中执行此操作,但收到错误消息
“未捕获的类型错误:未定义不是函数”
我的代码是这样的:
proj4Arr = [-105.2098, 39.7458];
var source = ('+proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs');
var dest = ("+proj=utm +ellps=GRS80 +datum=nad83 +units=m +no_defs");
console.log(proj4(source, dest, proj4Arr));
Run Code Online (Sandbox Code Playgroud)
我只是不知道在不包含区域的情况下是否可以做到这一点。我可以先计算区域,然后根据需要将其放入字符串中,但我试图保持简单。
如果有人知道任何好的纯 js 资源示例(不一定使用 OpenLayers 3),我也将不胜感激。
谢谢!
今年是 2021 年,可以发布一个可运行的代码,它不仅可以回答问题,还可以演示导致坐标转换结果的所有步骤。
function utmzone_from_lon(lon_deg) {
//get utm-zone from longitude degrees
return parseInt(((lon_deg+180)/6)%60)+1;
}
function proj4_setdef(lon_deg) {
//get UTM projection definition from longitude
const utm_zone = utmzone_from_lon(lon_deg);
const zdef = `+proj=utm +zone=${utm_zone} +datum=WGS84 +units=m +no_defs`;
return zdef;
}
// computation test
let lon_input = 95.99;
let lat_input = 15.15;
console.log("Input (long,lat):", lon_input, lat_input);
const azone = utmzone_from_lon(lon_input);
console.log(`UTM zone from longitude: ${azone}`);
console.log("AUTO projection definition:", proj4_setdef(lon_input));
// define proj4_defs for easy uses
// "EPSG:4326" for long/lat degrees, no projection
// "EPSG:AUTO" for UTM 'auto zone' projection
proj4.defs([
[
"EPSG:4326",
"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"
],
["EPSG:AUTO", proj4_setdef(lon_input)]]);
// usage:
// conversion from (long/lat) to UTM (E/N)
const en_m = proj4("EPSG:4326", "EPSG:AUTO", [lon_input, lat_input]);
const e4digits = en_m[0].toFixed(4); //easting
const n4digits = en_m[1].toFixed(4); //northing
console.log(`Zone ${azone}, (E,N) m: ${e4digits}, ${n4digits}`);
// inversion from (E,N) to (long,lat)
const lonlat_chk = proj4("EPSG:AUTO", "EPSG:4326", en_m);
console.log("Inverse check:", lonlat_chk);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.6.2/proj4.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8320 次 |
| 最近记录: |