Pages: 1
- Sujet précédent - QGIS/Conversion: Erreur d'arguments pour QgsCoordinateTransform - Sujet suivant
#1 Tue 10 November 2020 14:28
- Jocelyn Carré
- Juste Inscrit !
- Date d'inscription: 10 Nov 2020
- Messages: 2
QGIS/Conversion: Erreur d'arguments pour QgsCoordinateTransform
Bonjour à tous,
Je dispose d'une liste de points, et je cherche à les atteindre physiquement sur le terrain. Pour ce faire, je ne dispose que d'un téléphone, avec les applications Maps Me ou Google.
Les points me sont donnés en RGF95 UTM 22 Nord (issus de GéoGuyane), et les applications fonctionnent en WGS84 (4326).
Je cherche donc à les convertir d'un système à l'autre.
J'ai trouvé de nombreuses références (blogs, support de QGis, StackExchange...) à la fonction python "QgsCoordinateTransform". Le concept à l'air simple :
Code:
crsSrc = QgsCoordinateReferenceSystem(2972) # UTM 22 Nord crsDest = QgsCoordinateReferenceSystem(4326) # WGS 84 xform = QgsCoordinateTransform(crsSrc, crsDest) pointCRSdest = xform.transform(QgsPoint(x, y))
Cependant, au moment de définir xform, la console m'affiche :
Code:
Traceback (most recent call last): File "C:OSGEO4~1appsPython37libcode.py", line 90, in runcode exec(code, self.locals) File "", line 1, in TypeError: QgsCoordinateTransform(): arguments did not match any overloaded call: overload 1: too many arguments overload 2: not enough arguments overload 3: not enough arguments overload 4: not enough arguments overload 5: argument 1 has unexpected type 'QgsCoordinateReferenceSystem'
J'ai trouvé plusieurs références à cette erreur, dans les "bugs report"ou sur gitHub, mais sans réponse.
Est ce que quelqu'un aurait une piste de solution ?
Je ne maîtrise pas python, je tente cette manip à défaut dans connaître d'autres.
Merci de votre lecture !
Edit : Après avoir continué à fouiller, ça a marché en faisant ceci :
Code:
crsSrc = QgsCoordinateReferenceSystem(2972) # UTM 22 Nord crsDest = QgsCoordinateReferenceSystem(4326) # WGS 84 xform = QgsCoordinateTransform(crsSrc, crsDest, QgsProject.instance()) pointCRSdest = xform.transform(x, y)
Si jamais quelqu'un a le temps et l'envie de m'expliquer pourquoi cela a fonctionné ainsi, a quoi sert "QgsProject.instance()" (dont je ne comprends pas l'explication sur qgis.org), ce sera avec plaisir ! Mais je sais que là c'est plus à moi de fouiller plus si j'avais le temps
Dernière modification par Jocelyn Carré (Tue 10 November 2020 14:47)
Hors ligne
#2 Tue 10 November 2020 14:47
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 266
Re: QGIS/Conversion: Erreur d'arguments pour QgsCoordinateTransform
Salut,
Il te manque un argument lorsque tu instancies ton QgsCoordinateTranform(). C'est sur que si tu ne connais pas python, c'est compliqué...
Code:
crsSrc = QgsCoordinateReferenceSystem(2972) # UTM 22 Nord crsDest = QgsCoordinateReferenceSystem(4326) # WGS 84 context = QgsCoordinateTransformContext() xform = QgsCoordinateTransform(crsSrc, crsDest, context) pointCRSdest = xform.transform(QgsPoint(x, y))
C'est un argument qui est arrivé avec QGIS3.0 et la montée de version de proj qui gère désormais plus d'options (ajout d'une opération par exemple).
Voici la doc associée https://qgis.org/api/classQgsCoordinate … ntext.html
Mais bon, le plus simple serait plutôt de reprojeter la couche directement dans l'interface de QGIS à mon avis.
https://docs.qgis.org/testing/en/docs/t … sform.html
https://gis.stackexchange.com/questions … er-in-qgis
Bon courage!
Hors ligne
#3 Tue 10 November 2020 16:18
- Jocelyn Carré
- Juste Inscrit !
- Date d'inscription: 10 Nov 2020
- Messages: 2
Re: QGIS/Conversion: Erreur d'arguments pour QgsCoordinateTransform
Merci de ta réponse !
Je vais creuser tout ça !
Hors ligne
Pages: 1
- Sujet précédent - QGIS/Conversion: Erreur d'arguments pour QgsCoordinateTransform - Sujet suivant