首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用datashader、holoview和bokeh进行地质映射的故障

用datashader、holoview和bokeh进行地质映射的故障
EN

Stack Overflow用户
提问于 2018-07-17 07:04:03
回答 1查看 1.3K关注 0票数 4

我试图将谷歌手机历史记录位置映射到地图上,使用全息视图、数据处理程序和bokeh。大多类似于在数据表网站中给出的例子。但是当我这样做的时候,地图覆盖就不能正常工作了,因为lat/long会被破坏。

代码语言:javascript
复制
import datashader as ds
import geoviews as gv
import holoviews as hv
from holoviews.operation.datashader import datashade, dynspread
from datashader import transfer_functions as tf
from colorcet import fire
hv.extension('bokeh')

> df2.head()

lat long
0   -37.7997515 144.9636466
1   -37.7997515 144.9636466
2   -37.7997369 144.9636036
3   -37.7997387 144.9636358
4   -37.7997515 144.9636466

它可以产生数据的图像,

代码语言:javascript
复制
ds_viz = ds.Canvas().points(df2,'lat','long')  
tf.set_background(tf.shade(ds_viz, cmap=fire),"black")

然而,当我试图用地图覆盖它时,它不起作用,

从bokeh.models导入WMTSTileSource

代码语言:javascript
复制
url = 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{Z}/{Y}/{X}.jpg'
tile_opts  = dict(width=1000,height=600,bgcolor='black',show_grid=False)
map_tiles  = gv.WMTS(url).opts(style=dict(alpha=0.5), plot=tile_opts)
points     = hv.Points(df2, kdims=['long','lat'])
trips = datashade(points, cmap=fire,width=1000, height=600)

map_tiles * trips

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-17 15:38:19

看起来你的点是龙,拉特,但你的地图是在网络墨卡托坐标,所以你需要将你的点投射到网络墨卡托,然后你覆盖它们。GeoViews提供了对预测的全面支持,但对于这种特殊情况,Datashader提供了特殊用途的函数datashader.utils.lnglat_to_meters。像这样的事情应该有效:

代码语言:javascript
复制
df2.loc[:, 'lon'], df.loc[:, 'lat'] = lnglat_to_meters(df2.lon,df2.lat)

投影可能很慢,因此您可能希望将生成的df2保存到Parquet文件中,这样您只需要执行一次。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51375153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档