Displaying Paths with Geoviews

[亡魂溺海] 提交于 2019-12-24 08:48:01

问题


I'm trying to use geoviews to display a path. I can get it to display ONLY the points properly:

import numpy as np
import geoviews as gv
import cartopy.crs as ccrs
import pandas as pd

hv.extension('bokeh')

coord_system = ccrs.UTM(17)

userLine = [[ 501386.89237725, 3026047.23276743],
 [ 502233.40219658, 3030363.86891928],
 [ 497065.22714886, 3031309.6654351 ],
 [ 499260.08171301, 3027147.9437062 ],
 [ 494678.08475863, 3026891.08691589],
 [ 494971.32963864, 3025188.1383645 ],
 [ 496475.86909916, 3025394.03293946],
 [ 496061.07730504, 3026116.58492655],
 [ 497530.90995815, 3026357.00292598]]

line_pd = pd.DataFrame(userLine, columns=['Longitude', 'Latitude'])
pressure = pd.DataFrame(np.arange(0,401,np.ceil(401/len(userLine))), columns=['Pressure'])
windspeed = pd.DataFrame(np.arange(0,201,np.ceil(201/len(userLine))), columns=['Max_Wind_Speed'])
alldata = pd.concat([line_pd,pressure,windspeed], axis=1)

gvdata = gv.Dataset(alldata, kdims=['Pressure','Max_Wind_Speed','Longitude','Latitude'])
hover = HoverTool(tooltips=[("Longitude", "@Longitude"), ("Latitude", "@Latitude"), ("Pressure","@Pressure"),("Max Wind Speed","@Max_Wind_Speed")])

%%opts Points (size=10 cmap='inferno') [tools=[hover] color_index=4]
gvdata.to(gv.Points, kdims=['Longitude', 'Latitude'], vdims=['Pressure','Max_Wind_Speed'], crs=coord_system)

But what I really want is a path. However, when I try:

gvdata.to(gv.Path, kdims=['Longitude', 'Latitude'], crs=coord_system)

I get the error message DataError: None of the available storage backends were able to support the supplied data format.

I have tried reformatting the input data, but no success. I'm not sure what else I could be doing wrong.


回答1:


The .to method has the purpose of letting you easily group high-dimensional data. In this particular example you have only two dimensions (latitude and longitude) so there is no need to use .to. In your particular example this should be sufficient to construct the plot:

gv.Path([userLine], crs=coord_system)

Path types in HoloViews can be constructed using a list of arrays, dataframes or dictionary of columns, so this would also work:

line_pd = pd.DataFrame(userLine, columns=['Longitude', 'Latitude'])
gv.Path([line_pd], crs=coord_system)

Edit: In your expanded example the format that works for me is as follows:

%%opts Path (cmap='inferno') [tools=[hover] color_index='Max_Wind_Speed']
gv.Path([alldata], vdims=['Pressure','Max_Wind_Speed'], crs=coord_system)


来源:https://stackoverflow.com/questions/49198579/displaying-paths-with-geoviews

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!