1

我用数据着色器绘制了一张地理地图。一切正常,但地理投影似乎不正确。长度和纵横比不匹配,可能是因为没有设置地理投影?我的代码如下所示:

agg = ds.Canvas().points(df, 'lon',"lat")
karte=ds.tf.set_background(ds.tf.shade(agg, cmap=cc.fire,how="log"), "black")
utils.export_image(img=karte,filename='output', fmt=".png", background=None)

在此处输入图像描述

4

1 回答 1

2

那是一个好看的变形虫!:-)

Datashader 是一种通用工具,与地理数据无关。特别是,如果要将数据投影到其他坐标系中,则需要在调用 Datashader 之前对其进行投影;Datashader 所做的就是渲染它所提供的内容。

Datashader 确实包含一个实用函数,用于将经纬度数据投影到 Web 墨卡托 (datashader.utils.lnglat_to_meters) 的特殊情况,以方便使用 Web 墨卡托映射图块的绘图库,但如果您自己可视化数据 (没有覆盖在地图上)您甚至不需要该实用程序;裸露的经/纬度值应该没问题。

如果您想要一些特定的纵横比,您可以使用 Canvas 构造函数的参数来确定它。具体来说,将plot_heightand设置为plot_width您想要的任何图像大小,然后将 x_range 和 y_range 设置为该图像大小中您想要的数据空间范围(例如,经度和纬度范围,如xrange=(270, 290), yrange=(30,40))。

或者,您可以使用 hvplot.holoviz.org 或 holoviews.org 上的高级界面叠加到地图上,这将强制地理纵横比。

于 2021-12-14T19:19:14.073 回答