百度高德地图坐标转换

百度地图和高德地图的侧重点不太一样。同样一个地名,在百度地图网站上搜索到的地点可能是商业网点,在高德地图网站上搜索到的地点可能是自然行政地点。

高德地图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 = f"https://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.0

def 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.0
    ret += (20.0 * math.sin(lat * PI) + 40.0 * math.sin(lat / 3.0 * PI)) * 2.0 / 3.0
    ret += (160.0 * math.sin(lat / 12.0 * PI) + 320 * math.sin(lat * PI / 30.0)) * 2.0 / 3.0
    return ret

def 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.0
    ret += (20.0 * math.sin(lng * PI) + 40.0 * math.sin(lng / 3.0 * PI)) * 2.0 / 3.0
    ret += (150.0 * math.sin(lng / 12.0 * PI) + 300.0 * math.sin(lng / 30.0 * PI)) * 2.0 / 3.0
    return ret

def 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 * PI
    magic = math.sin(radlat)
    magic = 1 - EE * magic * magic
    sqrtmagic = 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 + dlat
    mglng = gcj_lng + dlng
    wgs84_lng = gcj_lng * 2 - mglng
    wgs84_lat = gcj_lat * 2 - mglat
    return wgs84_lng, wgs84_lat


# 示例:高德地图的经纬度
while True:
    gcInfo=input("请输入高德坐标信息:")
    gcList=gcInfo.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(f"WGS-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,key=None):
        self.a=6378245.0
        self.ee=Decimal(0.00669342162296594323)
 
    def transformLng(self,x,y):
        ret=Decimal()
        ret = 300.0+x+2.0*y+0.1*x*x+0.1*x*y+0.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.0
        ret += (20.0 * math.sin(x * math.pi) + 40.0 * math.sin(x / 3.0 * math.pi)) * 2.0 / 3.0
        ret += (150.0 * math.sin(x / 12.0 * math.pi) + 300.0 * math.sin(x / 30.0* math.pi)) * 2.0 / 3.0
        return ret
 
    def 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.0
        ret += (20.0 * math.sin(y * math.pi) + 40.0 * math.sin(y / 3.0 * math.pi)) * 2.0 / 3.0
        ret += (160.0 * math.sin(y / 12.0 * math.pi) + 320 * math.sin(y * math.pi / 30.0)) * 2.0 / 3.0
        return ret
 
    def 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.pi
        magic = 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 + dLng
        return mgLng,mgLat
 
 
    #gps坐标转换为gcj02坐标系
    def wg84_to_gcj02(self,wg84_lng,wg84_lat):
        dLat=self.transformLat(wg84_lng-105.0,wg84_lat-35.0)
        dLng=self.transformLng(wg84_lng-105.0,wg84_lat-35.0)
        radLat = wg84_lat / 180.0 * math.pi
        magic = 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 + dLng
        return gcj02Lng,gcj02Lat
 
    #gcj02坐标转百度坐标
    def gcj02_to_bd09(self,gcj02_lng,gcj02_lat):
        x = gcj02_lng
        y = gcj02_lat
        z = 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.0065
        bd09_Lat = z * math.sin(theta) + 0.006
        return bd09_Lng,bd09_Lat
 
    #wg84坐标转百度坐标
    def wg84_to_bd09(self,wg84_lng,wg84_lat):
        gcj02lng,gcj02lat=self.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.0065
        y = bd09_lat - 0.006
        z = 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,mlat=self.transfrom(gcj02_lng,gcj02_lat)
        wg84_Lng=gcj02_lng*2-mlng
        wg84_Lat=gcj02_lat*2-mlat
        return wg84_Lng,wg84_Lat
 
    #将百度坐标转WG84坐标
    def bd09_to_wg84(self,bd09_lng,bd09_lat):
        gcj02_lng, gcj02_lat=self.bd09_to_gcj02(bd09_lng,bd09_lat)
        return self.gcj02_to_wg84(gcj02_lng,gcj02_lat)
  
tr=transfer()
#测试,转换正确

#循环输入坐标信息
while True:
    xyInfo=input("请输入百度坐标信息:")
    xyList=xyInfo.split(",")
    bd09_lng=float(xyList[0])
    bd09_lat=float(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()

即可转换完成。

综合代码

根据以上分析,总的代码如下:

choice=input("请选择高德坐标G 或者百度坐标B:")
choice=choice.upper()
if choice=="B":

    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,key=None):
            self.a=6378245.0
            self.ee=Decimal(0.00669342162296594323)
     
        def transformLng(self,x,y):
            ret=Decimal()
            ret = 300.0+x+2.0*y+0.1*x*x+0.1*x*y+0.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.0
            ret += (20.0 * math.sin(x * math.pi) + 40.0 * math.sin(x / 3.0 * math.pi)) * 2.0 / 3.0
            ret += (150.0 * math.sin(x / 12.0 * math.pi) + 300.0 * math.sin(x / 30.0* math.pi)) * 2.0 / 3.0
            return ret
     
        def 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.0
            ret += (20.0 * math.sin(y * math.pi) + 40.0 * math.sin(y / 3.0 * math.pi)) * 2.0 / 3.0
            ret += (160.0 * math.sin(y / 12.0 * math.pi) + 320 * math.sin(y * math.pi / 30.0)) * 2.0 / 3.0
            return ret
     
        def 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.pi
            magic = 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 + dLng
            return mgLng,mgLat
     
     
        #gps坐标转换为gcj02坐标系
        def wg84_to_gcj02(self,wg84_lng,wg84_lat):
            dLat=self.transformLat(wg84_lng-105.0,wg84_lat-35.0)
            dLng=self.transformLng(wg84_lng-105.0,wg84_lat-35.0)
            radLat = wg84_lat / 180.0 * math.pi
            magic = 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 + dLng
            return gcj02Lng,gcj02Lat
     
        #gcj02坐标转百度坐标
        def gcj02_to_bd09(self,gcj02_lng,gcj02_lat):
            x = gcj02_lng
            y = gcj02_lat
            z = 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.0065
            bd09_Lat = z * math.sin(theta) + 0.006
            return bd09_Lng,bd09_Lat
     
        #wg84坐标转百度坐标
        def wg84_to_bd09(self,wg84_lng,wg84_lat):
            gcj02lng,gcj02lat=self.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.0065
            y = bd09_lat - 0.006
            z = 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,mlat=self.transfrom(gcj02_lng,gcj02_lat)
            wg84_Lng=gcj02_lng*2-mlng
            wg84_Lat=gcj02_lat*2-mlat
            return wg84_Lng,wg84_Lat
     
        #将百度坐标转WG84坐标
        def bd09_to_wg84(self,bd09_lng,bd09_lat):
            gcj02_lng, gcj02_lat=self.bd09_to_gcj02(bd09_lng,bd09_lat)
            return self.gcj02_to_wg84(gcj02_lng,gcj02_lat)

      
    tr=transfer()
    #测试,转换正确

    #循环输入坐标信息
    while True:
        xyInfo=input("请输入百度坐标信息:")
        xyList=xyInfo.split(",")
        bd09_lng=float(xyList[0])
        bd09_lat=float(xyList[1])
        #输出 百度坐标转WG84坐标
        print("百度坐标信息:")


elif choice=="G":
    import math
    # 定义常量
    PI = math.pi
    A = 6378245.0
    EE = 0.00669342162296594323
    X_PI = PI * 3000.0 / 180.0

    def 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.0
        ret += (20.0 * math.sin(lat * PI) + 40.0 * math.sin(lat / 3.0 * PI)) * 2.0 / 3.0
        ret += (160.0 * math.sin(lat / 12.0 * PI) + 320 * math.sin(lat * PI / 30.0)) * 2.0 / 3.0
        return ret

    def 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.0
        ret += (20.0 * math.sin(lng * PI) + 40.0 * math.sin(lng / 3.0 * PI)) * 2.0 / 3.0
        ret += (150.0 * math.sin(lng / 12.0 * PI) + 300.0 * math.sin(lng / 30.0 * PI)) * 2.0 / 3.0
        return ret

    def 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 * PI
        magic = math.sin(radlat)
        magic = 1 - EE * magic * magic
        sqrtmagic = 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 + dlat
        mglng = gcj_lng + dlng
        wgs84_lng = gcj_lng * 2 - mglng
        wgs84_lat = gcj_lat * 2 - mglat
        return wgs84_lng, wgs84_lat


    # 示例:高德地图的经纬度
    while True:
        gcInfo=input("请输入高德坐标信息:")
        gcList=gcInfo.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(f"WGS-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()
  1. 设置画布:设置背景颜色为黑色,隐藏海龟图标,设置绘图速度为最快。

  2. 绘制时空隧道:通过循环绘制多个圆形,每次绘制后稍微左转,形成螺旋效果。

  3. 颜色选择:使用青色(cyan)作为画笔颜色,以增强未来感。

  4. 循环次数:循环多次,每次绘制一个圆形并左转2度,形成螺旋状的时空隧道效果。

生成图片如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/967444.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Photoshop自定义键盘快捷键

编辑 - 键盘快捷键 CtrlShiftAltK 把画笔工具改成Q , 橡皮擦改成W , 涂抹工具改成E , 增加和减小画笔大小A和S 偏好设置 - 透明度和色域 设置一样颜色 套索工具 可以自定义套选一片区域 Shiftf5 填充 CtrlU 可以改颜色/色相/饱和度 CtrlE 合并图层 CtrlShiftS 另存…

carbon 加入 GitCode:Golang 时间处理的 “瑞士军刀”

在 Golang 的开发生态中&#xff0c;时间处理领域长期存在着诸多挑战。高效、精准的时间处理对于各类软件应用的稳定运行与功能拓展至关重要。近日&#xff0c;carbon 正式加入 GitCode&#xff0c;为 Golang 开发者带来一款强大且便捷的时间处理利器&#xff0c;助力项目开发迈…

项目总结: 应用程序的扩展bundle化,自定义classLoader

目录 描述事情实现的简单说明主应用业务1业务2 实现细节描述更多总结 描述事情 应用程序的主逻辑要做一件事&#xff0c;也提供了扩展。即如果想干预这个逻辑&#xff0c;业务可以自己扩展。 设计图如下&#xff1a; 应用&#xff1a;application, AppClassLoader加载&#…

基于javaweb的SpringBoot电影推荐系统

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 运行环境开发工具适用功能说明项目介绍环境需要技术栈使用说明 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclips…

linux部署ollama+deepseek+dify

Ollama 下载源码 curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz sudo tar -C /usr -xzf ollama-linux-amd64.tgz启动 export OLLAMA_HOST0.0.0.0:11434 ollama serve访问ip:11434看到即成功 Ollama is running 手动安装deepseek…

1 推荐系统概述

推荐系统概述 1 推荐系统的意义平台方信息生产者&#xff08;物品&#xff09;信息消费者&#xff08;用户&#xff09;推荐和搜索的区别 2 推荐系统架构系统架构算法架构 3 推荐系统技术栈算法画像层召回/粗排精排重排序 工程 1 推荐系统的意义 信息生产者&#xff08;平台方…

torch_bmm验算及代码测试

文章目录 1. torch_bmm2. pytorch源码 1. torch_bmm torch.bmm的作用是基于batch_size的矩阵乘法,torch.bmm的作用是对应batch位置的矩阵相乘&#xff0c;比如&#xff0c; mat1的第1个位置和mat2的第1个位置进行矩阵相乘得到mat3的第1个位置mat1的第2个位置和mat2的第2个位置…

汽车与AI深度融合:CES Asia 2025前瞻

在科技飞速发展的当下&#xff0c;汽车与AI的融合正成为行业变革的关键驱动力。近日&#xff0c;吉利、极氪、岚图、智己等多家车企纷纷官宣与DeepSeek模型深度融合&#xff0c;其中岚图知音更是将成为首个搭载该模型的量产车型&#xff0c;这无疑是汽车智能化进程中的重要里程…

Racecar Gym 总结

1.Racecar Gym 简介 Racecar Gym 是一个基于 PyBullet 物理引擎 的自动驾驶仿真平台&#xff0c;提供 Gymnasium&#xff08;OpenAI Gym&#xff09; 接口&#xff0c;主要用于强化学习&#xff08;Reinforcement Learning, RL&#xff09;、多智能体竞速&#xff08;Multi-Ag…

jupyterLab插件开发

jupyter lab安装、配置&#xff1a; jupyter lab安装、配置教程_容器里装jupyterlab-CSDN博客 『Linux笔记』服务器搭建神器JupyterLab_linux_布衣小张-腾讯云开发者社区 Jupyter Lab | 安装、配置、插件推荐、多用户使用教程-腾讯云开发者社区-腾讯云 jupyterLab插件开发教…

1.Excel:某停车场计划调整收费标准❗(13)

目录 函数VLOOKUP ROUNDUP/ROUNDDOWN函数 NO1​ NO2会计专用类型​ NO3收费标准VLOOKUP​ NO4停放时间&#xff08;天&#xff09;​ NO5金额roundup/rounddown​ ​NO6汇总行​ NO7单元格突出显示​ NO8数据透视表​ 函数VLOOKUP VLOOKUP(收费标准!A3:B5 F4&#xf…

elasticsearch安装插件analysis-ik分词器(深度研究docker内elasticsearch安装插件的位置)

最近在学习使用elasticsearch&#xff0c;但是在安装插件ik的时候遇到许多问题。 所以在这里开始对elasticsearch做一个深度的研究。 首先提供如下链接&#xff1a; https://github.com/infinilabs/analysis-ik/releases 我们下载elasticsearch-7-17-2的Linux x86_64版本 …

Git 分布式版本控制工具使用教程

1.关于Git 1.1 什么是Git Git是一款免费、开源的分布式版本控制工具&#xff0c;由Linux创始人Linus Torvalds于2005年开发。它被设计用来处理从很小到非常大的项目&#xff0c;速度和效率都非常高。Git允许多个开发者几乎同时处理同一个项目而不会互相干扰&#xff0c;并且在…

VMware 虚拟机 ubuntu 20.04 扩容工作硬盘

一、关闭虚拟机 关闭虚拟机参考下图&#xff0c;在vmware 调整磁盘容量 二、借助工具fdisk testubuntu ~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 388M 3.1M 385M 1% /run /dev/sda5 …

使用python tk 做UI,实现的步骤如下:

Update UI 先~ 使用python tk 做UI,实现的步骤如下:1、点击初始化按钮后,Robot 回到Home 位置,位置到达后发送Home 给视觉,UI更新Robot位置为 Home 2、点击基准按钮后,Robot 走到POS1,位置到达后发送POS1+++当前位置(Ref_POS1_X、Ref _POS1_Y、Ref _POS1_R)给视觉,UI更…

头条百度批量采集软件说明文档

旧版说明文档《头条号文章批量采集软件4.0版本说明文档&#xff01;头条/微头条文章批量采集》 头条的采集软件已经更新了好多个版本了&#xff0c;一直没有做详细的介绍文档&#xff0c;最近更新了一些功能进去&#xff0c;一块来写一下说明文档。 1、主界面 2、头条作者采集…

Wpf美化按钮,输入框,下拉框,dataGrid

Wpf美化按钮&#xff0c;输入框&#xff0c;下拉框&#xff0c;dataGrid 引用代码后 引用资源 <ControlTemplate x:Key"CustomProgressBarTemplate" TargetType"ProgressBar"><Grid><Border x:Name"PART_Track" CornerRadius&q…

DeepSeek从入门到精通:全面掌握AI大模型的核心能力

文章目录 一、DeepSeek是什么&#xff1f;性能对齐OpenAI-o1正式版 二、Deepseek可以做什么&#xff1f;能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek&#xff1f;四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…

从MySQL优化到脑力健康:技术人与效率的双重提升

文章目录 零&#xff1a;前言一&#xff1a;MySQL性能优化的核心知识点1. 索引优化的最佳实践实战案例&#xff1a; 2. 高并发事务的处理机制实战案例&#xff1a; 3. 查询性能调优实战案例&#xff1a; 4. 缓存与连接池的优化实战案例&#xff1a; 二&#xff1a;技术工作者的…

大语言模型实践——基于现有API的二次开发

基于现有的API平台做一些实用的AI小应用。 API服务商&#xff1a;阿里云百炼 云服务器&#xff1a;阿里云&#xff08;2核2GB&#xff09; 部署框架&#xff1a;gradio 调用框架&#xff1a;openai 语言&#xff1a;Python &#xff08;注&#xff1a;若搭建网站或API接口…