`

coordtransform 坐标转换

 
阅读更多

一个提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具模块另外还提供了python版本的代码https://github.com/wandergis/coordTransform_py


支持node、浏览器(AMD方式和直接引用方式)

为什么写这个模块

随着移动互联网的兴起,几乎每一个app都会去收集用户位置,如果恰好你在处理与地理定位相关的代码,并且不了解地理坐标系的话,肯定要被我大天朝各种坐标系搞晕。写这个模块的目的也是因为项目中app获取的坐标是百度sdk获取的,在做webgis可视化的时候各种偏,各种坐标不对,当时的心情就是下面这个图片。

image

当前互联网地图的坐标系现状

地球坐标 (WGS84)

  • 国际标准,从 GPS 设备中取出的数据的坐标系
  • 国际地图提供商使用的坐标系

火星坐标 (GCJ-02)也叫国测局坐标系

  • 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系
  • 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。

百度坐标 (BD-09)

  • 百度标准,百度 SDK,百度地图,Geocoding 使用
  • (本来就乱了,百度又在火星坐标上来个二次加密)

开发过程需要注意的事

  • 从设备获取经纬度(GPS)坐标

        如果使用的是百度sdk那么可以获得百度坐标(bd09)或者火星坐标(GCJ02),默认是bd09
        如果使用的是ios的原生定位库,那么获得的坐标是WGS84
        如果使用的是高德sdk,那么获取的坐标是GCJ02
    
  • 互联网在线地图使用的坐标系

    火星坐标系:
            iOS 地图(其实是高德)
            Google 地图
            搜搜、阿里云、高德地图
    百度坐标系:
            当然只有百度地图
    WGS84坐标系:
            国际标准,谷歌国外地图、osm地图等国外的地图一般都是这个
    

    举个栗子

    笔者所在的公司app使用的是百度的sdk,需要对定位坐标做web可视化效果,百度地图提供的js api满足不了需求,选用leaflet来做可视化,这里要说到百度地图了,它使用的坐标系和切图的原点都不一致,并且其加偏还是非线性的,因此无法利用常用的加载方法去加载,放弃使用它的底图,选用了符合标准的高德底图,高德底图使用的是国测局坐标也就是GCJ02坐标系,如果简单的将app获取的经纬度叠加上去,就有可能你本来在百度大厦的位置就显示在西二旗地铁站了甚至更远,因此需要将bd09转成gcj02坐标系,这个时候这个库就有了用武之地,对点批量转换再加载到底图上,就可以让点显示在本应该出现的位置。

    另外如果你拿到了一些WGS84的坐标,想加载到各种底图上就可以根据这个库在底图坐标系和你的数据坐标系之间进行转换。希望对大家有用吧。


安装(install)

npm install coordtransform

示例用法(Example&Usage)

1 NodeJs用法

//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
var coordtransform=require('coordtransform');
//百度经纬度坐标转国测局坐标
var bd09togcj02=coordtransform.bd09togcj02(116.404, 39.915);
//国测局坐标转百度经纬度坐标
var gcj02tobd09=coordtransform.gcj02tobd09(116.404, 39.915);
//wgs84转国测局坐标
var wgs84togcj02=coordtransform.wgs84togcj02(116.404, 39.915);
//国测局坐标转wgs84坐标
var gcj02towgs84=coordtransform.gcj02towgs84(116.404, 39.915);
console.log(bd09togcj02);
console.log(gcj02tobd09);
console.log(wgs84togcj02);
console.log(gcj02towgs84);
//result
//bd09togcj02:   [ 116.39762729119315, 39.90865673957631 ]
//gcj02tobd09:   [ 116.41036949371029, 39.92133699351021 ]
//wgs84togcj02:  [ 116.41024449916938, 39.91640428150164 ]
//gcj02towgs84:  [ 116.39775550083061, 39.91359571849836 ]

2 浏览器用法 直接引用目录内的index.js,会有一个coordtransform的全局对象暴露出来,也支持用AMD加载器加载

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>coordTransform</title>
</head>
<body>
<h1>请按F12打开控制台查看结果</h1>
<script src="index.js"></script>
<script>
    //国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
    //百度经纬度坐标转国测局坐标
    var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);
    //国测局坐标转百度经纬度坐标
    var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);
    //wgs84转国测局坐标
    var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);
    //国测局坐标转wgs84坐标
    var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);
    console.log(bd09togcj02);
    console.log(gcj02tobd09);
    console.log(wgs84togcj02);
    console.log(gcj02towgs84);
    //result
    //bd09togcj02:   [ 116.39762729119315, 39.90865673957631 ]
    //gcj02tobd09:   [ 116.41036949371029, 39.92133699351021 ]
    //wgs84togcj02:  [ 116.41024449916938, 39.91640428150164 ]
    //gcj02towgs84:  [ 116.39775550083061, 39.91359571849836 ]
</script>
</body>
</html>

todos

  • 墨卡托坐标
  • geojson转换
  • 批量转换
  • turf插件
  • leaflet插件

sometipes

对于做GIS的人来说,底图对我们还是很重要的,有时候看国外的底图很好看,换上之后发现坐标位置全部不对,因此写了这个包帮助大家完成坐标的转换,也准备写成一个leaflet的扩展,方便大家的使用,喜欢的童鞋请star,O(∩_∩)O

分享到:
评论

相关推荐

    coordtransform:提供了百度坐标(BD09),国测局坐标(火星坐标,GCJ02),和WGS84坐标系之间的转换

    coordtransform坐标转换 一个提供了百度坐标(BD09),国测局坐标(火星坐标,GCJ02),和WGS84坐标系之间的转换的工具模块。 python版本: : 命令行版本(支持模块或在命令行直接转换geojson数据): : go语言...

    Go-坐标转换工具提供WGS84GCJ02百度坐标系的相互转换

    压缩包中的`coordtransform-master`很可能是这个坐标转换工具的源代码仓库。在这个项目中,你可以找到具体的Go代码实现,包括上述的坐标转换函数。通过阅读源码,可以学习到如何在Go中处理地理坐标,理解转换算法的...

    Python-基于PostgreSQLPostGIS的坐标转换函数

    为了将点、线或面从WGS84转换到GCJ02,你需要先将WGS84坐标转换为EPSG 4326的WKT,然后调用`coord_transform`函数。同样,从GCJ02到WGS84也遵循相同的过程。 例如,将一个WGS84坐标点(116.404, 39.915)转换为GCJ02...

    坐标转换模块、方法和测试数据

    首先,`coordTransform_utils.py`是坐标转换的工具模块。在GIS编程中,这类模块通常包含了一系列辅助函数,用于处理各种坐标系之间的转换。可能包括WGS84(世界大地坐标系)、UTM(通用横轴墨卡托坐标系)、GCJ-02...

    坐标转换的python脚本

    在IT行业中,坐标转换是一项常见的任务,特别是在地理信息系统(GIS)和导航系统中。Python作为一门强大且易用的编程语言,提供了丰富的库来处理这类问题。本篇将详细讲解如何利用Python进行百度地图坐标系、火星...

    各种坐标系的转换工具

    最后,"wandergis-coordtransform-56d977b"看起来像是一个软件库或代码包,其中可能封装了具体的坐标转换算法,用户可以通过导入和调用来实现坐标转换功能。 对于开发者来说,理解这些坐标系的差异和转换过程是非常...

    coordtransform-master.zip

    这个"coordtransform-master.zip"文件提供了一个JavaScript实现的坐标转换程序,能够处理WGS84、火星坐标系(GCJ-02)以及百度坐标系(BD-09)之间的相互转换。下面将详细阐述这三个坐标系以及它们之间的转换方法。 ...

    百度坐标、高得坐标、WGS84坐标转换 js java C#

    在压缩包中的`CoordTransform.cs`、`CoordTransform.java`和`coordtransform.js`文件,分别提供了C#、Java和JavaScript语言实现的坐标转换函数。它们通常包含以下几个关键步骤: - **偏移解密函数**:解密百度坐标...

    浏览器js坐标转换

    在计算机科学领域,尤其是地理信息系统(GIS)中,坐标转换是一项关键操作。本文将深入探讨“浏览器js坐标转换”这一主题,以及与之相关的百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)和WGS84坐标系之间的转换...

    coordTransform_py-master.zip

    这个名为"coordTransform_py-master.zip"的压缩包文件提供了一个用Python编写的坐标转换工具,能够帮助用户将不同坐标系之间的坐标进行精准转换。下面将详细阐述相关知识点。 1. **Python编程语言**:Python是一种...

    java坐标转换工具类.docx

    根据提供的文档信息,本文将详细解析“java坐标转换工具类”中的关键知识点,特别是与WGS84坐标系、火星坐标(GCJ-02)以及百度坐标(BD-09)之间的转换方法。 ### 一、WGS84坐标系简介 WGS84坐标系(World ...

    百度、搞得、WGS84坐标转换 js java

    在JavaScript(coordtransform.js)中进行坐标转换,通常需要找到已有的转换函数库。这些库包含了从WGS84到百度或高德,以及反向转换的算法。转换的核心通常是通过一定的数学公式来实现坐标点的平移和旋转。例如,BD...

    百度坐标火星坐标WGS84坐标互相转换.zip

    本压缩包“百度坐标火星坐标WGS84坐标互相转换.zip”提供了一个JavaScript实现的坐标转换工具——coordtransform.js,它可以帮助我们解决百度坐标(BD-09)与火星坐标(GCJ-02)以及国际标准的WGS84坐标之间的转换...

    coordTransform.zip

    在IT行业中,地理坐标转换是一项常见的任务,尤其在GIS(地理信息系统)应用中。本项目“coordTransform.zip”提供了一个Python3解决方案,用于处理不同坐标系之间的转换,包括从Excel文件读取地理坐标,以及将转换...

    高德地图 js 搜索获取坐标转换地图添加标记

    高德地图API是一个强大的工具,可以帮助开发者在网页上实现地图展示、位置搜索、坐标转换等功能。本篇将详细探讨"高德地图js搜索获取坐标转换地图添加标记"的相关知识点。 首先,我们要了解高德地图API的核心功能。...

    百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换纠偏的JS实现

    主要实现百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换纠偏的JS实现

    coordtransform_angular.zip

    `coordtransform_angular.zip`这个压缩包文件显然包含了一个与坐标转换相关的Angular项目,可能是为了在Web应用中处理不同坐标系统的转换问题。接下来,我们将深入探讨相关知识点。 首先,让我们了解几个基本的坐标...

    CoordTransform_反射变换的库_

    2. **坐标转换函数**:库可能包含一个或多个函数,用于接受原始坐标并返回它们的反射坐标。 3. **批处理处理**:对于一组坐标,库可能支持一次性处理所有反射变换。 4. **兼容性**:可能与各种编程语言接口良好,如...

    一个提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具模块。

    在IT行业中,地理信息系统(GIS)是一个重要的领域,其中坐标转换是不可或缺的一部分。这个工具模块专注于处理中国特有的坐标系统,包括百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)以及国际通用的WGS84坐标系...

    Python-用于百度坐标系谷歌高德坐标系WGS84坐标系之间的相互转换

    在实际项目中,你可以找到已经实现这些算法的Python库,例如`coordtransform`,它提供了方便的接口来完成这些坐标转换。 了解这些转换方法后,开发者可以轻松地在不同坐标系之间进行数据交换,比如从百度地图获取的...

Global site tag (gtag.js) - Google Analytics