Closed alhyss closed 2 years ago
Ok pour moi
Cool ! Tu t'es amusé à tester la visualisation sur des types qu'on ne prenait pas en charge jusque-là, genre multi-points ?
On est d'accord que ce sera dans la v0.4 bêta ? Tu l'as même déjà poussé sur le Git, si je ne me trompe pas.
Bjr Leslie, Oui, je l'ai poussé sur le git en version 0.4 Non, je n'ai pas testé multipoints, car je ne l'ai pas implémenté dans la création. Je pense que c'est déjà plus que satisfaisant. non ?
Oh, on est bien d'accord : il n'est en aucun cas question de proposer davantage de types à la création à ce stade, alors qu'on a déjà du mal à imaginer des cas d'usage pour tous ceux qui sont implémentés. Si je proposais de le faire pour la visualisation, c'est seulement parce que c'était peu coûteux pour nous.
@WREATCHED Est-ce que tu pourras retirer la fonction plume.rdf.utils.geomtype_from_wkt
des imports du module plume.bibli_plume_tools_map
? Si elle ne sert plus nulle part (tu confirmes ?) j'ai l'intention de la supprimer. C'était un machin un peu bricolé dont je n'étais pas franchement fière, je ne vois pas l'intérêt de la conserver si on n'en a plus besoin. J'ai déjà supprimé le passage de la documentation technique qui l'évoquait (anciennement dans cette partie), j'attends que tu retires l'import de ton côté et pousses ça sur le Git pour régler définitivement son compte à la fonction.
Accessoirement, tu utilises encore shapely
dans ce module ? Si non, mieux vaudrait peut-être enlever aussi les imports, ça peut représenter un petit gain de temps. Et ça nous fera une dépendance en moins, même si c'est une bibliothèque aujourd'hui intégrée dans les distributions de QGIS...
OK, c'est fait et poussé sur le GitHub à l'instant
Merci ! Je viens de pousser la suppression de la fonction.
... ou du moins tous ceux dont QGIS saura interpréter les WKT.
Au titre des pistes à creuser, je me demande s'il ne serait pas possible d'avoir un processus de visualisation qui s'appuie uniquement sur :
QgsGeometry.fromWkt
pour désérialiser le WKT.QgsRubberBand.setToGeometry
pour intégrer la géométrie auQgsRubberBand
. Plus précisément, il s'agirait d'utiliser la variante de cette méthode qui permet de spécifier le référentiel source via un paramètrecrs
. L'intérêt de procéder ainsi est que la transformation dans le référentiel du canevas est alors réalisée automatiquement.QgsRubberBand.setToGeometry
va aussi se charger de mettre à jour le type de géométrie duQgsRubberBand
, qu'il n'est donc plus nécessaire de spécifier à l'initialisation, ni même de connaître.QgsCoordinateTransform.transformBoundingBox
(appliqué à l'emprise duQgsRubberBand
récupérée viaQgsRubberBand.boundingBox
) pour obtenir un rectangle dans le référentiel du canevas à fournir en argument deQgsMapCanvas.setExtent
.De cette façon, il n'y aurait plus besoin de différencier les types de géométries, ce qui pourrait permettre de les visualiser à peu près tous (tous ceux que reconnaît
QgsGeometry.fromWkt
).J'ai testé en ajustant
plume.bibli_plume_tools_map.GeometryMapToolShow.__init__
de la manière suivante :J'ai l'impression que ça fonctionne, mais je suis peut-être passée à côté d'effets de bord importants. @WREATCHED, je te laisse voir si cette piste est intéressante à investiguer ou si c'est une impasse.
(En fait, j'ai vu un peu par hasard - en essayant de comprendre où était le problème avec le référentiel
OGC:CRS84
- qu'il y avait une variante deQgsRubberBand.setToGeometry
qui permettait de spécifier le référentiel, et je n'ai pas pu résister à l'envie de voir jusqu'où on pouvait aller s'il n'était plus nécessaire de transformer manuellement les géométries... Même si on n'en fait rien, au moins je saurai maintenant de quoi tu me parles avec tes rubber bands.)Une grosse différence est qu'avec cette méthode il faut un
QgsRubberBand
pour toutes les géométries, y compris ponctuelles. On dirait que ça marche assez bien quand on s'en tient à de la visualisation ? Par contre il me manquait une valeur pourQgsRubberBand.setIconSize
. Je l'ai fixée en dur à 9, mais - en admettant qu'on parte là-dessus - ce serait certainement à gérer via un paramètre utilisateur ?À voir quand tu as un peu de temps, donc...
Je flèche sur la version 1.0. Le système actuel fonctionne très bien, il n'y aucune urgence à le retoucher.