地图坐标之间的转换

在项目中,由于使用了openlayers和openstreetmap,需要处理来自百度、高德的数据,这些数据采用不同的坐标系。WGS84、GCJ02(火星坐标系)和BD09(百度坐标系)之间需要转换以确保在地图上的精确展示。国内通常使用GCJ02,而百度坐标系是在其基础上再次加密。虽然百度提供了到BD09的转换,但未提供反向转换。解决这个问题的关键在于实现不同坐标系间的转换算法。
摘要由CSDN通过智能技术生成

最近的项目中使用openlayers引入openstreetmap,然后项目中部分数据来自百度、高德等开源地图服务。这就出现了问题,坐标系不一样,有1.WGS-84原始坐标系,2.GCJ-02坐标系,3.百度坐标系:bd-09,需要进行转换才能在openstreetmap中精确展示,否则会出现偏移。

1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;
* 但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用;

2.GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创的坐标体系,由WGS-84加密而成,在国内,必须至少使用GCJ-02坐标系,
或者使用在GCJ-02加密后再进行加密的坐标系,如百度坐标系。高德和Google在国内都是使用GCJ-02坐标系,可以说,GCJ-02是国内最广泛使用的坐标系;

3.百度坐标系:bd-09,百度坐标系是在GCJ-02坐标系的基础上再次加密偏移后形成的坐标系,只适用于百度地图。
(目前百度API提供了从其它坐标系转换为百度坐标系的API,但却没有从百度坐标系转为其他坐标系的API)

查找了很多资源之后,坐标转化可以使用以下这个工具类:

package com.zl.common.util;
/**
 * 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;
 * 但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用;

2.GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创的坐标体系,由WGS-84加密而成,在国内,必须至少使用GCJ-02坐标系,
或者使用在GCJ-02加密后再进行加密的坐标系,如百度坐标系。高德和Google在国内都是使用GCJ-02坐标系,可以说,GCJ-02是国内最广泛使用的坐标系;

3.百度坐标系:bd-09,百度坐标系是在GCJ-02坐标系的基础上再次加密偏移后形成的坐标系,只适用于百度地图。
(目前百度API提供了从其它坐标系转换为百度坐标系的API,但却没有从百度坐标系转为其他坐标系的API)

 *
 */
public class GPSUtil {
   
    public static double pi = 3.1415926535897932384626;  
    public static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;  
    public static double a = 6378245.0;  
    public static double ee = 0.00669342162296594323;  

    public static double transformLat(double x, double y) {  
        double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y  
                + 0.2 * Math.
软件介绍: 国土用地报备坐标转换器请使用section导出的txt格式或excel另存为的csv格式文件本程序根据国土资源部拐点报备相关规定进行编写,目前版本只针对一个圈进行转换,后续请加入内圈及外圈进行完善。程序主要功能:1、坐标格式转换:支持txt格式及csv格式的坐标格式文件2、拐点坐标CAD成图:可将拐点坐标转换成CAD图形,分 X,Y 及 Y,X 两种形式3、导出excel格式拐点坐标表(非CASS格式)本程序完全免费,在使用过程中,遇到问题可与作者联系或熟悉人员,反馈问题或获得技术支持使用方法以常用格式进行说明,主要从mapgis、AutoCAD、ArcGIS(苍穹软件)、excel格式进行说明。一、mapgis wl线文件转换步骤:1、连接范围线成一个完全闭合的圈(技巧可以将显示首尾点打开再进行连接)。2、运行section,打开范围线文件(或直接打开mapgis工程文件,将线文件设置为编辑状态),点击1辅助工具-导入导出功能-导出线拐点坐标(TXT),并保存拐点坐标。此处需注意的是,请留意section程序下方状态栏,实际坐标(X与Y调换后)与图面坐标是否一致,如不一致请点击比例尺设置成1000或0,如实际坐标处显示为“请先设置比例尺”,则此时比例尺为0,无需进行设置。3、运行拐点坐标转换程序,点击打开按钮,导入txt文本文件,并设置好相应参数。序号位数参数:如设置成3则格式为J001,如不填或为0时为J1,需注意的是如您点个数超过1000,则此处应至少填4或不填否则程序将提示位数溢出,重新设置再转换即可。4、转换完后可进行CAD成图及导出excel格式拐点坐标表(页面已进行设置可直接打印,别忘了填写项目名称)。二、AutoCAD文件转换步骤:1、另存CAD文件为dxf(2000或R12)文件2、运行mapgis-图形处理-文件转换-输入-装入DXF-将范围线图层保留,其他层可选择不进行转换。3、装入dxf后,点击文件-保存线,以保存范围线,后面步骤同“一mapgis wl线文件转换”三、ArcGIS(苍穹软件)文件转换步骤:同AutoCAD转换,装入文件时选装入SHAPE文件即可。四、excel文件转换步骤:1、保证excel内表格内第二列与第三列为坐标值,第一列及后面列有无数据不影响。同时所有行(含首行)均需包含坐标值或为空行(空行时程序会自动跳过),切不可含文字或其他数据,否则转换时程序会认为此处为0或相应的数值。2、将excel另存为csv格式文件,再进行转换即可! 五、txt文件转换步骤:保证txt内容格式为“任意内容,坐标值,坐标值,,,……”,第一个逗号与第二个逗号后为坐标值即可,第一个数值、第四个及后面数据任何内容均可。此处需注意的是逗号必须为英文半角符!其他需说明的问题一、程序设置有最大边长自检值项,此处设置的目的是防止在转换过程中因不可预见因素导致坐标值出错,进行边长也计算出错,所以设置边长最大值进行检查。(经测试边长一般为50以下,一旦出错均为数位错误,出错时边长将达几万,故此处设置为200,亦可自定义)。二、本程序目前只针对一个圈范围线进行转换,后续将进行完善!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值