-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Maxime Fourquaux
committed
Mar 29, 2024
1 parent
ff780aa
commit 8005077
Showing
9 changed files
with
339 additions
and
333 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,44 @@ | ||
# Génération automatique d'un masque d'élévation avec Python | ||
Le but du script est de générer de manière automatique un masque azimuth-élévation depuis un geotiff et une coordonnée définie au préalable. | ||
|
||
## Exécution du code | ||
### Donnée de base | ||
Afin de générer un masque personnalisé plusieurs variable sont disponibles afin de définir : | ||
- emplacement du Geotiff, 'ImgOri' : grille raster avec information de l'altitude dans la première bande | ||
- emplacement du Geotiff, 'geotiff_crop' : extrait, ce fichier est temporaire | ||
- taille du demi carrée de coupe, 'sizeCut' : par rapport au point de référence un Geotif de 16km de coté est extrait avec comme centre le point d'étude | ||
- défnition de l'interval de filtrage des données, 'intervalFilter', en degré | ||
|
||
|
||
La génération du masque d'obstruction (élévation) est réalisée sur la base d'un Geotiff. | ||
```python | ||
#general information on the reference model and image extraction | ||
ImgOri = 'SRC_IMG\\SUISSE_ALL_V2.tif' | ||
geoTiff_crop = 'SRC_IMG\\geoTiff_Crop.tif' | ||
#half the length of the cutting right-of-way | ||
sizeCut=8000.00 | ||
#define the step for filter the observation | ||
intervalFilter=1.0 | ||
``` | ||
|
||
### Configuration de l'API | ||
Le script python est configuré afin de fonctionner en Backend avec une solution [FastAPI](https://fastapi.tiangolo.com/). | ||
|
||
>[!IMPORTANT] | ||
>La commande FastAPI doit être lancé dans le répertoire backend où se trouve le fichier 'main.py'. | ||
>Commande à exécuter dans un terminal : 'uvicorn main:app --reload'. | ||
### Les données de base pour le calcul | ||
|
||
L'API d'extraction du masque d'observation fonctionne avec | ||
``` | ||
{ | ||
"east": "2581190", | ||
"nord": "1119010", | ||
"i": "1.7", | ||
"minElevation": "5", | ||
"elevation": "1210" | ||
} | ||
``` | ||
|
||
|
||
# Génération automatique d'un masque d'élévation avec Python | ||
Le but du script est de générer de manière automatique un masque azimuth-élévation depuis un geotiff et une coordonnée définie au préalable. | ||
|
||
## Exécution du code | ||
### Donnée de base | ||
Afin de générer un masque personnalisé plusieurs variable sont disponibles afin de définir : | ||
- emplacement du Geotiff, 'ImgOri' : grille raster avec information de l'altitude dans la première bande | ||
- emplacement du Geotiff, 'geotiff_crop' : extrait, ce fichier est temporaire | ||
- taille du demi carrée de coupe, 'sizeCut' : par rapport au point de référence un Geotif de 16km de coté est extrait avec comme centre le point d'étude | ||
- défnition de l'interval de filtrage des données, 'intervalFilter', en degré | ||
|
||
|
||
La génération du masque d'obstruction (élévation) est réalisée sur la base d'un Geotiff. | ||
```python | ||
#general information on the reference model and image extraction | ||
ImgOri = 'SRC_IMG\\SUISSE_ALL_V2.tif' | ||
geoTiff_crop = 'SRC_IMG\\geoTiff_Crop.tif' | ||
#half the length of the cutting right-of-way | ||
sizeCut=8000.00 | ||
#define the step for filter the observation | ||
intervalFilter=1.0 | ||
``` | ||
|
||
### Configuration de l'API | ||
Le script python est configuré afin de fonctionner en Backend avec une solution [FastAPI](https://fastapi.tiangolo.com/). | ||
|
||
>[!IMPORTANT] | ||
>La commande FastAPI doit être lancé dans le répertoire backend où se trouve le fichier 'main.py'. | ||
>Commande à exécuter dans un terminal : 'uvicorn main:app --reload'. | ||
### Les données de base pour le calcul | ||
|
||
L'API d'extraction du masque d'observation fonctionne avec | ||
``` | ||
{ | ||
"east": "2581190", | ||
"nord": "1119010", | ||
"i": "1.7", | ||
"minElevation": "5", | ||
"elevation": "1210" | ||
} | ||
``` | ||
|
||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,49 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on Wed Mar 6 16:28:38 2024 | ||
@author: fschmidt | ||
""" | ||
|
||
|
||
from fastapi import FastAPI | ||
from pydantic import BaseModel | ||
from fastapi.middleware.cors import CORSMiddleware | ||
import FUNCTION as mo | ||
|
||
#general information on the reference model and image extraction | ||
ImgOri = 'SRC_IMG\\SUISSE_ALL_V2.tif' | ||
geoTiff_crop = 'SRC_IMG\\geoTiff_Crop.tif' | ||
#half the length of the cutting right-of-way | ||
sizeCut=8000.00 | ||
#define the step for filter the observation | ||
intervalFilter=1.0 | ||
|
||
app = FastAPI() | ||
|
||
# Configuration CORS | ||
app.add_middleware( | ||
CORSMiddleware, | ||
allow_origins=["*"], # Autorise les requêtes depuis n'importe quel origine (à ajuster selon vos besoins) | ||
allow_credentials=True, | ||
allow_methods=["*"], | ||
allow_headers=["*"]) | ||
|
||
class SiteInformation(BaseModel): | ||
east: float | ||
nord: float | ||
i: float | ||
minElevation :float | ||
elevation : float | ||
|
||
@app.post("/") | ||
async def generationElevation(siteInformation: SiteInformation): | ||
print(siteInformation) | ||
leftHighPoint, rightLowPoint =mo.cuttingArea(siteInformation,sizeCut) | ||
mo.CutGeotiff(ImgOri,geoTiff_crop,leftHighPoint,rightLowPoint) | ||
siteInformation.elevation=mo.surchHeightSite(geoTiff_crop,siteInformation) | ||
imgGeoRefInformation, imageMatrix = mo.gdalinfoImage(geoTiff_crop) | ||
polarcoordinate=mo.PolarCoordinateCenterView(siteInformation, imgGeoRefInformation, imageMatrix) | ||
MasqueElevation=mo.FilterPolarcoordinate(polarcoordinate,siteInformation.minElevation,intervalFilter) | ||
print(siteInformation.elevation) | ||
return MasqueElevation | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on Wed Mar 6 16:28:38 2024 | ||
@author: fschmidt | ||
""" | ||
|
||
|
||
from fastapi import FastAPI | ||
from pydantic import BaseModel | ||
from fastapi.middleware.cors import CORSMiddleware | ||
import FUNCTION as mo | ||
|
||
#general information on the reference model and image extraction | ||
ImgOri = 'SRC_IMG\\SUISSE_ALL_V2.tif' | ||
geoTiff_crop = 'SRC_IMG\\geoTiff_Crop.tif' | ||
#half the length of the cutting right-of-way | ||
sizeCut=8000.00 | ||
#define the step for filter the observation | ||
intervalFilter=1.0 | ||
|
||
app = FastAPI() | ||
|
||
# Configuration CORS | ||
app.add_middleware( | ||
CORSMiddleware, | ||
allow_origins=["*"], # Autorise les requêtes depuis n'importe quel origine (à ajuster selon vos besoins) | ||
allow_credentials=True, | ||
allow_methods=["*"], | ||
allow_headers=["*"]) | ||
|
||
class SiteInformation(BaseModel): | ||
east: float | ||
nord: float | ||
i: float | ||
minElevation :float | ||
elevation : float | ||
|
||
@app.post("/") | ||
async def generationElevation(siteInformation: SiteInformation): | ||
print(siteInformation) | ||
leftHighPoint, rightLowPoint =mo.cuttingArea(siteInformation,sizeCut) | ||
mo.CutGeotiff(ImgOri,geoTiff_crop,leftHighPoint,rightLowPoint) | ||
siteInformation.elevation=mo.surchHeightSite(geoTiff_crop,siteInformation) | ||
imgGeoRefInformation, imageMatrix = mo.gdalinfoImage(geoTiff_crop) | ||
polarcoordinate=mo.PolarCoordinateCenterView(siteInformation, imgGeoRefInformation, imageMatrix) | ||
MasqueElevation=mo.FilterPolarcoordinate(polarcoordinate,siteInformation.minElevation,intervalFilter) | ||
print(siteInformation.elevation) | ||
return MasqueElevation |
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters