В настоящее время я создаю приложение Dash, которое использует выпадающие меню, чтобы определить, какие данные следует отобразить на глобальной карте (обычно контурные графики).
Мне известно, что Базовая карта постепенно сокращается, поэтому я хочу перейти на Cartopy в качестве источника карт (Mapbox - туз, но не подходит), но я не уверен, как получить информацию карты в виде трассы по порядку. использовать его с Dash?
У меня нет проблем с переключением на простой график - это просто в интерфейсе Dash, где данные карты должны быть представлены в виде трассы.
Учебное пособие IНиже приведена только Базовая карта, и я не могу найти никакой информации о том, как преобразовать метод в Cartopy, используя Dash.
Любые идеи, которые высоко ценятся!
Код взят из: https://plot.ly/ipython-notebooks/basemap-maps/ Полный пример доступен здесь - я только что скопировал то, что я считаю ключевым битом, который мне нужно изменить
получение контуров в трассе
trace1 = Contour(
z=air,
x=lon,
y=lat,
colorscale="RdBu",
zauto=False, zmin=-5, zmax=5 )
создание карты
m = Basemap()
def make_scatter(x,y):
return Scatter(
x=x,
y=y,
mode='lines',
line=Line(color="black"),
name=' ' # no name on hover
)
def polygons_to_traces(poly_paths, N_poly):
'''
pos arg 1. (poly_paths): paths to polygons
pos arg 2. (N_poly): number of polygon to convert
'''
traces = [] # init. plotting list
for i_poly in range(N_poly):
poly_path = poly_paths[i_poly]
# get the Basemap coordinates of each segment
coords_cc = np.array(
[(vertex[0],vertex[1])
for (vertex,code) in poly_path.iter_segments(simplify=False)]
)
# convert coordinates to lon/lat by 'inverting' the Basemap projection
lon_cc, lat_cc = m(coords_cc[:,0],coords_cc[:,1], inverse=True)
# add plot.ly plotting options
traces.append(make_scatter(lon_cc,lat_cc))
return traces
def get_coastline_traces():
poly_paths = m.drawcoastlines().get_paths() # coastline polygon paths
N_poly = 91 # use only the 91st biggest coastlines (i.e. no rivers)
return polygons_to_traces(poly_paths, N_poly)
def get_country_traces():
poly_paths = m.drawcountries().get_paths() # country polygon paths
N_poly = len(poly_paths) # use all countries
return polygons_to_traces(poly_paths, N_poly)
traces_cc = get_coastline_traces()+get_country_traces()
data = Data([trace1]+traces_cc)