我使用的是从地球引擎下载的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))
1条答案
按热度按时间uqxowvwt1#
这感觉更像是一个创可贴而不是一个实际的答案,但如果我旋转并翻转我的图像,它会在Map上的正确位置排成一行。
我已经编辑了我在初始问题,以显示这个答案
我使用了这两个numpy函数来实现这一点