I have satellite image that I want to convert into numpy array (and then to Pandas). I already know how to do that, but the problem is that it does not preserve the coordinate data.
This is how I do it now:
import xarray
src=rasterio.open('14072020.tif')
array = src.read()
pd.DataFrame(array.reshape([13,-1]).T)
I have also tried to follow this answer (keeping the coordinate system of raster files in the resulting raster file after operation with numpy) but I always get this error:
NameError: name 'gdal_array' is not defined
which does not allow me to open the image.
My end goal is to have Pandas table that contains the bands values together with the coordinate values.
-
Does this answer your question? Convert raster to CSV with lat, lon, and value columnssnowman2– snowman22021年04月22日 00:22:25 +00:00Commented Apr 22, 2021 at 0:22
2 Answers 2
You can use the open_rasterio
and to_dataframe
methods to accomplish that.
import rioxarray
rds = rioxarray.open_rasterio("file.tif")
rds.to_dataframe()
I would read with gdal and dump that to a numpy array. ReadAsArray().
Coordinates and projection are obtained using the GetGeotransform() SetGeotransform() and the GetProjection() and SetProjection() applied to the data set.
Example here. https://pcjericks.github.io/py-gdalogr-cookbook/raster_layers.html