底图在经纬度之间画线
Basemap draw line between latitude longitude
我正在绘制 start/end 龙卷风的位置。 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]])
对于底图,我找到了所有 lat/long 的 max/min,这样它就可以制作一张地图来切掉没有龙卷风的州(例如:我没有在查看 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', 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')
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()
我正在绘制 start/end 龙卷风的位置。 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]])
对于底图,我找到了所有 lat/long 的 max/min,这样它就可以制作一张地图来切掉没有龙卷风的州(例如:我没有在查看 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', 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')
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()