Skip to content

Commit

Permalink
docs: clean up README
Browse files Browse the repository at this point in the history
  • Loading branch information
hujiulong authored Apr 16, 2020
1 parent c62554c commit 80b1b07
Showing 1 changed file with 8 additions and 54 deletions.
62 changes: 8 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,18 @@
# gcoord
# Gcoord

[![npm version](https://img.shields.io/npm/v/gcoord.svg)](https://www.npmjs.com/package/gcoord)
[![codecov](https://codecov.io/gh/hujiulong/gcoord/branch/master/graph/badge.svg)](https://codecov.io/gh/hujiulong/gcoord)
[![gzip size](http://img.badgesize.io/https://unpkg.com/gcoord/dist/gcoord.js?compression=gzip)](https://unpkg.com/gcoord/dist/gcoord.js)
[![LICENSE](https://img.shields.io/npm/l/vue.svg)](https://www.npmjs.com/package/gcoord)
[![996.icu](https://img.shields.io/badge/link-996.icu-red.svg)](https://996.icu)

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

(**gcoord** is a JS library for converting Chinese geographic coordinate encryption. In most cases, only Chinese developers need to use it, so there is no English document. If you need an English document, please open a new issue)
支持转换坐标数组和GeoJSON数据,能在node环境以及所有现代浏览器(IE8+)中运行,gzip后仅3kb。

### Features
* **轻量** - 无外部依赖,gzip后大小仅2kb
* **兼容性强** - 能在node环境以及所有现代浏览器(IE8+)中运行
* **稳定高效** - 100%测试覆盖
* **多坐标系支持** - 支持转换互联网地图中所有常见坐标系,可以任意相互转换
* **多格式支持** - 支持转换坐标数组和GeoJSON
* **支持TypeScript** - 支持TypeScript项目
更多信息可以阅读[地理坐标系](https://github.com/hujiulong/gcoord/wiki/%E5%9C%B0%E7%90%86%E5%9D%90%E6%A0%87%E7%B3%BB)

### 为什么需要转换坐标系?
因为国内对地理坐标有特殊的政策,所有电子地图必须对位置做偏移处理,这导致了从底层接口得到的经纬度坐标展示在地图上会有偏移。这种偏移不是线性的,不能简单地通过加减某个值来校正,并且不同的地图提供商采用的算法也不一样,例如百度地图和高德地图就采用了不同的偏移方式。更详细的信息可以阅读下文的[关于坐标系](#关于坐标系)
> 导航电子地图在公开出版、销售、传播、展示和使用前,必须进行空间位置技术处理。<br> — GB 20263―2006《导航电子地图安全处理技术基本要求》,4.1
## 安装
## Install
通过npm安装:
```bash
npm install gcoord --save
Expand All @@ -31,7 +21,7 @@ npm install gcoord --save
```html
<script src="https://unpkg.com/gcoord/dist/gcoord.js"></script>
```
## 引入
## Import
CommonJS:
```js
const gcoord = require('gcoord');
Expand All @@ -47,8 +37,8 @@ import { transform, WGS84, GCJ02 } from 'gcoord'
同时也支持AMD和CMD规范


## 使用
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则应该将当前坐标从[WGS-84](#wgs-84---世界大地测量系统)坐标系转换为[BD-09](#bd-09---百度坐标系)坐标系
## Usage
例如从手机的GPS得到一个经纬度坐标,需要将其展示在百度地图上,则应该将当前坐标从[WGS-84](https://github.com/hujiulong/gcoord/wiki/%E5%9C%B0%E7%90%86%E5%9D%90%E6%A0%87%E7%B3%BB#wgs-84---%E4%B8%96%E7%95%8C%E5%A4%A7%E5%9C%B0%E6%B5%8B%E9%87%8F%E7%B3%BB%E7%BB%9F)坐标系转换为[BD-09](https://github.com/hujiulong/gcoord/wiki/%E5%9C%B0%E7%90%86%E5%9D%90%E6%A0%87%E7%B3%BB#bd-09---%E7%99%BE%E5%BA%A6%E5%9D%90%E6%A0%87%E7%B3%BB)坐标系
```js
var result = gcoord.transform(
[116.403988, 39.914266], // 经纬度坐标
Expand Down Expand Up @@ -116,42 +106,6 @@ CRS为坐标系,目标支持以下几种坐标系
**支持更多坐标系?**
gcoord的目标是处理web地图中的坐标,目前支持的坐标系已经能满足绝大部分要求了,同时gcoord也能保持轻量。如果需要更专业的坐标系处理工具,可以使用[proj4js](https://github.com/proj4js/proj4js)等开源库

## 关于坐标系
我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能并不是在同一个坐标系下。

* 高德地图、腾讯地图以及谷歌中国区地图使用的是**GCJ-02**坐标系
* 百度地图使用的是**BD-09**坐标系
* 底层接口(HTML5 Geolocation或ios、安卓API)通过GPS设备获取的坐标使用的是**WGS-84**坐标系

不同的坐标系之间可能有几十到几百米的偏移,所以在开发基于地图的产品,或者做地理数据可视化时,我们需要修正不同坐标系之间的偏差。



### WGS-84 - 世界大地测量系统
WGS-84(World Geodetic System, WGS)是使用最广泛的坐标系,也是世界通用的坐标系,GPS设备得到的经纬度就是在WGS84坐标系下的经纬度。通常通过底层接口得到的定位信息都是WGS84坐标系。

### GCJ-02 - 国测局坐标
GCJ-02(G-Guojia国家,C-Cehui测绘,J-Ju局),又被称为火星坐标系,是一种基于WGS-84制定的大地测量系统,由中国国测局制定。此坐标系所采用的混淆算法会在经纬度中加入随机的偏移。

国家规定,**中国大陆所有公开地理数据都需要至少用GCJ-02进行加密**,也就是说我们从国内公司的产品中得到的数据,一定是经过了加密的。绝大部分国内互联网地图提供商都是使用GCJ-02坐标系,包括高德地图,谷歌地图中国区等。

### BD-09 - 百度坐标系
BD-09(Baidu, BD)是百度地图使用的地理坐标系,其在GCJ-02上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是BD-09坐标系。

<p align="center">
<img src="./crs.jpg">
<p align="center">不同坐标系下的点在百度地图上会有偏移</p>
</p>

### 相互转换
GCJ-02和BD-09都是用来对地理数据进行加密的,所以也不会公开逆向转换的方法。理论上,GCJ-02的加密过程是不可逆的,但是可以通过一些方法来逼近接原始坐标,并且这种方式的精度很高。gcoord使用的纠偏方式达到了厘米级的精度,能满足绝大多数情况。

## TODO
- [ ] CLI工具
- [ ] 转换GeoJSON文件

有其他需求请提issue,也欢迎提交PR


## LICENSE
MIT
Expand Down

0 comments on commit 80b1b07

Please sign in to comment.