我有一个 Geotiff,我在瓷砖地图上显示,但它稍微偏南。例如,在这个屏幕截图中,图像的边缘应该是国家边界所在的位置,但它有点偏南:
这是代码的相关部分:
tiff_rio_500 = rioxarray.open_rasterio('/content/mw/mw_dist_to_light_at_all_from_light_mask_mw_cut_s3_500.tif')
dataarray_500 = tiff_rio_500[0]
dataarray_500_meters = dataarray_500.copy()
dataarray_500_meters['x'], dataarray_500_meters['y'] = ds.utils.lnglat_to_meters(dataarray_500.x, dataarray_500.y)
hv_dataset_500_meters = hv.Dataset(dataarray_500_meters, name='nightlights', vdims='cumulative_cost')
hv_tiles_osm_bokeh = hv.element.tiles.OSM().opts(width=1000, height=800)
hv_image_500_meters_bokeh = hv.Image(hv_dataset_500_meters, kdims=['x', 'y'], vdims=['cumulative_cost'], rtol=1).opts(cmap='inferno_r')
hv_combined_osm_500_meters_bokeh = hv_tiles_osm_bokeh * hv_image_500_meters_bokeh
hv_combined_osm_500_meters_bokeh
你可以在 google colab 上看到 live notebook。
现在,当人们不将地图转换为 Web 墨卡托时,这不是常见的“一切都结束了”的问题。它几乎是完美的,但事实并非如此。
Geotiff 是一个地球引擎出口。这是它在 Earth Engine 中最初的样子(参见实时代码):
正如您所见,图像随处可见。
起初,我怀疑可能是导出出错了,或者谷歌地图瓦片集有些不同,但不是,如果我在 Windows 笔记本电脑上的 QGis 应用程序中打开相同的导出 Tiff 并在同一个 OSM 瓦片地图上查看它在 colab 笔记本中,它看起来不错:
好的,图像没有完美地遵循边界,但我知道为什么而且这不相关(我过度简化了国家边界几何)。关键是,它被投影到正确的位置。因此,基于此,tiff 包含正确的信息,它可以显示在与 OSM tilemap 中的边界相同的位置,但在我的 Holoviews-Datashader-Bokeh 项目中,它仍然略有偏差。
知道为什么会这样吗?