diff --git a/eodal/operational/mapping/mapper.py b/eodal/operational/mapping/mapper.py index 3893a448..8b4d0a6e 100644 --- a/eodal/operational/mapping/mapper.py +++ b/eodal/operational/mapping/mapper.py @@ -556,6 +556,11 @@ def _get_observation( res["sensing_date"] = scenes_date["sensing_date"].values[0] res["scene_id"] = scenes_date["scene_id"].values[0] res['sensing_time'] = scenes_date['sensing_time'].values[0] + # make sure the result is projected into the target EPSG code, otherwise + # the resulting GeoDataFrame contains wrong coordinates, i.e., the + # coordinates were not projected into the target CRS + if res.crs.to_epsg() != scenes_date.target_crs.unique()[0]: + res.to_crs(epsg=scenes_date.target_crs.unique()[0], inplace=True) # or the feature else: if sensor.lower() == 'sentinel1': diff --git a/eodal/operational/mapping/sentinel2.py b/eodal/operational/mapping/sentinel2.py index 99fb581c..5307203c 100644 --- a/eodal/operational/mapping/sentinel2.py +++ b/eodal/operational/mapping/sentinel2.py @@ -205,6 +205,10 @@ def _read_multiple_scenes( if feature_gdf.empty: continue res = feature_gdf + # make sure the coordinates are reprojected if necessary + if res.crs.to_epsg() != scenes_date.target_crs.unique()[0]: + res.to_crs(epsg=scenes_date.target_crs.unique()[0], inplace=True) + if isinstance(candidate_scene, (pd.Series, gpd.GeoSeries)): res["sensing_date"] = candidate_scene["sensing_date"] res['sensing_time'] = candidate_scene['sensing_time']