🌺前言
proj4转换坐标一些参数含义
配置投影
javascript
// 定义投影
proj4.defs("EPSG:3857", "+proj=merc +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +h=0 +units=m +no_defs");
proj4.defs("EPSG:4490", "+proj=longlat +ellps=CLD00 +datum=CGCS2000 +no_defs");
proj4.defs("EPSG:4326", "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
// 自定义百度坐标系 BD-09
proj4.defs("EPSG:3856", "+proj=longlat +ellps=GRS80 +datum=CGCS2000 +no_defs");
// 定义 GCJ-02 和 BD-09 之间的转换关系
proj4.defs("EPSG:3855", "+proj=longlat +ellps=GRS80 +datum=CGCS2000 +no_defs");
// 注意:实际上 BD-09 和 GCJ-02 之间的转换需要加密算法,这里仅为示例
进行坐标转换
javascript
function convertBD09ToGCJ02(bd_lon, bd_lat) {
var bd_coords = proj4("EPSG:3856", "EPSG:3855", [bd_lon, bd_lat]);
return bd_coords;
}
// 示例
var bd_lon = 116.404;
var bd_lat = 39.915;
var gcj02_coords = convertBD09ToGCJ02(bd_lon, bd_lat);
console.log(gcj02_coords); // 输出转换后的 GCJ-02 坐标
BD-09 和 GCJ-02 的转换:
实际上,百度地图的 BD-09 坐标系与国测局的 GCJ-02 坐标系之间存在加密算法,上述代码中的转换只是一个简化示例。实际应用中,可能需要使用更复杂的转换算法或者第三方库来实现准确转换。 坐标系定义:在定义坐标系时,需要注意 BD-09 和 GCJ-02 之间的转换并不是简单的数学运算,而是涉及到加密算法。上述代码中的定义只是为了演示,实际应用中需要使用正确的定义和转换逻辑。 基本参数解释 以下是 proj4 中定义投影时常用的一些参数及其含义:
- +proj:指定投影类型。 例如:+proj=merc 表示使用墨卡托投影。 其他常见的投影类型包括:+proj=longlat(地理坐标系)、+proj=utm(通用横轴墨卡托投影)等。
- +ellps:椭球体模型。 例如:+ellps=WGS84 表示使用 WGS84 椭球体模型。 常见的椭球体模型还包括:GRS80、clrk66、bessel 等。
- +datum:大地基准面。 例如:+datum=WGS84 表示使用 WGS84 大地基准面。 常见的大地基准面还包括:NAD83、ED50、PZ90 等。
- +a 和 +b:椭球体的长半轴和短半轴。 例如:+a=6378137 +b=6378137 表示 WGS84 椭球体的长半轴和短半轴长度。 对于标准椭球体,通常不需要显式指定这两个参数,因为它们已经被定义在对应的椭球体模型中。
- +towgs84:相对于 WGS84 的转换参数。 例如:+towgs84=0,0,0,0,0,0,0 表示没有相对于 WGS84 的平移或旋转。 通常用于将一个坐标系转换到 WGS84 坐标系。
- +h:高程参考面。 例如:+h=0 表示高程参考面为海平面。
- +units:单位。 例如:+units=m 表示使用米作为单位。 常见的单位包括:m(米)、km(千米)、deg(度)等。
EPSG:3857:定义 EPSG 3857 投影(Web Mercator)。
-
+proj=merc:使用墨卡托投影。
-
+a=6378137 +b=6378137:椭球体的长半轴和短半轴均为 6378137 米(WGS84 椭球体)。
-
+towgs84=0,0,0,0,0,0,0:相对于 WGS84 的转换参数为零(即本身已经是 WGS84)。
-
+units=m:单位为米。
-
+h=0:高程参考面为海平面。
-
+no_defs:忽略默认的参数定义。
-
+proj=longlat:使用地理坐标系。
-
+ellps=GRS80:使用 GRS80 椭球体模型。
-
+datum=CGCS2000:使用 CGCS2000 大地基准面。 请注意,实际应用中,BD-09 和 GCJ-02 之间的转换需要使用特定的算法或第三方库来实现,因为它们涉及加密算法。上述定义只是为了演示目的,并不能准确转换 BD-09 和 GCJ-02 坐标。
目录
文章最后更新于 2024-10-30 17:37:58
作者:徐徐版权声明:转载请注明文章出处
留言

~~空空如也