高德经纬度转普通GPS经纬度

# 官方API: http://lbs.amap.com/api/webservice/guide/api/convert
# 坐标体系说明:http://lbs.amap.com/faq/top/coordinate/3
# GCJ02->WGS84 Java版本:http://www.cnblogs.com/xinghuangroup/p/5787306.html
# 验证坐标转换正确性的地址:http://www.gpsspg.com/maps.htm
# 以下内容为原创,转载请注明出处。

import math
def GCJ2WGS(location):
# location格式如下:locations[1] = "113.923745,22.530824"
    lon = float(location[0:location.find(",")])
    lat = float(location[location.find(",") + 1:len(location)])
    a = 6378245.0 # 克拉索夫斯基椭球参数长半轴a
    ee = 0.00669342162296594323 #克拉索夫斯基椭球参数第一偏心率平方
    PI = 3.14159265358979324 # 圆周率
    # 以下为转换公式
    x = lon - 105.0
    y = lat - 35.0
    # 经度
    dLon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * math.sqrt(abs(x));
    dLon += (20.0 * math.sin(6.0 * x * PI) + 20.0 * math.sin(2.0 * x * PI)) * 2.0 / 3.0;
    dLon += (20.0 * math.sin(x * PI) + 40.0 * math.sin(x / 3.0 * PI)) * 2.0 / 3.0;
    dLon += (150.0 * math.sin(x / 12.0 * PI) + 300.0 * math.sin(x / 30.0 * PI)) * 2.0 / 3.0;
    #纬度
    dLat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * math.sqrt(abs(x));
    dLat += (20.0 * math.sin(6.0 * x * PI) + 20.0 * math.sin(2.0 * x * PI)) * 2.0 / 3.0;
    dLat += (20.0 * math.sin(y * PI) + 40.0 * math.sin(y / 3.0 * PI)) * 2.0 / 3.0;
    dLat += (160.0 * math.sin(y / 12.0 * PI) + 320 * math.sin(y * PI / 30.0)) * 2.0 / 3.0;
    radLat = lat / 180.0 * PI
    magic = math.sin(radLat)
    magic = 1 - ee * magic * magic
    sqrtMagic = math.sqrt(magic)
    dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
    dLon = (dLon * 180.0) / (a / sqrtMagic * math.cos(radLat) * PI);
    wgsLon = lon - dLon
    wgsLat = lat - dLat
    return wgsLon,wgsLat

转载的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 高德地图API提供了一种通过地址来获取经纬度坐标的方法。 首先,你需要申请一个高德地图API的Key。然后,你可以使用如下代码来获取地址对应的经纬度坐标: ``` import requests # 高德地图API的地址解析接口 api_url = "https://restapi.amap.com/v3/geocode/geo" # 你的高德地图API Key key = "你的高德地图API Key" # 要解析的地址 address = "北京市海淀区上地十街10号" # 构造请求参数 params = { "key": key, "address": address } # 发送请求 response = requests.get(api_url, params=params) # 处理响应结果 result = response.json() # 获取经纬度坐标 location = result["geocodes"][0]["location"] # 将经纬度坐标拆分为经度和纬度 lng, lat = location.split(",") print(f"经度:{lng},纬度:{lat}") ``` 上面的代码中,我们使用了Python的`requests`库来发送HTTP请求,然后解析响应结果中的经纬度坐标。 希望这对你有帮助。 ### 回答2: 高德 API 提供了地址 GPS 的功能,以下是一个示例的源码: ```python import requests def address_to_gps(address): url = "https://restapi.amap.com/v3/geocode/geo" params = { "key": "your_api_key", "address": address } response = requests.get(url, params=params) data = response.json() if data["status"] == "1" and int(data["count"]) > 0: location = data["geocodes"][0]["location"] return location else: return None address = "北京市朝阳区朝阳公园" gps = address_to_gps(address) if gps: print("地址", address, "的GPS坐标为:", gps) else: print("地址换失败") ``` 上述代码使用 Python 语言编写,通过调用高德 API 的地址 GPS 接口来实现功能。首先,你需要在代码中填入你自己的 API 密钥(`"your_api_key"`)。然后,通过向接口发送一个 `GET` 请求并传入地址参数,你可以得到一个 JSON 格式的响应数据。在这个 JSON 数据中,你可以提取出地址对应的 GPS 坐标,并返回给调用者。如果地址换失败,则返回 `None`。 在我们的示例中,我们使用了一个示例地址北京市朝阳区朝阳公园。你可以将其替换为任何你想进行地址换的具体地址。如果地址换成功,代码将打印出地址对应的 GPS 坐标;如果失败,代码将打印出“地址换失败”。 这只是一个简单的示例,你可以根据自己的实际需求进行修改和扩展。 ### 回答3: 高德API地址GPS的源码如下: ```python import requests def address_to_gps(address): url = "https://restapi.amap.com/v3/geocode/geo" params = { "address": address, "key": "your_api_key" } response = requests.get(url, params=params) result = response.json() if result["status"] == "1" and result["count"] != "0": location = result["geocodes"][0]["location"] lng, lat = location.split(",") return lng, lat else: return None if __name__ == '__main__': address = "北京市朝阳区阜通东大街6号" result = address_to_gps(address) if result: lng, lat = result print("经度:", lng) print("纬度:", lat) else: print("地址GPS失败") ``` 这段源码使用了Python编程语言,并借助`requests`库进行HTTP请求。首先,构造了请求的URL和参数,其中`address`是要换的地址,`key`是你的高德API密钥(需要先在高德开放平台申请)。然后,发送GET请求获取响应,并将响应结果解析成JSON格式。如果换成功,就从结果中提取出经度和纬度,并以元组的形式返回。如果换失败,则返回None。最后,在`if __name__ == '__main__':`中调用该函数,传入地址参数,并输出换结果。 请注意,这里的`your_api_key`需要替换为你自己的高德API密钥。另外,为了避免高德API的调用限制,请合理使用该代码,并确保遵守相关的使用规定和限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值