Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#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 smile

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: 239

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

 

Pied de page des forums

Powered by FluxBB