banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Tue 02 July 2024 22:22

Guillaume_CARA_CEREMA
Juste Inscrit !
Date d'inscription: 2 Jul 2024
Messages: 3

QGIS 3.34.3: Crash lors de l application de N styles via le modeleur

QGIS 3.34.3: Crash lors de l application de nombreux styles via le modeleur

Bonjour,

J’ai un problème avec le modèle builder de QGIS. Je cherche à automatiser l’application des styles de couche via le modèle builder. J’ai plusieurs couches sur plusieurs années en utilisant le même style que j’ai enregistré. J’ai donc mis un algorithme « Appliquer le style » pour chacune de mes couches comme dans l’exemple ci-dessous.
https://zupimages.net/up/24/26/ec8o.png
Pour expliquer plus précisément, ce que le modèle fait, l'algorithme a en entrée une valeur prédéfinie et va chercher dans un dossier le fichier .qml du style et l'applique. Cette opération est répétée pour l'ensemble des couches de mon projet soit 40 couches (Je tiens à préciser que c'est 5 années de couches et 8 styles différents en tout).
Le problème que j'ai c'est que QGIS crash constamment lorsqu'on dépasse 9 - 10 couches avec l'algorithme "Appliquer le style". De plus même si je mets les 40 algorithmes "Appliquer le style", et que j'active et désactive les algorithmes au fur et à mesure, cela plante également. 
Cependant le modeleur ne crash jamais au même endroit : sur 10 exécutions du programme, il a systématiquement planté à des pourcentages différents de la complétion de l'algorithme.
J'ai testé, une autre approche : Préparer un modèle qui demande en entrée la bonne couche et lui applique la couche mais uniquement pour 1 année et faire un processus par lot. Cela a également pas marché.

J'ai pensé au départ que c'état une question du poids de la couche, je le faisais sur beaucoup de donnée
mais cela ne marche pas non plus sur des couches avec un petit nombre de donnée.

J'ai dans tous les cas le message d'erreur python :

Code:

Python Stack Trace
Windows fatal exception: access violation

Current thread 0x000050ac (most recent call first):
  File "C:PROGRA~1/QGIS33~1.3/apps/qgis/./python/pluginsprocessingmodelerModelerDialog.py", line 152 in runModel
    dlg.exec_()

Stack Trace

QgsExpressionContextScope::addVariable :
QgsProject::createExpressionContextScope :
QgsExpressionContextUtils::globalProjectLayerScopes :
QgsLayerTreeModelLegendNode::createTemporaryRenderContext :
QgsSymbolLegendNode::data :
QgsLayerTreeModel::legendIconEmbeddedInParent :
QgsLayerTreeModel::data :
QSortFilterProxyModel::data :
QModelIndex::data :
QStyledItemDelegate::initStyleOption :
QStyledItemDelegate::paint :
QgsLayerTreeViewIndicator::QgsLayerTreeViewIndicator :
QTreeView::drawRow :
QTreeView::drawTree :
QTreeView::paintEvent :
QWidget::event :
QFrame::event :
QAbstractItemView::viewportEvent :
QCoreApplicationPrivate::sendThroughObjectEventFilters :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QWidgetPrivate::drawWidget :
QWidgetPrivate::moveRect :
QWidget::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QCoreApplicationPrivate::sendPostedEvents :
qt_plugin_query_metadata :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QDialog::exec :
PyInit_QtWidgets :
PyObject_Str :
PyEval_EvalFrameDefault :
PyFunction_Vectorcall :
PyFunction_Vectorcall :
PyObject_GC_Del :
PyVectorcall_Call :
PyObject_Call :
PyInit_QtCore :
PyInit_QtCore :
PyInit_QtCore :
PyInit_QtCore :
QObject::qt_static_metacall :
QAction::activate :
QAbstractButton::click :
QAbstractButton::mouseReleaseEvent :
QToolButton::mouseReleaseEvent :
QWidget::event :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QApplicationPrivate::sendMouseEvent :
QSizePolicy::QSizePolicy :
QSizePolicy::QSizePolicy :
QApplicationPrivate::notify_helper :
QApplication::notify :
QgsApplication::notify :
QCoreApplication::notifyInternal2 :
QGuiApplicationPrivate::processMouseEvent :
QWindowSystemInterface::sendWindowSystemEvents :
QEventDispatcherWin32::processEvents :
qt_plugin_query_metadata :
QEventLoop::exec :
QCoreApplication::exec :
main :
BaseThreadInitThunk :
RtlUserThreadStart :

QGIS Info
QGIS Version: 3.34.3-Prizren
QGIS code revision: 47373234ac
Compiled against Qt: 5.15.3
Running against Qt: 5.15.3
Compiled against GDAL: 3.8.3
Running against GDAL: 3.8.3

System Info
CPU Type: x86_64
Kernel Type: winnt
Kernel Version: 10.0.22621

Je ne trouve aucune réponse sur internet sur ce bug. 
Bien cordialement

Hors ligne

 

#2 Wed 03 July 2024 14:52

Julien81
Participant assidu
Lieu: Giroussens
Date d'inscription: 14 Jan 2019
Messages: 171

Re: QGIS 3.34.3: Crash lors de l application de N styles via le modeleur

Bonjour,

question bête, je ne connais pas vos représentations mais as tu essayé avec un style 'simplifié'?
Utilisant cet algo sur du vecteur comme raster dans mes modeleurs, je n'ai pas encore constaté ce genre de "limitation", j'ai bien envie de tester la repro du bug sur ma machine, qgis 3.34.4 par contre.
En entrée tu sélectionnes des couches du projet, mais autant d'input que de couches? ou bien pas d'input et tu les appelles dans l'algo par leur nom, ou alors as tu utilisé source multiple (en regroupant autant de source multiple que de type de geom)?
D'ailleurs, par rapport à tout cela, il n'y aurait pas une couche qui traine dans le modeleur qui se fait appliquer un style non compatible?

cordialement!

Hors ligne

 

#3 Fri 05 July 2024 15:48

Guillaume_CARA_CEREMA
Juste Inscrit !
Date d'inscription: 2 Jul 2024
Messages: 3

Re: QGIS 3.34.3: Crash lors de l application de N styles via le modeleur

Bonjour,

Je n'ai pas essayé avec uniquement des styles simplifiés. Actuellement, j'ai à la fois des couches avec une symbologie unique et des couches avec une symbologie "catégorisée". J'ai 5 styles qui appliquent une symbologie en fonction d'une catégorisation (4 couches avec un champ ayant 4 niveau de données allant de 1 à 4 et 1 dont les données du champ vont jusqu'à 2) et 3 couches avec un symbole simple.
Je viens d'essayer de faire 2 scripts, un avec toutes les données catégorisées et un autres avec tous les styles simplifiés, et cela ne fonctionne pas non plus.
En entrée je sélectionne bien les couches du projet et il y a autant de couche que d'algorithme/input. Je n'utilise pas de sources multiples. Le PNG que j'avais mis dans ma première question est une partie du modèle, mais il n'y a pas d'appel à tel ou tel couche via une entrée, les couches sont appelée directement à partir de l'algorithme. Au lieu de choisir "Entrée du modèle", je choisi "Valeur" et je sélectionne la couche du projet.
Pour répondre à ta dernière question. J'ai testé algorithme par algorithme et tous les styles sont valides et compatibles.

Cordialement !

Dernière modification par Guillaume_CARA_CEREMA (Fri 05 July 2024 16:06)

Hors ligne

 

#4 Mon 08 July 2024 17:08

Guillaume_CARA_CEREMA
Juste Inscrit !
Date d'inscription: 2 Jul 2024
Messages: 3

Re: QGIS 3.34.3: Crash lors de l application de N styles via le modeleur

Bonjour,
Je viens de trouver une solution pour éviter les crashs. J'ai pu mettre les 40 couches dans le même modeleur et l'exécuter sans que cela crash.
Premièrement, j'ai fait en sorte que chaque style sois "dépendant" du précédent. Je m'explique, dans le modeleur, pour chaque algorithme, il y a une case tout en bas de l'algo qui est "dependences".
Selon QGIS : "Ce paramètre permet de définir l’ordre dans lequel les algorithmes sont exécutés, en définissant explicitement un algorithme comme parent de l’algorithme actuel. Cela forcera l’algorithme parent à être exécuté avant l’algorithme actuel".
Ainsi, j'ai mis que le 2e algorithme était dépendant du premier, puis le 3e dépendant du 2e et ainsi de suite jusqu'au 40e.
Deuxièmement, dès que je lance l'algorithme depuis le modeleur, cela crash forcément, alors que si je l'enregistre dans le dossier des modeleurs de QGIS, je peux l'exécuter depuis la boite à outil, et dans ce cas là il ne crash jamais (sur 20 tentatives, pas un seul crash).

Je ne comprends pas pourquoi l'algorithme bug quand je l'exécute depuis le modeleur alors qu'il bug pas depuis la boite à outil.

J'espère que cela vous sera utile.
Bien cordialement

Hors ligne

 

Pied de page des forums

Powered by FluxBB