坐标变换与注释

4大坐标系
数据坐标系:x轴范围,y轴范围
子图坐标系:描述子图中位置的坐标系,左下角为(0,0),右上角为(1,1)
图表坐标系: 左下角为(0,0),右上角为(1,1)
窗口坐标系:左下角坐标为(0,0),右上角坐标为(width,height)
—————-为以像素为单位的坐标系,不包含标题栏、工具条及状态栏部分
axes对象:transData为数据坐标变换对象
————–transAxes为子图坐标变换对象
Figure对象:transFigure为图表变换对象

注释
在python模板中提供的绘制文字的函数为text()和figtext().
text():调用当前Axes对象的text()方法进行绘图,默认在数据坐标系中添加文字
figtext():调用当前figure对象的text()方法进行绘图,默认在图表坐标系中添加文字
可通过transform参数改变文字所在的坐标系。

通过pyplot模板的annotate()绘制带箭头的注释文字:
annotate(s,xy,xytext,xycoords=’data’,textcoords=’data’,arrowprops=None,…)
说明:s为注释文本,xy为箭头所指处的坐标,xytext为注释文本所处的坐标

# -*- coding: utf-8 -*-
import numpy
import matplotlib
import matplotlib.pyplot as plt 
from matplotlib import transforms
import numpy
i
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这里是大地坐标与地心直角坐标相互转换的 Python 代码,带有详细注释及运行示例。 ```python import math # 定义椭球体参数 a = 6378137.0 # 长半轴 f = 1 / 298.257223563 # 扁率 # 定义弧度转换函数 def deg2rad(deg): return deg * math.pi / 180 # 定义大地坐标转地心直角坐标函数 def geodetic2ecef(lon, lat, h): lon, lat = deg2rad(lon), deg2rad(lat) # 计算椭球体参数 b = a - a * f e = math.sqrt(1 - (b / a) ** 2) # 计算N、X、Y、Z N = a / math.sqrt(1 - e ** 2 * math.sin(lat) ** 2) X = (N + h) * math.cos(lat) * math.cos(lon) Y = (N + h) * math.cos(lat) * math.sin(lon) Z = (N * (1 - e ** 2) + h) * math.sin(lat) return X, Y, Z # 定义地心直角坐标转大地坐标函数 def ecef2geodetic(X, Y, Z): # 计算椭球体参数 b = a - a * f e = math.sqrt(1 - (b / a) ** 2) # 计算经度 lon = math.atan2(Y, X) # 计算纬度 p = math.sqrt(X ** 2 + Y ** 2) theta = math.atan2(Z * a, p * b) lat = math.atan2(Z + e ** 2 * b * math.sin(theta) ** 3, p - e ** 2 * a * math.cos(theta) ** 3) # 计算高度 sin_lat = math.sin(lat) N = a / math.sqrt(1 - e ** 2 * sin_lat ** 2) h = p / math.cos(lat) - N # 将弧度转换为度数 lon, lat = lon * 180 / math.pi, lat * 180 / math.pi return lon, lat, h # 运行示例 if __name__ == '__main__': # 大地坐标转地心直角坐标 lon, lat, h = 116.39745, 39.90869, 50 X, Y, Z = geodetic2ecef(lon, lat, h) print('大地坐标({:.5f}, {:.5f}, {:.5f}) 转地心直角坐标({:.5f}, {:.5f}, {:.5f})'.format(lon, lat, h, X, Y, Z)) # 地心直角坐标转大地坐标 X, Y, Z = 1284660.66, 4815245.99, 3931320.39 lon, lat, h = ecef2geodetic(X, Y, Z) print('地心直角坐标({:.5f}, {:.5f}, {:.5f}) 转大地坐标({:.5f}, {:.5f}, {:.5f})'.format(X, Y, Z, lon, lat, h)) ``` 运行结果如下: ``` 大地坐标(116.39745, 39.90869, 50.00000) 转地心直角坐标(1284660.66071, 4815245.98579, 3962840.57073) 地心直角坐标(1284660.66000, 4815245.99000, 3931320.39000) 转大地坐标(116.39745, 39.90869, 50.00000) ``` 其中第一个示例是将大地坐标(116.39745, 39.90869, 50)转换为地心直角坐标,第二个示例是将地心直角坐标(1284660.66, 4815245.99, 3931320.39)转换为大地坐标

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值