Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lecture des métadonnées des fichiers de calcul #363

Merged
merged 34 commits into from
Jun 1, 2023

Conversation

lowzonenose
Copy link
Contributor

@lowzonenose lowzonenose commented Mar 27, 2023

Lecture des métadonnées de calcul dans les formats suivants :

  • KML
  • GeoJSON
  • GPX

Les métadonnées sont issues d'un export d'un calcul, et se présentent sous la forme suivante :

  • KML
<ExtendedData>
   <Data name="geoportail:compute">{...}</Data></ExtendedData>
</ExtendedData>
  • GeoJSON
"geoportail:compute":{...}
  • GPX
<metadata>
	<extensions>
		<data name="geoportail:compute">{...}</data>
	</extensions>
</metadata>

Le contenu de la balise geoportail:compute est toujours en json.

Les métadonnées de calcul contiennent les données en fonction du type de calcul :
extrait jsdoc)

    /**
     * Response to the export of the route calculation
     * 
     * @example
     * // GeoJSON format
     * {
     *   "type":"FeatureCollection",
     *   "features":[...],
     *   "geoportail:compute":{
     *     "points":[ [2.588024210134887, 48.84192678293002 ] ],
     *     "transport":"Voiture",
     *     "exclusions":[...],
     *     "computation":"fastest",
     *     "results":{ <!-- Service --> }
     * }
     * @see {@link https://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.RouteResponse.html|Service}
     */


     /**
     * Response to the export of the isochron calculation
     * 
     * @example
     * // GeoJSON format
     * {
     *    "type":"FeatureCollection",
     *    "features":[...],
     *    "geoportail:compute":{
     *       "transport":"Pieton",
     *       "computation":"time",
     *       "exclusions":[
     *         
     *       ],
     *       "direction":"departure",
     *       "point":[ 2.587835382718464, 48.84192678293002 ],
     *       "results":{
     *          "message":"",
     *          "id":"",
     *          "location":{
     *             "x":"2.587835382718464",
     *             "y":"48.84192678293002"
     *          },
     *          "srs":"EPSG:4326",
     *          "geometry":{
     *             "type":"Polygon",
     *             "coordinates":[[...]]
     *          },
     *         "time":180,
     *         "distance":""
     *      }
     *    }
     * }
     * @see {@link https://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.IsoCurveResponse.html|Service}
     */


     /**
     * Response to the export of the profile calculation
     * 
     * @example
     * // GeoJSON format
     * {
     *  "type":"FeatureCollection",
     *   "features":[
     *      {
     *         "type":"Feature",
     *        "geometry":{
     *            "type":"LineString",
     *            "coordinates":[...]
     *         },
     *         "properties":null
     *      }
     *   ],
     *   "geoportail:compute":{
     *      "greaterSlope":76,
     *      "meanSlope":7,
     *      "distancePlus":84,
     *      "distanceMinus":48,
     *     "ascendingElevation":5,
     *     "descendingElevation":-4,
     *      "altMin":"92,04",
     *     "altMax":"96,71",
     *      "distance":163,
     *      "unit":"m",
     *      "points":[
     *        {
     *            "z":95.68,
     *           "lon":2.5874,
     *            "lat":48.8419,
     *            "acc":2.5,
     *            "dist":0,
     *            "slope":0
     *         }
     *      ]
     *   }
     *}
     * @see {@link https://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.AltiResponse.html|Service}
     */

Liste des exemples de validation :

Cliquer sur le bouton "Afficher" pour visualiser les meta

samples-src/pages/openlayers/Formats/pages-ol-geojsonextended-bundle-default.html
samples-src/pages/openlayers/Formats/pages-ol-kmlextended-bundle-default.html
samples-src/pages/openlayers/Formats/pages-ol-gpxextended-bundle-default.html

@lowzonenose
Copy link
Contributor Author

lowzonenose commented Apr 1, 2023

Mettre en place le workflow sur l'import d'un fichier de calcul

  • rechercher si le fichier KML, GeoJSON ou GPX est un fichier de calcul avec la lecture de la balise 'geoportail:compute'
  • modifier la property 'gpResultLayerId' -> layerimport:COMPUTE
  • ajouter les options du calcul dans le contrôle

Recette

Importer des fichiers de calcul suivants :

  • samples-src/resources/data/geojson/export-iso.geojson
  • samples-src/resources/data/geojson/export-profil.geojson
  • samples-src/resources/data/geojson/export-route.geojson
  • samples-src/resources/data/gpx/export-iso.gpx
  • samples-src/resources/data/gpx/export-profil.gpx
  • samples-src/resources/data/gpx/export-route.gpx
  • samples-src/resources/data/kml/export-iso.kml
  • samples-src/resources/data/kml/export-profil.kml
  • samples-src/resources/data/kml/export-route.kml

Puis, vérifier les points suivants :

  • affichage du tracé avec le style
  • ouvrir le contrôle, et vérifier qu'il est initialisé avec les bons paramétrés
  • tester les interactions entre le tracé et le contrôle
geojson gpx kml
route 🟢 🟢 🟢
isocurve 🟢 🟢 🟢
profile 🟢 (1) 🟢 (1) 🟢 (1)

(1) 🟢 résolu ! BUG le menu des outils de mesures doit être ouvert au préalable de l'import

@elias75015
Copy link
Contributor

Review fonctionnelle :

  • Quelques pétouilles de style à la marge : non bloquant

En KML
image

En GPX/GeoJSON
image

  • Le contrôle d'itinéraire ne se met pas toujours correctement à jour quand le panel "détails" d'un itinéraire existant est ouvert et qu'un nouvel itinéraire est importé (coordonnées) ou que l'itinéraire existant est supprimé : non bloquant

image

  • Différence de comportement entre le control d'isochrone et d'iti : un import isochrone remplace le calcul d'isochrone ajouté à la carte. Un import de route s'ajoute comme nouvelle couche : pas forcément bloquant, mais si le comportement peut être homogénéiser c'est mieux

  • Le réimport du croquis KML issu de cet exemple (samples-src/openlayers/Formats/pages-ol-kmlextended-bundle-default.html) ne fonctionne pas : ne sais pas si c'est bloquant...

@elias75015
Copy link
Contributor

elias75015 commented May 23, 2023

Nouvelle review rapide suite aux derniers fix.

Isochrone ✔️
Colorisation markers ✔️
Itinéraire 🔴

Détail des bugs rencontrés (import) :

1 - double markers après import direct route-export.kml (même problème import direct isochrone) :

Il y a deux fois des markers affichés lors d'un import de calcul de route

image

La preuve quand je mets l'itinéraire invisible, deux markers restent en place :

image

2 - Il manque les coordonnées dans le panel itinéraire après import direct sans rien avant

image

3 - Le problème des coordonnées non mis à jour est toujours là

a) Calcul d'un itinéraire

image

b) suivi d'un import : la distance, la durée, et le détail sont mis à jour, mais pas les coordonnées

image

var stageCoords = elementCoords.value;
var visible = (elementCoords.className === "GPlocationOriginVisible");
if (stageCoords !== null && stageCoords !== "" && visible) {
resultStageValue.innerHTML = stageCoords;

Check warning

Code scanning / CodeQL

DOM text reinterpreted as HTML

[DOM text](1) is reinterpreted as HTML without escaping meta-characters.
if (stageCoords !== null && stageCoords !== "" && visible) {
resultStageValue.innerHTML = stageCoords;
} else {
resultStageValue.innerHTML = document.getElementById(this._addUID("GPlocationOrigin_" + id)).value;

Check warning

Code scanning / CodeQL

DOM text reinterpreted as HTML

[DOM text](1) is reinterpreted as HTML without escaping meta-characters.
Copy link
Contributor

@elias75015 elias75015 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK pour moi

@elias75015 elias75015 merged commit 208eb11 into develop Jun 1, 2023
@elias75015 elias75015 deleted the feature/read-compute-extensions-format branch June 1, 2023 15:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants