加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在纬度经度之间绘制直线的底图

发布时间:2020-12-20 11:58:51 所属栏目:Python 来源:网络整理
导读:我正在绘制龙卷风的起点/终点位置. csv文件具有以下数据: TouchDownLat TouchDownLong LiftoffLat LiftoffLong31.53 -97.15 31.74 -96.8846.45 -100.67 46.67 -100.4743.1 -83.85 43.17 -83.42 等等… 我所做的是每个纬度和经度,并将其分成一个numpy数组,如
我正在绘制龙卷风的起点/终点位置. csv文件具有以下数据:

TouchDownLat TouchDownLong LiftoffLat LiftoffLong
31.53         -97.15       31.74      -96.88
46.45         -100.67      46.67      -100.47
43.1          -83.85       43.17      -83.42

等等…

我所做的是每个纬度和经度,并将其分成一个numpy数组,如下:

import matplotlib.pyplot as plt
import csv
import numpy as np
from mpl_toolkits.basemap import Basemap
with open(fname,'rb') as f:
    w = csv.reader(f,delimiter = ',')
    for i,line in enumerate (w):
      if i == 0 or line[2][0:4] not in str(range(2007,2018)):
          pass
      else:
          lat_td.append(line[27])
          long_td.append(line[28])
          lat_lift.append(line[29])
          long_lift.append(line[30])

touchdown = np.array([[lat_td],[long_td]])
lift = np.array([[lat_lift],[long_lift]])

对于底图,我找到所有纬度/经度的最大值/最小值,以便它制作一张地图来切断没有龙卷风的状态(例如:我不希望在看EF时看到加利福尼亚州-5龙卷风地点)

m = Basemap(projection = 'merc',llcrnrlat=float(min(lat_td)) - 2,
    urcrnrlat=float(max(lat_lift)) + 2,llcrnrlon=float(max(long_td)) - 2,
    urcrnrlon=float(min(long_lift)) + 2,lat_ts=40,resolution='l')
m.drawcoastlines()
m.fillcontinents(color='white')
m.drawmapboundary(fill_color='white')
m.drawstates(color='black')
m.drawcountries(color='black')
plt.title("#wedgez")

所以,现在问题是:
我希望使用numpy数组中的lat / long绘制龙卷风的轨迹.我该怎么做呢?

解决方法

如果我理解正确,你正在寻找一种方法来绘制路径,给定路径点的坐标.然后,您可以如下绘制路径:

m = Basemap(projection = 'merc',resolution='l')

lat = [the list of lat coordinates here] 
lon = [the list of lon coordinates here] 

x,y = m(lon,lat)
m.plot(x,y,'o-',markersize=5,linewidth=1) 

m.drawcoastlines()
m.fillcontinents(color='white')
m.drawmapboundary(fill_color='white')
m.drawstates(color='black')
m.drawcountries(color='black')
plt.title("#wedgez")
plt.show()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读