# 坐标变换

通过CoordinateTransform可以实现不同坐标系坐标之间的相互转换。

# 其它投影坐标转Web墨卡托投影坐标

1️⃣ 通过投影坐标系名称转换-fromProjectionToMercator

// 北京54投影坐标转Web墨卡托投影坐标
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, 'BEIJING54' );
1
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 );
1
2
3
4
5

3️⃣ 通过EPSG编码转换-fromProjectionToMercator

// 使用EPSG编码转坐标
const mercator = CoordinateTransform.fromProjectionToMercator( 37430558.40625, 4391592, 4525 );
1
2

提示

转换接口的最后一个参数 options 为可选参数,参数类型为ProjectionOptions,包含 zone(带号)和 datumDatumOptions,变换7参数)两个选项。

如果原始投影坐标不包含“带号”则需要设置zone参数,如下所示:

// 手动设置带号
const mercator = CoordinateTransform.fromProjectionToMercator( 430558.40625, 4391592, 'BEIJNG54', { zone: 37 } );
1
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

} );
1
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 );
1
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 );
1
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 );
1
2
3
4
5

2️⃣ 通过EPSG编码转换-fromMercatorToProjection

// 将Web墨卡托投影坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromMercatorToProjection( 12267093.365897719, 4816072.715104974, 4525 );
1
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

} );
1
2
3
4
5
6
7
8
9
10
11
12

# 投影坐标转WGS84经纬度坐标

1️⃣ 通过投影坐标系名称转换-fromProjectionToWGS84

// 北京54投影坐标转WGS84经纬度坐标
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, 'BEIJING54' );
1
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 );
1
2
3
4
5

3️⃣ 通过EPSG编码转换-fromProjectionToWGS84

// 使用EPSG编码转换坐标
const lnglat = CoordinateTransform.fromProjectionToWGS84( 37430558.40625, 4391592, 4525 );
1
2

提示

转换接口的最后一个参数 options 为可选参数,参数类型为ProjectionOptions,包含 zone(带号)和 datumDatumOptions,变换7参数)两个选项。

如果原始投影坐标不包含“带号”则需要设置zone参数,如下所示:

// 手动设置带号
const lnglat = CoordinateTransform.fromProjectionToWGS84( 430558.40625, 4391592, 'BEIJNG54', { zone: 37 } );
1
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

} );
1
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 );
1
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 );
1
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 );
1
2
3
4
5
6

2️⃣ 通过EPSG编码转换-fromWGS84ToProjection

// 将WGS84经纬度坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromWGS84ToProjection( 
110.19764451188975, 39.65557910900383, 4525 );
1
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

} );
1
2
3
4
5
6
7
8
9
10
11
12

# 投影坐标转GCJ02经纬度坐标

1️⃣ 通过投影坐标系名称转换-fromProjectionToGCJ02

// 北京54投影坐标转GCJ02经纬度坐标
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, 'BEIJING54' );
1
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 );
1
2
3
4
5

3️⃣ 通过EPSG编码转换-fromProjectionToGCJ02

// 使用EPSG编码转换坐标
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 37430558.40625, 4391592, 4525 );
1
2

提示

转换接口的最后一个参数 options 为可选参数,参数类型为ProjectionOptions,包含 zone(带号)和 datumDatumOptions,变换7参数)两个选项。

如果原始投影坐标不包含“带号”则需要设置zone参数,如下所示:

// 手动设置带号
const lnglat = CoordinateTransform.fromProjectionToGCJ02( 430558.40625, 4391592, 'BEIJNG54', { zone: 37 } );
1
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

} );
1
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 );
1
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 );
1
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 );
1
2
3
4
5
6

2️⃣ 通过EPSG编码转换-fromGCJ02ToProjection

// 将GCJ02经纬度坐标转到EPSG编码为4525的投影坐标系
const projection = CoordinateTransform.fromGCJ02ToProjection( 
110.19764451188975, 39.65557910900383, 4525 );
1
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

} );
1
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 );
1
2

# GCJ02经纬度坐标转WGS84经纬度坐标

使用fromGCJ02ToWGS84实现GCJ02经纬度坐标转WGS84经纬度坐标坐标。

// GCJ02经纬度坐标转WGS84经纬度坐标
const wgs84 = CoordinateTransform.fromGCJ02ToWGS84( 110.20345733675236, 39.65668117021778 );
1
2
Last Updated: 6/7/2024, 3:20:04 PM