python实现经纬度采样的示例代码

作者:liuyu进阶 时间:2021-12-25 13:24:37 

原理

经度 phi,纬度 theta 处的坐标为:
x =R* cos(phi) * cos(theta)
y = Rsin(phi) * cos(theta)
z = R
sin(theta)

问题

经纬度采样的采样点是相同经纬度间隔的交点。但是采样1000个点,如何划分多少条经线,多少条纬线相交,才能使1000个采样点最均匀的分布在球面上(虽然经纬度采样本来就不均匀,但对于不同的采样点个数应该有一种相对最均匀的经纬线划分)?求大佬指教!
我目前是将纬度每10度进行划分。

Code


import random
from mpl_toolkits import mplot3d
import numpy as np
import math
import matplotlib.pyplot as plt
%matplotlib inline
ax=plt.axes(projection="3d")

N=1000
x=[]
y=[]
z=[]
r=1

#经度
def longitude(lng):
 phi=(180+lng)*(math.pi/180)
 return phi

#纬度
def latitude(lat):
 theta=lat*(math.pi/180)
 return theta

for i in range(-80,90,10):
 for j in np.arange(-180,180,360/((N-2)/17)):
   #x.append(-r*math.sin(latitude(i))*math.cos(longitude(j)))
   #y.append(r*math.cos(latitude(i)))
   #z.append(r*math.sin(latitude(i))*math.sin(longitude(j)))

x.append(r*math.cos(latitude(i))*math.cos(longitude(j)))
   z.append(r*math.sin(latitude(i)))
   y.append(r*math.cos(latitude(i))*math.sin(longitude(j)))

x.append(r*math.cos(latitude(-90))*math.cos(longitude(0)))
z.append(r*math.sin(latitude(-90)))
y.append(r*math.cos(latitude(-90))*math.sin(longitude(0)))

x.append(r*math.cos(latitude(90))*math.cos(longitude(0)))
z.append(r*math.sin(latitude(90)))
y.append(r*math.cos(latitude(90))*math.sin(longitude(0)))

xline=np.array(x)
yline=np.array(y)
zline=np.array(z)
print(xline.shape)
ax.scatter3D(xline,yline,zline,s=2)
plt.savefig("D:\\samples\\经纬度采样.png")

效果

python实现经纬度采样的示例代码

来源:https://blog.csdn.net/m0_45866718/article/details/110818735

标签:python,经纬度,采样
0
投稿

猜你喜欢

  • 使用Pyinstaller转换.py文件为.exe可执行程序过程详解

    2022-11-30 22:43:40
  • web开发以HTML为中心

    2008-02-13 08:14:00
  • CentOS 安装redis和MySQL

    2024-01-20 16:05:21
  • Windows 安装 Anaconda3+PyCharm的方法步骤

    2023-05-21 07:40:53
  • 基于python二叉树的构造和打印例子

    2023-05-16 15:35:45
  • Pyinstaller 打包exe教程及问题解决

    2023-01-08 01:40:00
  • 浅谈MySQL中的group by

    2024-01-18 22:53:54
  • js中forEach,for in,for of循环的用法示例小结

    2024-04-29 13:20:16
  • python和c语言哪个更适合初学者

    2022-06-22 08:23:29
  • mysql运行net start mysql报服务名无效的解决办法

    2024-01-17 06:12:15
  • python使用两种发邮件的方式smtp和outlook示例

    2021-02-12 13:31:54
  • Python下载网易云歌单歌曲的示例代码

    2023-06-10 17:06:28
  • 在Vue中使用echarts的方法

    2024-06-07 16:01:42
  • Golang 实现Redis 协议解析器的解决方案

    2024-02-19 20:09:36
  • javascript浮点数计算的bug

    2009-12-06 11:43:00
  • SQL临时表递归查询子信息并返回记录的代码

    2012-08-21 11:06:19
  • python3实现指定目录下文件sha256及文件大小统计

    2023-11-26 15:37:00
  • python opencv肤色检测的实现示例

    2023-06-13 20:31:58
  • 超常用的PHP正则表达式收集整理

    2024-05-03 15:35:57
  • MYSQL分页limit速度太慢的优化方法

    2024-01-15 21:38:42
  • asp之家 网络编程 m.aspxhome.com