【GIS】gis地理坐标系转换WGS84、GCJ-02、BD09、EPSG4326

本文介绍了JavaScript库Gcoord,专为解决不同地图API坐标不统一问题而设计。它支持WGS84、GCJ-02和BD09间的无缝转换,并可在多种环境运行。Gcoord提供易用API和详细的CRS列表,确保地理数据在不同平台上的准确展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【GIS】gis地理坐标系转换WGS84、GCJ-02、BD09、EPSG4326

Gcoord

在这里插入图片描述

gcoord(geographic coordinates)是一个处理地理坐标系的JS库,用来修正百度地图、高德地图及其它互联网地图坐标系不统一的问题。

支持转换坐标数组和GeoJSON数据,能在node环境以及所有现代浏览器(IE8+)中运行,gzip后仅3kb。

更多信息可以阅读地理坐标系

🚨 注意

在发布、展示、传播数据时,请务必遵守相关法律规定

(禁止)未经批准,在测绘活动中擅自采用国际坐标系统
— 中华人民共和国测绘法,40 (1)

导航电子地图在公开出版、销售、传播、展示和使用前,必须进行空间位置技术处理。
— GB 20263―2006《导航电子地图安全处理技术基本要求》,4.1

1. Install

通过npm安装:

npm install gcoord --save

或者直接在页面中引入:

<script src="https://unpkg.com/gcoord/dist/gcoord.js"></script>

2. Import

CommonJS:

const gcoord = require('gcoord');

ES Module:

import gcoord from 'gcoord';

同时也支持AMD和CMD规范

3. Usage

例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则应该将当前坐标从WGS-84坐标系转换为BD-09坐标系

var result = gcoord.transform(
  [116.403988, 39.914266],    // 经纬度坐标
  gcoord.WGS84,               // 当前坐标系
  gcoord.BD09                 // 目标坐标系
);

console.log(result);  // [116.41661560068297, 39.92196580126834]

同时gcoord还可以转换GeoJSON对象的坐标系,详细使用方式可以参考API

4. API

4.1 transform(input, from, to)

进行坐标转换

参数

  • input [GeoJSON][GeoJSON] | [string][string] | [Array][Array]<[number][number]> GeoJSON对象,或GeoJSON字符串,或经纬度数组
  • from CRS 当前坐标系
  • to CRS 目标坐标系

返回值

[GeoJSON][GeoJSON] | [Array][Array]<[number][number]>

示例

// 将GCJ02坐标转换为WGS84坐标
var result = gcoord.transform([123, 45], gcoord.GCJ02, gcoord.WGS84);
console.log(result);  // [122.99395597, 44.99804071]
// 转换GeoJSON坐标
var geojson = {
  "type": "Point",
  "coordinates": [123, 45]
}
gcoord.transform(geojson, gcoord.GCJ02, gcoord.WGS84);
console.log(geojson.coordinates); // [122.99395597, 44.99804071]

返回数组或GeoJSON对象(由输入决定),注意:当输入为GeoJSON时,transform会改变输入对象

4.2 CRS

CRS为坐标系,目标支持以下几种坐标系

CRS坐标格式说明
gcoord.WGS84[lng,lat]WGS-84坐标系,GPS设备获取的经纬度坐标
gcoord.GCJ02[lng,lat]GCJ-02坐标系,google中国地图、soso地图、aliyun地图、mapabc地图和高德地图所用的经纬度坐标
gcoord.BD09[lng,lat]BD-09坐标系,百度地图采用的经纬度坐标
gcoord.BD09LL[lng,lat]同BD09
gcoord.BD09MC[x,y]BD-09米制坐标,百度地图采用的米制坐标,单位:米
gcoord.BD09Meter[x,y]同BD09MC
gcoord.Baidu[lng,lat]百度坐标系,BD-09坐标系别名,同BD-09
gcoord.BMap[lng,lat]百度地图,BD-09坐标系别名,同BD-09
gcoord.AMap[lng,lat]高德地图,同GCJ-02
gcoord.WebMercator[x,y]Web Mercator投影,墨卡托投影,同EPSG3857,单位:米
gcoord.WGS1984[lng,lat]WGS-84坐标系别名,同WGS-84
gcoord.EPSG4326[lng,lat]WGS-84坐标系别名,同WGS-84
gcoord.EPSG3857[x,y]Web Mercator投影,同WebMercator,单位:米
gcoord.EPSG900913[x,y]Web Mercator投影,同WebMercator,单位:米

支持更多坐标系?
gcoord的目标是处理web地图中的坐标,目前支持的坐标系已经能满足绝大部分要求了,同时gcoord也能保持轻量。如果需要更专业的坐标系处理工具,可以使用proj4js等开源库

5. LICENSE

MIT

地理坐标系转换工具

备注咸盐
GCJ02坐标系
项目中要使用openlayers3作为webgis的引擎,坐标系是EPSG:3857,再通过叠加天地图与高德地图作对比时发现,高德地图整体朝右下角偏移几百米.
http://mapclub.cn/archives/3150
https://blog.csdn.net/qq_33382332/article/details/79030628
https://blog.csdn.net/qq_33356563/article/details/86663077
https://segmentfault.com/q/1010000017335331
https://blog.csdn.net/qwe640520/article/details/80133957?utm_term=gcj02%E8%BD%AC%E6%8D%A2%E6%88%90wgs84%E5%9D%90%E6%A0%87%E7%B3%BB&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-2-80133957&spm=3001.4430
我们系统spatialRef: “4326”
let projectionName = ‘EPSG:’ + this.mapConfig.spatialRef;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卸载引擎

如果对您有帮助,请赏个饭吃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值