昆明行业网站建设,成都网页制作公司排名,网站有几类,工程建设流程百度地图和高德地图的侧重点不太一样。同样一个地名#xff0c;在百度地图网站上搜索到的地点可能是商业网点#xff0c;在高德地图网站上搜索到的地点可能是自然行政地点。 高德地图api 
在高德地图中#xff0c;搜索地名#xff0c;如“乱石头川”#xff0c;该地名会出…百度地图和高德地图的侧重点不太一样。同样一个地名在百度地图网站上搜索到的地点可能是商业网点在高德地图网站上搜索到的地点可能是自然行政地点。 高德地图api 
在高德地图中搜索地名如“乱石头川”该地名会出现这样的链接 
https://ditu.amap.com/place/B0FFGXCDLJ 
这个高德地图连接中最后的“B0FFGXCDLJ”是什么意思如何转化为经纬度坐标 
在高德地图的链接中B0FFGXCDLJ 是一个 地点的唯一标识符POI ID用于标识地图上的某个特定地点。它并不是直接的经纬度信息而是高德地图内部用于定位和检索地点的编码。 如何将 POI ID 转换为经纬度坐标 
要将 POI ID 转换为经纬度坐标可以通过高德地图的 API 来实现。高德地图提供了丰富的API接口其中 地理编码API 和 逆地理编码API 可以用于查询地点的详细信息包括经纬度。 
以下是一个使用 Python 和高德地图API将 POI ID 转换为经纬度坐标的示例代码 
import requests# 高德地图API的Key需要在高德地图开放平台申请
AMAP_API_KEY  你的API_KEY# POI ID
poi_id  B0FFGXCDLJ# 高德地图的POI详情查询API
url  fhttps://www.amap.com/detail/get/{poi_id}# 发起请求
response  requests.get(url, params{key: AMAP_API_KEY})
data  response.json()# 解析经纬度信息
if data.get(status)  1 and data.get(info)  OK:location  data[data][spec][location]longitude, latitude  map(float, location.split(,))print(f提取的经纬度信息经度  {longitude}, 纬度  {latitude})
else:print(无法获取经纬度信息请检查POI ID或API Key是否正确。) 代码说明 API Key需要在高德地图开放平台https://lbs.amap.com/注册账号并申请一个API Key。 API 请求通过 https://www.amap.com/detail/get/{poi_id} 接口查询POI的详细信息。 解析数据从返回的JSON数据中提取经纬度信息。location 字段通常包含经纬度格式为“经度,纬度”。 在高德开放平台中有如下功能。 坐标拾取器 | 高德地图API  示例运行 假设你已经申请了API Key并将其替换到代码中的 AMAP_API_KEY运行代码后输出结果可能如下 提取的经纬度信息经度  116.397428, 纬度  39.90923 注意事项 API Key 限制高德地图API Key有调用次数限制免费额度通常足够个人使用但大量请求可能需要付费。 数据准确性返回的经纬度信息是高德地图数据库中的数据可能与实际位置有细微偏差。 错误处理在实际使用中建议添加更详细的错误处理逻辑以应对网络请求失败、API Key无效等情况。 
在拾取经纬点的时候要选择合适的城市防止异地重名。如下所示 高德地图的坐标系是基于GCJ-02火星坐标系而WGS-84是国际上常用的地理坐标系。将高德地图的坐标转换为WGS-84坐标需要进行坐标转换。以下是一个简单的Python代码示例使用了pyproj库来完成坐标转换。 坐标系的差异高德地图的坐标系GCJ-02和WGS-84坐标系存在一定的偏差。简单的投影转换可能无法完全消除这种偏差尤其是在高精度要求的场景中。 更精确的转换如果需要更精确的转换可以考虑使用专门的算法如高斯投影反算或调用高德地图提供的API进行转换。 
代码如下 
import math
# 定义常量
PI  math.pi
A  6378245.0
EE  0.00669342162296594323
X_PI  PI * 3000.0 / 180.0def transformlat(lng, lat):ret  -100.0  2.0 * lng  3.0 * lat  0.2 * lat * lat  0.1 * lng * lat  0.2 * math.sqrt(math.fabs(lng))ret  (20.0 * math.sin(6.0 * lng * PI)  20.0 * math.sin(2.0 * lng * PI)) * 2.0 / 3.0ret  (20.0 * math.sin(lat * PI)  40.0 * math.sin(lat / 3.0 * PI)) * 2.0 / 3.0ret  (160.0 * math.sin(lat / 12.0 * PI)  320 * math.sin(lat * PI / 30.0)) * 2.0 / 3.0return retdef transformlng(lng, lat):ret  300.0  lng  2.0 * lat  0.1 * lng * lng  0.1 * lng * lat  0.1 * math.sqrt(math.fabs(lng))ret  (20.0 * math.sin(6.0 * lng * PI)  20.0 * math.sin(2.0 * lng * PI)) * 2.0 / 3.0ret  (20.0 * math.sin(lng * PI)  40.0 * math.sin(lng / 3.0 * PI)) * 2.0 / 3.0ret  (150.0 * math.sin(lng / 12.0 * PI)  300.0 * math.sin(lng / 30.0 * PI)) * 2.0 / 3.0return retdef out_of_china(lng, lat):return not (73.66  lng  135.05 and 3.86  lat  53.55)def gcj02_to_wgs84(gcj_lng, gcj_lat):if out_of_china(gcj_lng, gcj_lat):return gcj_lng, gcj_lat  # 不在中国范围内直接返回原坐标dlat  transformlat(gcj_lng - 105.0, gcj_lat - 35.0)dlng  transformlng(gcj_lng - 105.0, gcj_lat - 35.0)radlat  gcj_lat / 180.0 * PImagic  math.sin(radlat)magic  1 - EE * magic * magicsqrtmagic  math.sqrt(magic)dlat  (dlat * 180.0) / ((A * (1 - EE)) / (magic * sqrtmagic) * PI)dlng  (dlng * 180.0) / (A / sqrtmagic * math.cos(radlat) * PI)mglat  gcj_lat  dlatmglng  gcj_lng  dlngwgs84_lng  gcj_lng * 2 - mglngwgs84_lat  gcj_lat * 2 - mglatreturn wgs84_lng, wgs84_lat# 示例高德地图的经纬度
while True:gcInfoinput(请输入高德坐标信息)gcListgcInfo.split(,)gcj_lng  float(gcList[0]) # 经度gcj_lat  float(gcList[1]) # 纬度# 转换为WGS-84坐标wgs84_lng, wgs84_lat  gcj02_to_wgs84(gcj_lng, gcj_lat)print(f高德地图坐标GCJ-02: 经度{gcj_lng}, 纬度{gcj_lat})print(fWGS-84坐标: 经度{wgs84_lng}, 纬度{wgs84_lat})即可完成。 
百度地图api 百度地图点线面查询 api  huiyan网站如下 
https://huiyan.baidu.com/github/tools/coord/ 
在该网站上可以选择一个点然后知道其经纬度坐标和墨卡托坐标。 但是需要注意如下 
#  * 各地图API坐标系统比较与转换; #  * WGS84坐标系即地球坐标系国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, #  * 谷歌地图采用的是WGS84地理坐标系中国范围除外; #  * GCJ02坐标系即火星坐标系是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系  #  * 3BD09坐标系即百度坐标系GCJ02坐标系经加密后的坐标系; 
所以要想把百度地图上的经纬度点转换为Arcgis底图中的坐标点还需要进行解密将3BD09坐标系的坐标位置还原为WGS84地理坐标系的坐标位置。代码如下 
import math
from decimal import *# -*- coding: utf-8 -*-
# /**
#  * 各地图API坐标系统比较与转换;
#  * WGS84坐标系即地球坐标系国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,
#  * 谷歌地图采用的是WGS84地理坐标系中国范围除外;
#  * GCJ02坐标系即火星坐标系是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系 
#  * 3BD09坐标系即百度坐标系GCJ02坐标系经加密后的坐标系;
#  */
import math
from decimal import *class transfer:def __init__(self,keyNone):self.a6378245.0self.eeDecimal(0.00669342162296594323)def transformLng(self,x,y):retDecimal()ret  300.0x2.0*y0.1*x*x0.1*x*y0.1*math.sqrt(math.fabs(x))ret  (20.0 * math.sin(6.0 * x * math.pi)  20.0 * math.sin(2.0 * x * math.pi)) * 2.0 / 3.0ret  (20.0 * math.sin(x * math.pi)  40.0 * math.sin(x / 3.0 * math.pi)) * 2.0 / 3.0ret  (150.0 * math.sin(x / 12.0 * math.pi)  300.0 * math.sin(x / 30.0* math.pi)) * 2.0 / 3.0return retdef transformLat(self,x,y):ret  Decimal()ret  -100.0  2.0 * x  3.0 * y  0.2 * y * y  0.1 * x * y 0.2 * math.sqrt(math.fabs(x))ret  (20.0 * math.sin(6.0 * x * math.pi)  20.0 * math.sin(2.0 * x * math.pi)) * 2.0 / 3.0ret  (20.0 * math.sin(y * math.pi)  40.0 * math.sin(y / 3.0 * math.pi)) * 2.0 / 3.0ret  (160.0 * math.sin(y / 12.0 * math.pi)  320 * math.sin(y * math.pi / 30.0)) * 2.0 / 3.0return retdef transfrom(self,lng,lat):dLat  self.transformLat(lng - 105.0, lat - 35.0)dLng  self.transformLng(lng - 105.0, lat - 35.0)radLat  lat / 180.0 * math.pimagic  math.sin(radLat)magic  1 - self.ee * Decimal(magic) * Decimal(magic)sqrtMagic  math.sqrt(magic)dLat  Decimal((dLat * 180.0)) / ((Decimal(self.a) * (1 - self.ee)) / (Decimal(magic) * Decimal(sqrtMagic)) * Decimal(math.pi))dLng  (dLng * 180.0) / (self.a / sqrtMagic * math.cos(radLat) * math.pi)mgLat  lat  float(dLat)mgLng  lng  dLngreturn mgLng,mgLat#gps坐标转换为gcj02坐标系def wg84_to_gcj02(self,wg84_lng,wg84_lat):dLatself.transformLat(wg84_lng-105.0,wg84_lat-35.0)dLngself.transformLng(wg84_lng-105.0,wg84_lat-35.0)radLat  wg84_lat / 180.0 * math.pimagic  math.sin(radLat)magic  1 - self.ee * Decimal(magic) * Decimal(magic)sqrtMagic  math.sqrt(magic)dLat  Decimal((dLat * 180.0)) / ((Decimal(self.a) * (1 - self.ee)) / (Decimal(magic) * Decimal(sqrtMagic)) * Decimal(math.pi))dLng  (dLng * 180.0) / (self.a / sqrtMagic * math.cos(radLat) * math.pi)gcj02Lat  wg84_lat  float(dLat)gcj02Lng  wg84_lng  dLngreturn gcj02Lng,gcj02Lat#gcj02坐标转百度坐标def gcj02_to_bd09(self,gcj02_lng,gcj02_lat):x  gcj02_lngy  gcj02_latz  math.sqrt(x * x  y * y)  0.00002 * math.sin(y * math.pi)theta  math.atan2(y, x)  0.000003 * math.cos(x * math.pi)bd09_Lng  z * math.cos(theta)  0.0065bd09_Lat  z * math.sin(theta)  0.006return bd09_Lng,bd09_Lat#wg84坐标转百度坐标def wg84_to_bd09(self,wg84_lng,wg84_lat):gcj02lng,gcj02latself.wg84_to_gcj02(wg84_lng,wg84_lat)return self.gcj02_to_bd09(gcj02lng,gcj02lat)#百度坐标转GCJ02坐标def bd09_to_gcj02(self,bd09_lng,bd09_lat):x  bd09_lng - 0.0065y  bd09_lat - 0.006z  math.sqrt(x * x  y * y) - 0.00002 * math.sin(y * math.pi)theta  math.atan2(y, x) - 0.000003 * math.cos(x * math.pi)gcj02_lng  z * math.cos(theta)gcj02_lat  z * math.sin(theta)return gcj02_lng,gcj02_lat#GCJ坐标转WG84坐标def gcj02_to_wg84(self,gcj02_lng,gcj02_lat):mlng,mlatself.transfrom(gcj02_lng,gcj02_lat)wg84_Lnggcj02_lng*2-mlngwg84_Latgcj02_lat*2-mlatreturn wg84_Lng,wg84_Lat#将百度坐标转WG84坐标def bd09_to_wg84(self,bd09_lng,bd09_lat):gcj02_lng, gcj02_latself.bd09_to_gcj02(bd09_lng,bd09_lat)return self.gcj02_to_wg84(gcj02_lng,gcj02_lat)trtransfer()
#测试,转换正确#循环输入坐标信息
while True:xyInfoinput(请输入百度坐标信息)xyListxyInfo.split(,)bd09_lngfloat(xyList[0])bd09_latfloat(xyList[1])#输出 百度坐标转WG84坐标print(百度坐标信息)print(bd09_lng)print(bd09_lat)print(WGS坐标信息)print(tr.bd09_to_wg84(bd09_lng,bd09_lat)[0])print(tr.bd09_to_wg84(bd09_lng,bd09_lat)[1])print()即可转换完成。 
综合代码 
根据以上分析总的代码如下 
choiceinput(请选择高德坐标G 或者百度坐标B)
choicechoice.upper()
if choiceB:import mathfrom decimal import *# -*- coding: utf-8 -*-# /**#  * 各地图API坐标系统比较与转换;#  * WGS84坐标系即地球坐标系国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,#  * 谷歌地图采用的是WGS84地理坐标系中国范围除外;#  * GCJ02坐标系即火星坐标系是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系。谷歌中国地图和搜搜中国地图采用的是GCJ02地理坐标系 #  * 3BD09坐标系即百度坐标系GCJ02坐标系经加密后的坐标系;#  */import mathfrom decimal import *class transfer:def __init__(self,keyNone):self.a6378245.0self.eeDecimal(0.00669342162296594323)def transformLng(self,x,y):retDecimal()ret  300.0x2.0*y0.1*x*x0.1*x*y0.1*math.sqrt(math.fabs(x))ret  (20.0 * math.sin(6.0 * x * math.pi)  20.0 * math.sin(2.0 * x * math.pi)) * 2.0 / 3.0ret  (20.0 * math.sin(x * math.pi)  40.0 * math.sin(x / 3.0 * math.pi)) * 2.0 / 3.0ret  (150.0 * math.sin(x / 12.0 * math.pi)  300.0 * math.sin(x / 30.0* math.pi)) * 2.0 / 3.0return retdef transformLat(self,x,y):ret  Decimal()ret  -100.0  2.0 * x  3.0 * y  0.2 * y * y  0.1 * x * y 0.2 * math.sqrt(math.fabs(x))ret  (20.0 * math.sin(6.0 * x * math.pi)  20.0 * math.sin(2.0 * x * math.pi)) * 2.0 / 3.0ret  (20.0 * math.sin(y * math.pi)  40.0 * math.sin(y / 3.0 * math.pi)) * 2.0 / 3.0ret  (160.0 * math.sin(y / 12.0 * math.pi)  320 * math.sin(y * math.pi / 30.0)) * 2.0 / 3.0return retdef transfrom(self,lng,lat):dLat  self.transformLat(lng - 105.0, lat - 35.0)dLng  self.transformLng(lng - 105.0, lat - 35.0)radLat  lat / 180.0 * math.pimagic  math.sin(radLat)magic  1 - self.ee * Decimal(magic) * Decimal(magic)sqrtMagic  math.sqrt(magic)dLat  Decimal((dLat * 180.0)) / ((Decimal(self.a) * (1 - self.ee)) / (Decimal(magic) * Decimal(sqrtMagic)) * Decimal(math.pi))dLng  (dLng * 180.0) / (self.a / sqrtMagic * math.cos(radLat) * math.pi)mgLat  lat  float(dLat)mgLng  lng  dLngreturn mgLng,mgLat#gps坐标转换为gcj02坐标系def wg84_to_gcj02(self,wg84_lng,wg84_lat):dLatself.transformLat(wg84_lng-105.0,wg84_lat-35.0)dLngself.transformLng(wg84_lng-105.0,wg84_lat-35.0)radLat  wg84_lat / 180.0 * math.pimagic  math.sin(radLat)magic  1 - self.ee * Decimal(magic) * Decimal(magic)sqrtMagic  math.sqrt(magic)dLat  Decimal((dLat * 180.0)) / ((Decimal(self.a) * (1 - self.ee)) / (Decimal(magic) * Decimal(sqrtMagic)) * Decimal(math.pi))dLng  (dLng * 180.0) / (self.a / sqrtMagic * math.cos(radLat) * math.pi)gcj02Lat  wg84_lat  float(dLat)gcj02Lng  wg84_lng  dLngreturn gcj02Lng,gcj02Lat#gcj02坐标转百度坐标def gcj02_to_bd09(self,gcj02_lng,gcj02_lat):x  gcj02_lngy  gcj02_latz  math.sqrt(x * x  y * y)  0.00002 * math.sin(y * math.pi)theta  math.atan2(y, x)  0.000003 * math.cos(x * math.pi)bd09_Lng  z * math.cos(theta)  0.0065bd09_Lat  z * math.sin(theta)  0.006return bd09_Lng,bd09_Lat#wg84坐标转百度坐标def wg84_to_bd09(self,wg84_lng,wg84_lat):gcj02lng,gcj02latself.wg84_to_gcj02(wg84_lng,wg84_lat)return self.gcj02_to_bd09(gcj02lng,gcj02lat)#百度坐标转GCJ02坐标def bd09_to_gcj02(self,bd09_lng,bd09_lat):x  bd09_lng - 0.0065y  bd09_lat - 0.006z  math.sqrt(x * x  y * y) - 0.00002 * math.sin(y * math.pi)theta  math.atan2(y, x) - 0.000003 * math.cos(x * math.pi)gcj02_lng  z * math.cos(theta)gcj02_lat  z * math.sin(theta)return gcj02_lng,gcj02_lat#GCJ坐标转WG84坐标def gcj02_to_wg84(self,gcj02_lng,gcj02_lat):mlng,mlatself.transfrom(gcj02_lng,gcj02_lat)wg84_Lnggcj02_lng*2-mlngwg84_Latgcj02_lat*2-mlatreturn wg84_Lng,wg84_Lat#将百度坐标转WG84坐标def bd09_to_wg84(self,bd09_lng,bd09_lat):gcj02_lng, gcj02_latself.bd09_to_gcj02(bd09_lng,bd09_lat)return self.gcj02_to_wg84(gcj02_lng,gcj02_lat)trtransfer()#测试,转换正确#循环输入坐标信息while True:xyInfoinput(请输入百度坐标信息)xyListxyInfo.split(,)bd09_lngfloat(xyList[0])bd09_latfloat(xyList[1])#输出 百度坐标转WG84坐标print(百度坐标信息)elif choiceG:import math# 定义常量PI  math.piA  6378245.0EE  0.00669342162296594323X_PI  PI * 3000.0 / 180.0def transformlat(lng, lat):ret  -100.0  2.0 * lng  3.0 * lat  0.2 * lat * lat  0.1 * lng * lat  0.2 * math.sqrt(math.fabs(lng))ret  (20.0 * math.sin(6.0 * lng * PI)  20.0 * math.sin(2.0 * lng * PI)) * 2.0 / 3.0ret  (20.0 * math.sin(lat * PI)  40.0 * math.sin(lat / 3.0 * PI)) * 2.0 / 3.0ret  (160.0 * math.sin(lat / 12.0 * PI)  320 * math.sin(lat * PI / 30.0)) * 2.0 / 3.0return retdef transformlng(lng, lat):ret  300.0  lng  2.0 * lat  0.1 * lng * lng  0.1 * lng * lat  0.1 * math.sqrt(math.fabs(lng))ret  (20.0 * math.sin(6.0 * lng * PI)  20.0 * math.sin(2.0 * lng * PI)) * 2.0 / 3.0ret  (20.0 * math.sin(lng * PI)  40.0 * math.sin(lng / 3.0 * PI)) * 2.0 / 3.0ret  (150.0 * math.sin(lng / 12.0 * PI)  300.0 * math.sin(lng / 30.0 * PI)) * 2.0 / 3.0return retdef out_of_china(lng, lat):return not (73.66  lng  135.05 and 3.86  lat  53.55)def gcj02_to_wgs84(gcj_lng, gcj_lat):if out_of_china(gcj_lng, gcj_lat):return gcj_lng, gcj_lat  # 不在中国范围内直接返回原坐标dlat  transformlat(gcj_lng - 105.0, gcj_lat - 35.0)dlng  transformlng(gcj_lng - 105.0, gcj_lat - 35.0)radlat  gcj_lat / 180.0 * PImagic  math.sin(radlat)magic  1 - EE * magic * magicsqrtmagic  math.sqrt(magic)dlat  (dlat * 180.0) / ((A * (1 - EE)) / (magic * sqrtmagic) * PI)dlng  (dlng * 180.0) / (A / sqrtmagic * math.cos(radlat) * PI)mglat  gcj_lat  dlatmglng  gcj_lng  dlngwgs84_lng  gcj_lng * 2 - mglngwgs84_lat  gcj_lat * 2 - mglatreturn wgs84_lng, wgs84_lat# 示例高德地图的经纬度while True:gcInfoinput(请输入高德坐标信息)gcListgcInfo.split(,)gcj_lng  float(gcList[0]) # 经度gcj_lat  float(gcList[1]) # 纬度# 转换为WGS-84坐标wgs84_lng, wgs84_lat  gcj02_to_wgs84(gcj_lng, gcj_lat)print(f高德地图坐标GCJ-02: 经度{gcj_lng}, 纬度{gcj_lat})print(fWGS-84坐标: 经度{wgs84_lng}, 纬度{wgs84_lat})print(bd09_lng)print(bd09_lat)print(WGS坐标信息)print(tr.bd09_to_wg84(bd09_lng,bd09_lat)[0])print(tr.bd09_to_wg84(bd09_lng,bd09_lat)[1])print()即可完成。 
一日一图 代码如下 
import turtle as t# 设置画布
t.speed(fastest)  # 设置绘图速度
t.hideturtle()      # 隐藏海龟图标
t.bgcolor(black)  # 设置背景颜色# 绘制时空隧道
i  0
while i  235:t.pencolor(cyan)  # 设置画笔颜色为青色t.penup()           # 提起画笔t.goto(0, 0)        # 移动到中心点t.forward(200)      # 向前移动200单位t.pendown()         # 放下画笔t.circle(100)       # 绘制半径为100的圆t.left(2)           # 左转2度i  1# 结束绘图
t.done()设置画布设置背景颜色为黑色隐藏海龟图标设置绘图速度为最快。  绘制时空隧道通过循环绘制多个圆形每次绘制后稍微左转形成螺旋效果。  颜色选择使用青色cyan作为画笔颜色以增强未来感。  循环次数循环多次每次绘制一个圆形并左转2度形成螺旋状的时空隧道效果。  
生成图片如下