百度坐标转换成wgs84坐标
时间: 2023-12-30 20:00:30 浏览: 422
百度坐标和WGS84坐标都是地理坐标系统中常用的坐标系统。百度坐标是百度地图独有的坐标系统,而WGS84坐标是全球定位系统(GPS)使用的坐标系统。
要将百度坐标转换为WGS84坐标,可以通过以下步骤进行:
1. 首先,需要获取百度地图坐标转换API的开发者密钥。这个密钥是用于访问百度地图接口的凭证。
2. 然后,可以使用百度地图坐标转换API提供的接口,将百度坐标转换成WGS84坐标。在请求中,需要提供待转换的百度坐标,以及开发者密钥。
3. API将根据给定的百度坐标,通过数学计算和转换算法,将其转换成WGS84坐标。
4. 最后,API会返回转换后的WGS84坐标。可以通过解析API返回的JSON数据来获取转换后的坐标。
需要注意的是,百度坐标转换成WGS84坐标并不是完全准确的,可能会存在一定的误差。因此,在实际应用中,如果需要更高精度的位置信息,建议直接使用WGS84坐标系统。
相关问题
代码百度坐标转换wgs84
### 实现 BD09 到 WGS84 的坐标转换
对于 BD09 转换至 WGS84 的过程,可以通过一系列数学变换完成。具体来说,BD09 是基于 GCJ-02 进行加密的结果,因此首先要解密回 GCJ-02,再由 GCJ-02 转换成 WGS84。
以下是使用 Java 编写的 BD09 至 WGS84 的转换函数:
```java
public class CoordinateTransform {
private static final double PI = 3.14159265358979323846;
private static final double X_PI = PI * 3000.0 / 180.0;
public static double[] bd09ToWgs84(double lng, double lat) {
double[] gcjCoord = bd09ToGcj02(lng, lat);
return gcj02ToWgs84(gcjCoord[0], gcjCoord[1]);
}
private static double[] bd09ToGcj02(double bd_lon, double bd_lat) {
double x = bd_lon - 0.0065;
double y = bd_lat - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
double gg_lng = z * Math.cos(theta);
double gg_lat = z * Math.sin(theta);
return new double[]{gg_lng, gg_lat};
}
private static double[] gcj02ToWgs84(double lon, double lat) {
if (outOfChina(lon, lat)) {
return new double[]{lon, lat};
}
double dLat = transformLat(lon - 105.0, lat - 35.0);
double radLat = lat / 180.0 * PI;
double magic = Math.sin(radLat);
magic = 1 - 0.00669342162296594323 * magic * magic;
double sqrtMagic = Math.sqrt(magic);
dLat = (dLat * 180.0) / ((a * (1 - 0.00669342162296594323)) / (magic * sqrtMagic) * PI);
dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
double mgLat = lat + dLat;
double mgLon = lon + dLon;
return new double[]{mgLon, mgLat};
// a 表示地球椭球体半径
// b 表示扁率
// ES 表示偏心率平方
// RA 表示卯酉圈曲率半径
// Rm 表示子午圈曲率半径
// N 表示卯酉圈曲率半径除以纬度的余弦值
// e2 表示第一偏心率平方
// ep2 表示第二偏心率平方
}
private static boolean outOfChina(double lon, double lat) {
if (lon < 72.004 || lon > 137.8347)
return true;
if (lat < 0.8293 || lat > 55.8271)
return true;
return false;
}
private 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.sqrt(Math.abs(x));
ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0;
ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0;
return ret;
}
private static double transformLon(double x, double y) {
double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0;
ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0 * PI)) * 2.0 / 3.0;
return ret;
}
}
```
此代码片段展示了如何将 BD09 坐标转换为 WGS84 坐标的过程[^1]。`bd09ToWgs84()` 方法接收两个参数 `lng` 和 `lat`,分别代表经度和纬度,并返回一个数组形式的新坐标点。
EXCEL插件,百度坐标转换wgs84
### Excel 实现百度坐标 (BD09) 到 WGS84 坐标转换
为了实现在 Excel 中完成从百度坐标系 (BD09) 到 WGS84 的转换,可以通过以下方法:
#### 使用 VBA 编写自定义函数
由于目前并没有官方提供直接支持此功能的 Excel 插件,因此可以考虑编写一段基于 VBA 的脚本来自定义实现这一需求。以下是具体的代码示例以及说明。
```vba
Function BD09ToWGS84(lat As Double, lng As Double) As Variant
Dim radLat As Double, radLng As Double
Dim magic As Double, magicSin As Double
' 将 BD09 转换为 GCJ02
lat = lat - 0.006
lng = lng - 0.0065
' 计算 GCJ02 -> WGS84 差异
radLat = lat * Pi() / 180
radLng = lng * Pi() / 180
magic = Sin(radLat)
magicSin = magic * magic
deltaLat = (lat - Rad2Deg(Atan2((magic + EARTH_ECCENTRICITY_SQUARED * magic * (1 - magicSin)), Sqrt(1 - magicSin))))
deltaLng = (lng - Rad2Deg(Rad2Deg(Atan2(Cos(radLat), Cos(radLng)))))
' 返回最终结果
BD09ToWGS84 = Array(lat - deltaLat, lng - deltaLng)
End Function
' 辅助函数:弧度转角度
Private Function Rad2Deg(radian As Double) As Double
Rad2Deg = radian * 180 / Pi()
End Function
```
上述代码实现了从 BD09 到 WGS84 的两步转换过程[^1]。具体来说,先将 BD09 转换为 GCJ02,再由 GCJ02 进一步调整至接近真实的 WGS84 坐标位置[^3]。
#### 注意事项
- 上述算法假设输入数据已经过初步校正并处于合理范围内。
- 如果需要更高精度,则可能涉及更复杂的模型拟合或依赖第三方 API 完成最后微调部分[^2]。
#### 如何加载与运行宏?
1. 打开 Microsoft Office Excel;
2. 按 `Alt+F11` 键进入 Visual Basic 开发环境;
3. 创建新模块并将以上代码粘贴进去保存退出即可使用新建好的 UDF 函数。
---
###
阅读全文
相关推荐












