全息视图与geoviews.tile_源导致轴s

2024-09-27 00:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将geoviews.tile_sources层与datashade层结合起来。这两个层各自产生正确的轴(见图片),但当合并(使用*)时,比例就会扭曲。在

import numpy as np
import pandas as pd
import holoviews as hv
from geoviews.tile_sources import EsriImagery
from holoviews.operation.datashader import datashade

hv.extension('bokeh')

lats = np.random.uniform(51.111, 51.222, 10000)
longs = np.random.uniform(1.31, 1.33, 10000)

df = pd.DataFrame({"latitude": lats, "longitude": longs})

points = hv.Points(df, ['longitude', 'latitude'])
shader = datashade(points)

EsriImagery * shader

Incorrect axis

但是,两个单独的图都是正确的:

^{pr2}$

enter image description here


Tags: fromimportasnprandomuniformpdholoviews
2条回答

HoloViews元素对数据的坐标系一无所知,而tile源是在墨卡托坐标系中定义的。所以当你覆盖高压点在平铺源上,它假设您的坐标已经在墨卡托坐标中。为了覆盖位于不同坐标系中的数据,您应该使用GeoViews元素,例如在您的例子中gv.Points,如{a1}所述。这将确保您的点正确解释为纬度/经度对,并且可以自动投影到与平铺源相同的坐标系中。在

您尝试将PlateCarree坐标系中的HoloViews对象与webmercator坐标系中的GeoViews对象合并,两者相差几百万倍。你可以通过改变高压点()至gv点(),它将是PlateCaree坐标中的GeoViews对象,当显示tile层时,GeoViews将投影到与tile层相同的坐标系中。你也可以考虑使用gv.项目点()在开始时只进行一次投影,而不是默认每次显示时都重新投影。在

相关问题 更多 >

    热门问题