# 坐标变换
通过CoordinateTransform可以实现不同坐标系坐标之间的相互转换。
# 其它投影坐标转Web墨卡托投影坐标
1️⃣ 通过投影坐标系名称转换-fromProjectionToMercator。
// 北京54投影坐标转Web墨卡托投影坐标
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, 'BEIJING54' );
2
提示
当前坐标系名称仅支持 "BEIJING54"、"XIAN80"、"CGCS2000" !
2️⃣ 通过投影字符串转换-fromProjectionToMercator。
// 投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs';
// 使用投影字符串转换坐标
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, projStr );
2
3
4
5
3️⃣ 通过EPSG编码转换-fromProjectionToMercator。
// 使用EPSG编码转坐标
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, 4525 );
2
提示
转换接口的最后一个参数 options 为可选参数,参数类型为ProjectionOptions,包含 zone(带号)和 datum (DatumOptions,变换7参数)两个选项。
如果原始投影坐标不包含“带号”则需要设置zone参数,如下所示:
// 手动设置带号
const mercator = CoordinateTransform.fromProjectionToMercator( 430558.40625, 4391592, 'BEIJNG54', { zone: 37 } );
2
如果原始投影坐标系到Web墨卡托投影坐标系存在变换7参数,则可以需要设置datum参数或将变换7参数添加到投影字符串中,如下所示:
// 设置变换7参数
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, 4525, {
deltaX: 100.0,
deltaY: 100.0,
deltaZ: 0.0,
rotateX: 0.0,
rotateY: 0.0,
rotateZ: 0.0,
m: 0.0
} );
2
3
4
5
6
7
8
9
10
11
12
// 包含变换7参数的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +towgs84=100.0,100.0,0.0,0.0,0.0,0.0,0.0 +units=m +no_defs +type=crs';
// 通过投影字符串转换坐标
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, projStr );
2
3
4
5
# Web墨卡托投影坐标转其它投影坐标
1️⃣ 通过投影字符串转换-fromMercatorToProjection。
// 目标投影坐标系的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs';
// 将Web墨卡托投影坐标转换到指定投影字符串的投影坐标系下
const projection = CoordinateTransform.fromMercatorToProjection( 12267093.365897719, 4816072.715104974, projStr );
2
3
4
5
提示
如果Web墨卡托投影坐标系与目标投影坐标系直接存在变换7参数,请将其添加到投影字符串中,如下所示:
// 包含变换7参数的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +towgs84=100.0,100.0,0.0,0.0,0.0,0.0,0.0 +units=m +no_defs +type=crs';
// 将Web墨卡托投影坐标转换到指定投影字符串的投影坐标系下
const projection = CoordinateTransform.fromMercatorToProjection( 12267093.365897719, 4816072.715104974, projStr );
2
3
4
5
2️⃣ 通过EPSG编码转换-fromMercatorToProjection。
// 将Web墨卡托投影坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromMercatorToProjection( 12267093.365897719, 4816072.715104974, 4525 );
2
提示
如果Web墨卡托投影坐标系与目标投影坐标系直接存在变换7参数,可以通过接口最后一个参数 "datum"(DatumOptions,变换7参数)进行设置,如下所示:
// 将Web墨卡托投影坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromMercatorToProjection( 12267093.365897719, 4816072.715104974, 4525, {
deltaX: 100.0,
deltaY: 100.0,
deltaZ: 0.0,
rotateX: 0.0,
rotateY: 0.0,
rotateZ: 0.0,
m: 0.0
} );
2
3
4
5
6
7
8
9
10
11
12
# 投影坐标转WGS84经纬度坐标
1️⃣ 通过投影坐标系名称转换-fromProjectionToWGS84。
// 北京54投影坐标转WGS84经纬度坐标
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, 'BEIJING54' );
2
提示
当前坐标系名称仅支持 "BEIJING54"、"XIAN80"、"CGCS2000" !
2️⃣ 通过投影字符串转换-fromProjectionToWGS84。
// 投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs';
// 使用投影字符串转换坐标
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, projStr );
2
3
4
5
3️⃣ 通过EPSG编码转换-fromProjectionToWGS84。
// 使用EPSG编码转换坐标
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, 4525 );
2
提示
转换接口的最后一个参数 options 为可选参数,参数类型为ProjectionOptions,包含 zone(带号)和 datum (DatumOptions,变换7参数)两个选项。
如果原始投影坐标不包含“带号”则需要设置zone参数,如下所示:
// 手动设置带号
const lnglat = CoordinateTransform.fromProjectionToWGS84( 430558.40625, 4391592, 'BEIJNG54', { zone: 37 } );
2
如果原始投影坐标系到WGS84坐标系存在变换7参数,则可以需要设置datum参数或将变换7参数添加到投影字符串中,如下所示:
// 设置变换7参数
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, 4525, {
deltaX: 100.0,
deltaY: 100.0,
deltaZ: 0.0,
rotateX: 0.0,
rotateY: 0.0,
rotateZ: 0.0,
m: 0.0
} );
2
3
4
5
6
7
8
9
10
11
12
// 包含变换7参数的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +towgs84=100.0,100.0,0.0,0.0,0.0,0.0,0.0 +units=m +no_defs +type=crs';
// 通过投影字符串转换坐标
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, projStr );
2
3
4
5
# WGS84经纬度坐标转投影坐标
1️⃣ 通过投影字符串转换-fromWGS84ToProjection。
// 目标投影坐标系的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs';
// 将WGS84经纬度坐标转换到指定投影字符串的投影坐标系下
const projection = CoordinateTransform.fromWGS84ToProjection(
110.19764451188975, 39.65557910900383, projStr );
2
3
4
5
6
提示
如果WGS84经纬度坐标系与目标投影坐标系直接存在变换7参数,请将其添加到投影字符串中,如下所示:
// 包含变换7参数的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +towgs84=100.0,100.0,0.0,0.0,0.0,0.0,0.0 +units=m +no_defs +type=crs';
// 将WGS84经纬度坐标转换到指定投影字符串的投影坐标系下
const projection = CoordinateTransform.fromWGS84ToProjection(
110.19764451188975, 39.65557910900383, projStr );
2
3
4
5
6
2️⃣ 通过EPSG编码转换-fromWGS84ToProjection。
// 将WGS84经纬度坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromWGS84ToProjection(
110.19764451188975, 39.65557910900383, 4525 );
2
3
提示
如果WGS84经纬度坐标系与目标投影坐标系直接存在变换7参数,可以通过接口最后一个参数 "datum"(DatumOptions,变换7参数)进行设置,如下所示:
// 将WGS84经纬度坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromWGS84ToProjection( 110.19764451188975, 39.65557910900383, 4525, {
deltaX: 100.0,
deltaY: 100.0,
deltaZ: 0.0,
rotateX: 0.0,
rotateY: 0.0,
rotateZ: 0.0,
m: 0.0
} );
2
3
4
5
6
7
8
9
10
11
12
# 投影坐标转GCJ02经纬度坐标
1️⃣ 通过投影坐标系名称转换-fromProjectionToGCJ02。
// 北京54投影坐标转GCJ02经纬度坐标
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, 'BEIJING54' );
2
提示
当前坐标系名称仅支持 "BEIJING54"、"XIAN80"、"CGCS2000" !
2️⃣ 通过投影字符串转换-fromProjectionToGCJ02。
// 投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs';
// 使用投影字符串转换坐标
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, projStr );
2
3
4
5
3️⃣ 通过EPSG编码转换-fromProjectionToGCJ02。
// 使用EPSG编码转换坐标
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, 4525 );
2
提示
转换接口的最后一个参数 options 为可选参数,参数类型为ProjectionOptions,包含 zone(带号)和 datum (DatumOptions,变换7参数)两个选项。
如果原始投影坐标不包含“带号”则需要设置zone参数,如下所示:
// 手动设置带号
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 430558.40625, 4391592, 'BEIJNG54', { zone: 37 } );
2
如果原始投影坐标系到GCJ02坐标系存在变换7参数,则可以需要设置datum参数或将变换7参数添加到投影字符串中,如下所示:
// 设置变换7参数
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, 4525, {
deltaX: 100.0,
deltaY: 100.0,
deltaZ: 0.0,
rotateX: 0.0,
rotateY: 0.0,
rotateZ: 0.0,
m: 0.0
} );
2
3
4
5
6
7
8
9
10
11
12
// 包含变换7参数的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +towgs84=100.0,100.0,0.0,0.0,0.0,0.0,0.0 +units=m +no_defs +type=crs';
// 通过投影字符串转换坐标
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, projStr );
2
3
4
5
# GCJ02经纬度坐标转投影坐标
1️⃣ 通过投影字符串转换-fromGCJ02ToProjection。
// 目标投影坐标系的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +units=m +no_defs +type=crs';
// 将GCJ02经纬度坐标转换到指定投影字符串的投影坐标系下
const projection = CoordinateTransform.fromGCJ02ToProjection(
110.19764451188975, 39.65557910900383, projStr );
2
3
4
5
6
提示
如果GCJ02经纬度坐标系与目标投影坐标系直接存在变换7参数,请将其添加到投影字符串中,如下所示:
// 包含变换7参数的投影字符串
const projStr = '+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0=0 +ellps=GRS80 +towgs84=100.0,100.0,0.0,0.0,0.0,0.0,0.0 +units=m +no_defs +type=crs';
// 将GCJ02经纬度坐标转换到指定投影字符串的投影坐标系下
const projection = CoordinateTransform.fromGCJ02ToProjection(
110.19764451188975, 39.65557910900383, projStr );
2
3
4
5
6
2️⃣ 通过EPSG编码转换-fromGCJ02ToProjection。
// 将GCJ02经纬度坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromGCJ02ToProjection(
110.19764451188975, 39.65557910900383, 4525 );
2
3
提示
如果GCJ02经纬度坐标系与目标投影坐标系直接存在变换7参数,可以通过接口最后一个参数 "datum"(DatumOptions,变换7参数)进行设置,如下所示:
// 将WGS84经纬度坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromGCJ02ToProjection( 110.19764451188975, 39.65557910900383, 4525, {
deltaX: 100.0,
deltaY: 100.0,
deltaZ: 0.0,
rotateX: 0.0,
rotateY: 0.0,
rotateZ: 0.0,
m: 0.0
} );
2
3
4
5
6
7
8
9
10
11
12
# WGS84经纬度坐标转GCJ02经纬度坐标
使用fromWGS84ToProjection实现WGS84经纬度坐标转GCJO2经纬度坐标。
// WGS84经纬度坐标转GCJ02经纬度坐标
const gcj02 = CoordinateTransform.fromWGS84ToProjection( 110.19764451188975, 39.65557910900383 );
2
# GCJ02经纬度坐标转WGS84经纬度坐标
使用fromGCJ02ToWGS84实现GCJ02经纬度坐标转WGS84经纬度坐标坐标。
// GCJ02经纬度坐标转WGS84经纬度坐标
const wgs84 = CoordinateTransform.fromGCJ02ToWGS84( 110.20345733675236, 39.65668117021778 );
2