Numpy dizisini raster'e dönüştürdükten sonra garip koordinatlar
NumPy dizisine ve sınırlayıcı kutu koordinatlarına sahibim. Bu cevaba göre rasterio kullanarak onu raster'e dönüştürmeye çalıştım ve raster olarak kaydetti, ancak rasterio.show'u kullandığımda koordinatlar çok yanlış.
Kullandığım komut dosyası bu:
bbox_coords_wgs84=[-101.7359960059834, 20.21904081937658, -100.5717967351885, 20.8312118894487]
#variables for the projection:
minx=bbox_coords_wgs84[0]
maxy=bbox_coords_wgs84[3]
pixel_size= 10
#according to the post on GIS SO:
import rasterio
from rasterio.transform import from_origin
transform=from_origin(minx,maxy,pixel_size,pixel_size)
crs_img='EPSG:4326'
with rasterio.open('test1.tif',
'w',
driver='GTiff',
height=ndvi.shape[0],
width=ndvi.shape[1],
count=1,
dtype=ndvi.dtype,
crs=crs_img,
nodata=None, # change if data has nodata value
transform=transform) as dst:
dst.write(ndvi, 1)
#display the results:
from matplotlib import pyplot
from rasterio.plot import show
src = rasterio.open('test1.tif')
show(src)

Gördüğünüz gibi, sayılar kesinlikle doğru koordinatlar değil.
Nihai hedefim: NumPy dizisini WGS84'e doğru bir şekilde yeniden yansıtabilmek.
* Bu gönderi, bu gönderi ile de ilgilidir
Yanıtlar
Bunun, kullandığınız yerde afin dönüşümü olan bir NumPy dizisini Reproject paketi olduğunu bildirmiyorsunuz.rasterio.transform.from_bounds
Gönderen rasterio.transform modülü
rasterio.transform.from_bounds (batı, güney, doğu, kuzey, genişlik, yükseklik)
Sınırlar, genişlik ve yükseklik verilen bir Afin dönüşümü döndürür.
Batı, güney, doğu, kuzey sınırları ve piksel sayısı olarak genişliği ve yüksekliği verilen bir coğrafi referanslı raster için Affine dönüşümü döndürür.
Ve
rasterio.transform.from_origin (batı, kuzey, xsize, ysize)
Sol üst ve piksel boyutları verilen bir Afin dönüşümü döndürür.
Sol üst köşesinin batı, kuzey koordinatları ve xsize, ysize piksel boyutları verildiğinde, coğrafi referanslı bir raster için bir Afin dönüşümü döndürür.
Aynı şey değil ve sonuçlar farklı
rasterio.transform.from_bounds( -101.7359960059834,20.21904081937658,-100.5717967351885,20.8312118894487,1103,2039)
Affine(0.0010554843796871222, 0.0, -101.7359960059834,
0.0, -0.0003002310299519955, 20.8312118894487)
rasterio.transform.from_origin(-101.7359960059834,20.8312118894487,10,10)
Affine(10.0, 0.0, -101.7359960059834,
0.0, -10.0, 20.8312118894487)
Yeni
Sınırdan rasterin dört köşesi (genişlik = 1103, yükseklik = 2039)
fig,ax = plt.subplots()
ax.plot(0,0,'ro')
ax.plot(1103,0,'bo')
ax.plot(0,2039,'go')
ax.plot(1103,2039,'co')
plt.show()

Dönüşüm
trans = rasterio.transform.from_bounds(-101.7359960059834,20.21904081937658-100.5717967351885,20.8312118894487,1103,2039)
trans*(0,0)
(-101.7359960059834, 20.8312118894487)
trans*(1103,0)
(-100.5717967351885, 20.8312118894487)
trans*(0,2039)
(-101.7359960059834, 20.21904081937658)
trans*(1103,2039)
(-100.5717967351885, 20.21904081937658)
fig,ax = plt.subplots()
ax.plot(*(trans*(0,0)),'ro')
ax.plot(*(trans*(1103,0)),'bo')
ax.plot(*(trans*(0,2039)),'go')
ax.plot(*(trans*(1103,2039)),'co')
plt.show()
