PnX-SI / gn_mobile_occtax

Application mobile pour la saisie dans le module Occtax de GeoNature
GNU General Public License v3.0
14 stars 5 forks source link

plantage sur une couche vecteur #175

Open gildeluermoz opened 2 years ago

gildeluermoz commented 2 years ago

Version : occtax-mobile 2.2.0 et GN 2.9.2 et TH 1.9.4

Objectif parametrer l'appli pour avoir une couche mailles vecteur qui ne serve pas à la coloration syntaxique mais uniquement à se repérer.

bug constaté si j'affiche la couche maille à l'étape carte, lors du passage à l'étape taxon, l'application plante ou revient à la page d'accueil ou sur certains terminaux la liste des taxons est vide. Si je retire cette couche de l'affichage, tout se passe normalement.

analyse la couche maille comportait les id inpn et non les id_area car elle n'était pas censée servir à la coloration. On voit dans les logs que l'erreur intervient après le chargement de taxons avec un id trouvé dans la couche mailles10x10.geojson load taxa with selected feature ID: E084N651

J'ai testé de supprimer le param occtaxmobile_area_type en base. J'ai testé de supprimer le param "code_area_type": "M10" dans settings.json J'ai testé de mettre "code_area_type": "COM"` L'appli plante à chaque fois. En corrigeant les id dans la couche mailles10x10.geojson, ça fonctionne. Mais la coloration syntaxique n'est pas souhaitée...

Comportement attendu : Poursuivre sans plantage et afficher les taxons sans coloration quelque soit le contenu de la ou des couches vecteurs qui doivent pouvoir fonctionner avec ou sans lien avec la coloration.

Extrait des logs

19:27:03.137 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] load taxa with selected feature ID: null
19:27:03.140 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT taxa."_id" AS taxa__id, taxa."name" AS taxa_name, taxa."kingdom" AS taxa_kingdom, taxa."group" AS taxa_group, taxa."name_common" AS taxa_name_common, taxa."description" AS taxa_description, taxa."rank" AS taxa_rank
  FROM taxa taxa
  ORDER BY taxa_name ASC
  args: []
19:27:03.142 INFO: [fr.geonature.maps.settings.LayerSettingsViewModel] loading selected layers:
    'scan_aura.mbtiles' (active: true)
    'mailles10x10.geojson' (active: true)
19:27:03.151 INFO: [fr.geonature.maps.settings.LayerSettingsViewModel] root path: '/storage/0000-0000'
19:27:03.181 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist
19:27:03.221 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist
19:27:03.222 WARN: [fr.geonature.commons.data.entity.TaxonArea$Companion] column 'taxa_area_taxon_id' does not exist
19:27:03.237 INFO: [fr.geonature.maps.settings.LayerSettingsViewModel] loading local tiles layer 'scan_aura.mbtiles'...
19:27:04.048 INFO: [fr.geonature.maps.settings.LayerSettingsViewModel] local tiles layer 'scan_aura.mbtiles' loaded
19:27:04.051 INFO: [fr.geonature.maps.settings.LayerSettingsViewModel] loading vector layer 'mailles10x10.geojson'...
19:27:04.379 INFO: [fr.geonature.maps.settings.LayerSettingsViewModel] vector layer 'mailles10x10.geojson' loaded
19:27:18.754 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] load taxa with selected feature ID: null
19:27:18.757 DEBUG: [fr.geonature.commons.data.helper.SQLiteSelectQueryBuilder] sql:
  SELECT taxa."_id" AS taxa__id, taxa."name" AS taxa_name, taxa."kingdom" AS taxa_kingdom, taxa."group" AS taxa_group, taxa."name_common" AS taxa_name_common, taxa."description" AS taxa_description, taxa."rank" AS taxa_rank
  FROM taxa taxa
  ORDER BY taxa_name ASC
  args: []
19:27:18.757 DEBUG: [fr.geonature.occtax.ui.input.taxa.TaxaFragment] load taxa with selected feature ID: E084N651
19:27:18.768 ERROR: [fr.geonature.occtax.MainApplication$TinylogUncaughtExceptionHandler] java.lang.RuntimeException: An error occurred while executing doInBackground()
    at androidx.loader.content.ModernAsyncTask$3.done(ModernAsyncTask.java:164)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)
  Caused by: java.lang.IllegalArgumentException: Unknown URI (query): content://fr.geonature.occtax2.provider/taxa/area/E084N651
    at fr.geonature.commons.data.MainContentProvider.query(MainContentProvider.kt:268)
    at android.content.ContentProvider.query(ContentProvider.java:1065)
    at android.content.ContentProvider.query(ContentProvider.java:1157)
    at android.content.ContentProvider$Transport.query(ContentProvider.java:245)
    at android.content.ContentResolver.query(ContentResolver.java:760)
    at android.content.ContentResolver.query(ContentResolver.java:710)
    at androidx.core.content.ContentResolverCompat.query(ContentResolverCompat.java:81)
    at androidx.loader.content.CursorLoader.loadInBackground(CursorLoader.java:63)
    at androidx.loader.content.CursorLoader.loadInBackground(CursorLoader.java:41)
    at androidx.loader.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:307)
    at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:60)
    at androidx.loader.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:48)
    at androidx.loader.content.ModernAsyncTask$2.call(ModernAsyncTask.java:141)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    ... 3 more
camillemonchicourt commented 2 years ago

Je crois que l'application permet d'avoir une couche vectorielle pour les couleurs des taxons + des couches vectorielles complémentaires. Mais je ne crois pas que le cas soit prévu d'avoir uniquement des couches vectorielles sans aucune coloration des taxons. Dans ce cas il va chercher les ID dans les couches fournis, et ne les trouver nul part et planter.

Si on veut permettre cela, il faudrait certainement un paramètre quand on définit les couches vectorielles pour spécifier si elles sont à utiliser ou non pour la coloration des taxons.

gildeluermoz commented 2 years ago

Oui, on en a parlé avec @DonovanMaillard et on fait la même conclusion. En évoquant le sujet, le plantage que j'ai rencontré serait probalement dû au fait que les id que j'avais dans ma couche était les id des mailles de l'inpn qui ne sont pas des integer (comme E084N651) On voit dans l'extrait du log que l'erreur survient après ceci : load taxa with selected feature ID: E084N651 En remplaçant la couche par la même couche mais avec les id_area (en integer), plus de plantage.

sgrimault commented 6 months ago

Bonjour, Il y a déjà un souci de correspondance de type coté couches vectorielles et en retour de l'appel GET -> /api/synthese/color_taxon :

La première correction porte sur le fait que l'ID des objets géographiques peut être non défini, car actuellement il reste obligatoire. La seconde correction coté API serait que le champ id_area soit de type String afin de faciliter la correspondance avec les IDs des objets des couches géographiques.

camillemonchicourt commented 3 months ago

Je comprends pas trop pourquoi les id_area pourraient être en alpha-numérique. Ce sont forcément des entiers côté GeoNature. Et on ne devrait le vérifier et le contrôler que pour LA couche utilisée comme unités géographiques pour les couleurs de taxons. D'où la nécessité de pouvoir spécifier explicitement la couche utilisée pour les unités géographiques, pour ne pas avoir à le deviner ou avoir des soucis sur les autres couches vecteur additionnels, où le traitement devrait être différent et plus simple. Voir https://github.com/PnX-SI/gn_mobile_occtax/issues/262