Author: fdesbois Date: 2012-08-02 17:29:09 +0200 (Thu, 02 Aug 2012) New Revision: 348 Url: http://forge.codelutin.com/repositories/revision/sammoa/348 Log: #1203 : define export SHP Modified: trunk/src/site/rst/import-export.rst Modified: trunk/src/site/rst/import-export.rst =================================================================== --- trunk/src/site/rst/import-export.rst 2012-08-02 15:28:55 UTC (rev 347) +++ trunk/src/site/rst/import-export.rst 2012-08-02 15:29:09 UTC (rev 348) @@ -38,10 +38,6 @@ Ces fichiers sont importés depuis l'édition d'une campagne. Toutes les données sont enregistrés en base sauf les fichiers shp. -Note - En version 0.3 les fichiers sont importés depuis la configuration et ne sont - pas enregistrés en base de données. - Il y a deux import : - strates : contient la liste des strates et leurs secteurs @@ -109,11 +105,8 @@ ~~~~~~~~~~~~~~~~~~ L'import des observateurs est possible depuis l'interface d'édition d'une -campagne. +campagne. -Note - En version 0.3 le fichier est importé depuis le menu "Data">"Import observer". - Le fichier doit être encodé en UTF-8. Le caractère de séparation est le ";". Le fichier des observateurs doit contenir les en-têtes suivantes :: @@ -131,11 +124,8 @@ ~~~~~~~~~~~~~ L'import des observateurs est possible depuis l'interface d'édition d'une -région. +région. -Note - En version 0.3 le fichier est importé depuis le menu "Data">"Import observer". - Le fichier doit être encodé en UTF-8. Le caractère de séparation est le ";". Le fichier des observateurs doit contenir les en-têtes suivantes :: @@ -154,13 +144,278 @@ L'export se fera via une interface dédiée accessible depuis l'écran d'accueil. -Deux types de SHP peuvent être exportés : +Trois types de SHP peuvent être exportés : -- Vol : conditions d'observations, détails des routes et coordonnées GPS du +- Points GPS : ensemble des points GPS capturés associés au vol +- Effort : conditions d'observations, détails des routes et coordonnées GPS du tracée de l'avion. - Observation : observations et coordonnées GPS des points sur lesquels ont été effectuées ces observations. +Points GPS +~~~~~~~~~~ + +On effectue un export des points GPS à partir d'une campagne sur une période (date de début, date de fin) encadrée par +celle de la campagne + +On récupère ainsi une liste de vols avec leurs points GPS capturés + +Chaque point est une ligne du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP. + +Voici les colonnes du fichier DBF : + +- REGION : Code de la région + geoPoint.flight.campaign.region.code +- CAMPAIGN : Code de la campagne + geoPoint.flight.campaign.code +- FLIGHT : Numéro de vol + geoPoint.flight.flightNumber +- COMPUTER : Identifiant du système + geoPoint.flight.systemId +- DATE : Date d'enregistrement du poin + geoPoint.recordTime +- HHMMSS : Heure d'enregistrement du point + format(geoPoint.recordTime, "HHmmss") +- LAT : Latitude du point GPS + geoPoint.latitude +- LON : Longitude du point GPS + geoPoint.longitude +- SPEED : Vitesse de l'avion à ce point GPS + geoPoint.speed +- ALTITUDE : Altitude de l'avion à ce point GPS + geoPoint.altitude + +Effort +~~~~~~ + +On effectue un export d'efforts à partir d'une campagne, d'une période (date de début, date de fin) encadrée par celle de la +campagne et d'une sélection de strates. On peut également filtrer sur les types de parcours (LEG, TRANSIT, CIRCLE_BACK). + +On récupère ainsi une liste de vols et pour chacun des vols, sa liste de parcours sur les strates sélectionnées pour les LEG. + +Chaque parcours est une ligne d'effort du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP. + +Voici les colonnes du fichier DBF : + +- ROUTE_TYPE : Type de parcours (LEG, TRANSIT, CIRCLE_BACK) + route.routeType +- REGION : Code de la région + route.flight.campaign.region.code +- CAMPAIGN : Code de la campagne + route.flight.campaign.code +- SECTOR* : Numéro du secteur + route.transectFlight.transect.strate.sector.sectorNumber +- STRATE_TYPE* : Type de strate + route.transectFlight.transect.strate.strateType +- STRATE* : Code de la strate + route.transectFlight.transect.strate.code +- TRANSECT* : Code du transect + route.transectFlight.transect.name +- PASSAGE* : Numéro de passage + route.transectFlight.crossingNumber +- FLIGHT : Numéro de vol + route.flight.flightNumber +- COMPUTER : Identifiant du système + route.flight.systemId +- EFFORT_GROUP* : Identifiant du group d'effort + "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId +- EFFORT* : Identifiant de l'effort + "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId +- DATE : Date du parcours/segment + route.beginTime +- HHMMSS : Heure du parcours/segment + format(route.beginTime, "HHmmss") +- SEA_STATE : Etat de la mer + route.seaState +- SWELL : Houle + route.swell +- TURBIDITY : Turbidité + route.turbidity +- SKY_GLINT : Transparence + route.skyGlint +- GLARE_FROM : Eblouissement de + route.glareFrom +- GLARE_TO : Eblouissement à + route.glareTo +- GLARE_SEVERITY : Intensité d'éblouissement + route.glareSeverity +- GLARE_UNDER : + route.glareUnder +- CLOUD_COVER : Couverture nuageuse + route.cloudCover +- SUBJECTIVE : Détectabilité + route.subjectiveConditions +- UNEXP_LEFT : Nombre d'observations à gauche (pour les exocet par exemple) + route.unexpectedLeft +- UNEXP_RIGHT : Nombre d'observations à droite (pour les exocet par exemple) + route.unexpectedRight +- LEFT_REAR : Observateur à gauche + route.observerPosition[FRONT_LEFT].observer.initials +- RIGHT_REAR : Observateur à droite + route.observerPosition[FRONT_RIGHT].observer.initials +- CENTER : Observateur au centre + route.observerPosition[NAVIGATOR].observer.initials +- LAT : Latitude du point GPS + geoPoint.latitude +- LON : Longitude du point GPS + geoPoint.longitude +- SPEED : Vitesse de l'avion à ce point GPS + geoPoint.speed +- ALTITUDE : Altitude de l'avion à ce point GPS + geoPoint.altitude +- GPS_TIME : Heure d'enregistrement du point (rarement différente de celle du parcours) + format(geoPoint.recordTime, "HHmmss") +- AIRCRAFT : Immatriculation de l'avion + route.flight.planeImmatriculation +- COMMENT : Commentaires + route.comment + +(*) uniquement pour un parcours de type LEG, sinon la cellule sera vide + +Observation +~~~~~~~~~~~ + +On effectue un export des observations à partir d'une campagne, d'une période (date de début, date de fin) encadrée par celle de la +campagne, d'une sélection de strates et d'une sélection d'espèces. On peut également filtrer sur les types de parcours +(LEG, TRANSIT, CIRCLE_BACK). + +On récupère ainsi une liste de vols et pour chacun des vols, sa liste de parcours sur les strates sélectionnées pour les LEG. +Grâce à la date, on retrouve les observations pour ces parcours. + +Chaque parcours est une ligne d'observation du fichier DBF à exporter, et correspond à un point graphique sur le fichier SHP. + +Voici les colonnes du fichier DBF : + +- REGION : Code de la région + observation.flight.campaign.region.code +- CAMPAIGN : Code de la campagne + observation.flight.campaign.code +- SECTOR* : Numéro du secteur + route.transectFlight.transect.strate.sector.sectorNumber +- STRATE_TYPE* : Type de strate + route.transectFlight.transect.strate.strateType +- STRATE* : Code de la strate + route.transectFlight.transect.strate.code +- TRANSECT* : Code du transect + route.transectFlight.transect.name +- PASSAGE* : Numéro de passage + route.transectFlight.crossingNumber +- FLIGHT : Numéro de vol + route.flight.flightNumber +- COMPUTER : Identifiant du système + route.flight.systemId +- EFFORT_GROUP* : Identifiant du group d'effort + "G" + BEGIN route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId +- EFFORT* : Identifiant de l'effort + "L" + route.effortNumber + "-" + route.flight.flightNumber + "-" + route.flight.systemId +- OBSERVATION : Identifiant de l'observation + "O" + observation.observationNumber + "-" + observation.flight.flightNumber + "-" + observation.flight.systemId +- DATE : Date de l'observation + observation.beginTime +- HHMMSS : Heure de l'observation + format(observation.beginTime, "HHmmss") +- TAXON : Type d'espèce + observation.species.type +- GROUP : Groupe de l'espèce + observation.species.groupName +- FAMILY : Famille de l'espèce + observation.species.family +- SPECIES : Code de l'espèce + observation.species.code +- SPECIES_NAME : Nom commun de l'espèce + observation.species.commonName +- SPECIES_LATIN : Nom latin de l'espèce + observation.species.latinName +- POD_SIZE : Taille des groupes + observation.podSize +- AGE : + observation.age +- DEC_ANGLE : Angle ou Bande + observation.decAngle +- CUE : Détection, signal visuel + observation.cue +- BEHAVIOUR : Comportement + observation.behaviour +- SWIM_DIR : Direction de nage + observation.swimDir +- CALVES : Nombre de jeunes + observation.calves +- PHOTO : Des photos ont été prises + observation.photo +- OBSERVER : Initiales de l'observateur + observation.observerPosition.observer.initials +- SIDE : Position de l'observateur (L : LEFT, R : RIGHT, C : CENTER) + observation.observerPosition.observer.position +- LAT : Latitude du point GPS + geoPoint.latitude +- LON : Longitude du point GPS + geoPoint.longitude +- SPEED : Vitesse de l'avion à ce point GPS + geoPoint.speed +- ALTITUDE : Altitude de l'avion à ce point GPS + geoPoint.altitude +- GPS_TIME : Heure d'enregistrement du point (rarement différente de celle du parcours) + format(geoPoint.recordTime, "HHmmss") +- AIRCRAFT : Immatriculation de l'avion + observation.flight.planeImmatriculation +- COMMENT : Commentaires + observation.comment + +(*) uniquement pour un parcours de type LEG, sinon la cellule sera vide + +EFFORT, EFFORT_GROUP et OBSERVATION +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +L'incrément du effortNumber et observationNumber se fait au sein d'un vol. Ainsi le premier LEG d'un vol aura toujours +le numéro 1. Une suppression d'un LEG ou d'une observation ne décalera pas ce numéro. On pourra donc passer du LEG 1 +au LEG 4 par exemple (le 2 et 3 ayant été supprimés à la validation). + +Pour pouvoir identifier à l'export de façon unique l'identifiant de l'effort (colonne EFFORT) contiendra le vol associé. +Par exemple : L001-286-A : LEG n°1 pour le vol n°286 sur le système A + +Même chose pour les observations (colonne OBSERVATION) : O0001-286-A : Observation n°1 pour le vol n°286 sur le sytème A + +Petite précision : pour garder une uniformité, on considère un numéro de LEG (effortNumber) sur 3 chiffres (ex: 001, 012, 123) +et un numéro d'observation sur 4 chiffres (ex: 0001, 0085, 1230). + +L'ancienne colonne FLIGHT_NO des tableaux de résultats xls fournis sera renommé EFFORT_GROUP et correspondra à un +ensemble de LEG sans interruption (TRANSIT ou CIRCLE_BACK). L'EFFORT_GROUPE commencera par la lettre G et gardera +le même code que le premier effort du groupe. + +Exemples : + +Pour l'export des efforts : + +- EFFORT = L{effortNumber}-{flightNumber}-{systemId} (ex: L001-286-A) +- EFFORT_GROUP = G{beginEffortNumber}-{flightNumber}-{systemId} (ex: G001-286-A) + +:: + + L001-286-A G001-286-A LEG (BEGIN) + L002-286-A G001-286-A LEG (ADD) + TRANSIT + L003-286-A G003-286-A LEG (BEGIN) + L005-286-A G003-286-A LEG (ADD) + CIRCLE_BACK + L006-286-A G005-286-A LEG (BEGIN) + TRANSIT + +Pour l'export des observations : + +- OBSERVATION = O{observationNumber}-{flightNumber}-{systemId} (ex: O0001-286-A) + +:: + + O0001-286-A L001-286-A G001-286-A NEW + O0002-286-A L001-286-A G001-286-A NEW + O0003-286-A L002-286-A G001-286-A NEW + O0006-286-A L003-286-A G003-286-A NEW + O0008-286-A L003-286-A G003-286-A NEW + O0010-286-A L004-286-A G003-286-A CIRCLE_BACK + O0011-286-A RECAPTURE + O0012-286-A NEW + O0013-286-A L005-286-A G005-286-A NEW + Export SAMMOA ------------- @@ -172,24 +427,26 @@ :: - {campaignTopiaId 1} - ├── campaign.properties (meta données sur la campagne) - ├── audio - │ ├── {flightTopiaId 1} - │ │ └── Fichiers audio enregistrés pendant le vol - │ └── {flightTopiaId 2} - │ └── ... - ├── csv - │ └── Données exportés depuis la base au format csv - └── map - └── Fichiers sources au format SHP - {campaignTopiaId 2} - └── ... + campaign-${campaignCode}.sammoa (nom du fichier exporté par défaut, mais peut être configurable) + ├── campaign.properties (meta données sur la campagne) + ├── csv + │ └── Données exportés depuis la base au format csv + ├── flight + │ ├── {flightTopiaId 1} + │ │ ├── audio + │ │ │ └── Fichiers audio enregistrés pendant le vol + │ │ └── flight.properties (meta données sur le vol) + │ └── {flightTopiaId 2} + │ └── ... + └── map + └── Fichiers sources au format SHP +.. - campaign-${campaignCode}.sammoa (ex: campaign-PACOMM-2012.sammoa) .. - /campaign.properties : meta données sur la campagne -.. - /{campaignTopiaId}/audio/{flightTopiaId}*/*.* : fichiers audios enregistrés -.. - /{campaignTopiaId}/shp/*.* : fichiers sources SHP -.. - /{campaignTopiaId}/csv/*.csv : données exportés depuis la base en CSV +.. - /map/*.* : fichiers sources SHP +.. - /csv/*.csv : données exportés depuis la base en CSV +.. - /flight/{flightTopiaId}*/flight.properties : meta données sur le vol +.. - /flight/{flightTopiaId}*/audio/*.* : fichiers audios enregistrés L'export peut se faire sur deux niveaux :
participants (1)
-
fdesbois@users.forge.codelutin.com