python-3.x 在叶上旋转的Geotif数据图

gmxoilav  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(122)

我使用的是从地球引擎下载的geotif图像。当从地球引擎下载图像时,我指定了“EPSG:4326”的CRS。
根据这篇文章,所有输入到folium get的东西都将在'EPSG:4326' https://gis.stackexchange.com/questions/362582/coordinate-system-mismatch-in-folium中传递
数据当前是水平绘制的,需要垂直绘制(见下图比较)。作为参考点,道路应位于图像的东侧。目前在南侧。
Improper Rotation
Proper Rotation
这是我正在使用的代码。有人能看出我做错了什么吗?

import folium
import rasterio

in_path = r"filepath"

with rasterio.open(in_path) as src:
    
    img = src.read([4, 3, 2]).astype(np.float32)
    min_lon, min_lat, max_lon, max_lat = src.bounds
    src_crs = src.crs['init'].upper()

bounds_fin = [[min_lat, min_lon], [max_lat, max_lon]]

centre_lon = bounds_fin[0][1] + (bounds_fin[1][1] - bounds_fin[0][1])/2
centre_lat = bounds_fin[0][0] + (bounds_fin[1][0] - bounds_fin[0][0])/2

m = folium.Map(location=[centre_lat, centre_lon],
                    zoom_start = 10,)

#add this to rotate and flip the image!!!! This is the answer to the initial question
img = np.rot90(img, k=3, axes=(2, 1))
img = np.flip(img, axis = 1)

m.add_child(folium.raster_layers.ImageOverlay(img.transpose(2, 1, 0), opacity=1.0, 
                                 bounds = bounds_fin))
uqxowvwt

uqxowvwt1#

这感觉更像是一个创可贴而不是一个实际的答案,但如果我旋转并翻转我的图像,它会在Map上的正确位置排成一行。
我已经编辑了我在初始问题,以显示这个答案
我使用了这两个numpy函数来实现这一点

img = np.rot90(img, k=3, axes=(2, 1))

img = np.flip(img, axis = 1)

相关问题