I'm trying to plot image I treated in dataframes. I need to add geometry to it in order to plot it with a background. I should have used GeoPandas and geodataframes in the first place.
I have arrays of temperatures that I want to plot with an OSM background.
I got geometry of my first images (non treated) with :
ds = gdal.Open(path)
width = ds.RasterXSize
height = ds.RasterYSize
gt = ds.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5]
maxx = gt[0] + width*gt[1] + height*gt[2]
maxy = gt[3]
COORD_4326 = ((maxy,minx), (maxy,maxx), (miny,maxx),(miny,minx))
from shapely.geometry import Polygon
geometry = Polygon(COORD_4326)
My maps are first reshaped :
carte= np.reshape(df_clean, (8, 19))
to look like this :
[[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan]
[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan]
[ nan nan nan nan nan nan nan
nan nan nan nan 282.95377 282.95377 282.7007
282.7007 nan nan nan nan]
[ nan nan nan nan nan 282.9896 nan
nan 283.2407 283.2407 282.73178 282.63565 282.63565 282.73056
282.81693 282.81693 nan nan nan]
[ nan 283.01483 282.85852 nan nan 282.84497 282.78113
282.78113 nan nan 282.75024 282.75983 282.75983 282.97836
283.19852 283.19852 282.9773 282.9773 nan]
[ nan nan nan 282.63535 282.63535 282.70605 282.7924
282.7924 282.84875 282.84875 282.89798 282.93933 282.93933 283.3523
283.3246 283.3246 283.08267 283.08267 282.97372]
[ nan nan nan nan nan 283.019 283.15433
283.15433 283.32382 283.25085 283.25085 283.02994 283.02994 283.25986
283.40384 283.40384 283.4139 283.22742 nan]
[ nan nan nan nan nan nan 283.3171
283.3171 283.27655 283.29312 283.29312 283.17972 283.17972 nan
283.3627 283.3627 nan nan nan]]
[[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan]
[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan]
[ nan nan nan nan nan nan nan
nan nan nan nan 291.4486 291.4486 291.57678
291.57678 nan nan nan nan]
[ nan nan nan nan nan 291.24075 nan
nan 290.45227 290.45227 291.07333 291.3181 291.3181 291.7418
291.95486 291.95486 nan nan nan]
[ nan 293.93753 293.22678 nan nan 292.0171 291.10632
291.10632 nan nan 291.35693 291.68976 291.68976 292.26202
292.40176 292.40176 292.5333 292.5333 nan]
[ nan nan nan 293.52945 293.52945 292.6911 292.16772
292.16772 291.9472 291.9472 291.95898 292.39578 292.39578 292.83185
293.06046 293.06046 292.99036 292.99036 292.5335 ]
[ nan nan nan nan nan 293.9402 293.34418
293.34418 292.8702 292.73587 292.73587 292.94626 292.94626 293.2858
293.806 293.806 293.82635 293.15494 nan]
[ nan nan nan nan nan nan 294.38535
294.38535 293.9531 293.64023 293.64023 293.66025 293.66025 nan
294.1622 294.1622 nan nan nan]]
[[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan]
[ nan nan nan nan nan nan nan
nan nan nan nan nan nan nan
nan nan nan nan nan]
[ nan nan nan nan nan nan nan
nan nan nan nan 294.94705 294.94705 294.67136
294.67136 nan nan nan nan]
[ nan nan nan nan nan 294.36224 nan
nan 294.2725 294.2725 294.73013 294.85117 294.85117 295.1364
295.24808 295.24808 nan nan nan]
[ nan 297.26715 296.6732 nan nan 295.52042 295.1569
295.1569 nan nan 295.03714 295.31192 295.31192 295.6354
296.02383 296.02383 296.55234 296.55234 nan]
[ nan nan nan 297.23962 297.23962 296.67877 295.68262
295.68262 295.55432 295.55432 295.43942 295.7421 295.7421 296.38208
296.94592 296.94592 296.77542 296.77542 296.41263]
[ nan nan nan nan nan 297.64557 297.0059
297.0059 296.59274 296.4287 296.4287 296.71677 296.71677 297.22598
297.6837 297.6837 297.79544 297.21875 nan]
[ nan nan nan nan nan nan 298.34683
298.34683 297.8778 297.72574 297.72574 297.92825 297.92825 nan
298.48676 298.48676 nan nan nan]]
I then plot it with matplotlib with Python on VSCode on Linux on a virtual machine. Everything is up to date. All the images have the exact same location and shape.
I'd like to add geometry column or information to it to be able to plot it with background.
With :
map_gdf = geopandas.GeoDataFrame(carte, geometry = COORD_4326, crs = "EPSG:4326")
I get :
TypeError: not all arguments converted during string formatting
or :
map_gdf = geopandas.GeoDataFrame(carte, geometry = geometry, crs = "EPSG:4326")
I get :
ValueError: Unknown column POLYGON ((51.39166666206273 4.083333332967527, 51.39166666206273 4.241666666286676, 51.32499999540204 4.241666666286676, 51.32499999540204 4.083333332967527, 51.39166666206273 4.083333332967527))
If I add my geometry to my dataframe beforeward the geometry of my GeoDataFrame ends up empty because before reshaping my dataframe each row is a pixel. If I try to add it to my reshaped dataframe, I have this error :
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
My question is : How can I add a geometry when I create my geodataframe or add it to my array ?