Skip to Content

QGIS 2 - script et méthode pour faire du géoréférencement vectoriel

Type : script pour la boite à outils traitement
Licence : GPL

Suite à cette discussion sur le forumSIG http://www.forumsig.org/showthread.php/37661-Logiciel-Ajustement-spatial... , où je cherchais une méthode pour faire du géoréférencement vectoriel, voici le protocole mis en place pour y parvenir.

Attention, cette méthode nécessite que QGIS utilise gdal 1.10 ou supérieur.

Faire un fichier texte de points de correspondance (une ligne par point) formaté ainsi :

pointNonGeoref_x pointNonGeoref_y pointGeoref_x pointGeoref_y

Pour cela à l'aide de l'outil identification / dérivées / copier les valeurs d'attributs (on fait ça pour le fichier à géoréférencer et sur le référentiel à utiliser pour géoréférencer, le plus simple étant d'avoir 2 instances de qgis simultanées, l'une avec le fichier à géoréférencer sans reprojection à la volée et l'autre avec le référentiel permettant de récupérer les bonnes coordonnées)

Exemple

-869784.220806 273824.996155 475353.856328 267608.211198
-869786.957227 273804.951538 475351.619893 267590.139363
-869767.137134 273845.613669 475369.467973 267625.62811
-869758.781489 273830.170332 475377.513896 267610.888946

A noter qu'il est également possible d'utiliser le plugin copy_Coords de QGIS, plus simple d'utilisation, mais moins précis.

On lance ensuite le script joint (celui-ci ne fait que remplacer la commande d'ogr2ogr proposée par gene http://www.forumsig.org/showthread.php/37661-Logiciel-Ajustement-spatial...) mais permet d'éviter la ligne de commande.

Décompresser le zip dans le dossier script de l'outil traitements (voir Traitements / options / scripts / Scripts folder)

Dans la boite à outils de traitements / scripts, une entrée "[Géoréférencement] / ajustementSpatial" a du apparaitre, lancer le script et remplir comme précisé dans la documentation.

Si tout se passe bien, le fichier nouvellement géoréférencé doit s'ouvrir, placé correctement.

Le nombre de points de correspondance définit l'ordre du polynôme utilisé pour le géoréférencement.

Le script a été testé sous linux et sous windows avec l'installateur OSGEO.

Sous Mac, il est nécessaire de remplacer la ligne

ogr = 'ogr2ogr -a_srs EPSG:'+epsg+' '

par

ogr = '/Library/Frameworks/GDAL.framework/Versions/1.10/Programs/ogr2ogr -a_srs EPSG:'+epsg+' '

En pratique, dans le script téléchargé, commenter la première ligne en y insérant un # devant et décommenter la ligne pour Mac en supprimant le #.

En espérant que cela vous sera utile, n'hésitez pas à faire un retour si vous avez des soucis sur la discussion du forumSIG.




0

Commentaires

Test PDF

Bonjour,

je me suis permis de tester votre script sur des fichiers dxf issus directement de l'export d'Adobe Illustrator,
en utilisant les coordonnées de la fenêtre Infos de ce logiciel.

Jusqu'à présent, la démarche a précisément très bien fonctionné et je vous remercie beaucoup pour ce tutoriel car j'étais très content d'avoir trouvé un moyen d'éviter le passage par Autocad.

Cependant, je me suis rendu compte que sur les fichiers Illustrator issus d'un document pdf dont les vecteurs sont lisibles. Je n'arrive pas à faire fonctionner votre script.

Le message suivant apparaît au démarrage de l'algorithme :
'ascii' codec can't encode character u'\xe9' in position 365: ordinal not in range(128) See log for more details

Merci de m'apporter quelques éléments de réponse pouvant débloquer cette situation,
car sur certains documents, je ne dispose que de pdf anciens.

Bien cordialement

Test PDF

Bonjour,

après de nombreux tests, j'ai résolu mon problème en stockant le fichier texte dans un autre dossier que celui de mes couches.

Si quelqu'un a une explication, merci.

En tout cas, c'est reparti comme ça.

Bonne continuation

Bug

Bonjour,

votre script m'est très utile.

Pourriez-vous juste m'indiquer à quoi correspond le message d'erreur suivant :

'ascii' codec can't encode character u'\xe9' in position 356: ordinal not in range(128) See log for more details

Merci

Altitude - Z

Bonjour,

Peut utiliser ce plugin pour les z ?
Je veux appliquer un delta Z à toutes mes entités, les descendre toutes de 87,234 m.

Après essai le plugin ne fonction que pour les x et y.

Cordialement

Problème exécution du Script

Bonjour,

Je vous remercie d'avoir partagé ce script avec tous les utilisateurs SIG. J'ai juste un petit soucis avec l'exécution suivant les étapes que vous avez indiquées. Lorsque j'essaye de faire apparaître le script dans Traitements > options > scripts > scripts folder, j'ai cette erreur qui apparaît : C:/PROGRA~1/QGISLA~1/apps\msys. Aussi, à quel moment dois-je rentrer mon fichier de points de contrôle?

Je suis désolée ça peut sembler bête comme questions mais je suis novice en SIG.

Merci d'avance pour votre réponse

Erreur script avec QGIS 2.12.1 (Lyon)

Bonjour
j'ai utilisé avec succès cet excellent script l'an dernier... J'obtiens désormais (avec les mêmes fichiers source SHP) une erreur "returned non-zero exit status 1". Je suis sur Mac et la première ligne a été changée pour fonctionner avec la version 1.11 de Gdal. Pouvez-vous m'aider ? Merci d'avance !

Bonjour Pouvez vous tenter en

Bonjour
Pouvez vous tenter en ouvrant la console python et relancer le script ?
si ça ne marche pas et si les données ne sont pas confidentielles, n'hésitez pas à m'envoyer les données et les points de calage sur redaction at portailsig.org, je jetterai un oeil la semaine prochaine
Ludovic

Bonjour j'ai tenté

Bonjour
j'ai tenté directement avec la console, aucun résultat... J'ai également mis à jour Qgis (désormais version 2.14 et GDAL version 2.1), problème identique. Je vous envoie les fichiers par mail, merci beaucoup.

Script ajustement spatial et QGIS 2.14.0

Bonjour

J'ai un soucis lors de l'utilisation du script, après lancement j'obtiens la réponse suivante :

returned non-zero exit status 127 See log for more details

Je travaille sur des entités linéaires de cadastre (indien) entities LineString avec 7316 lignes

Merci de m'éclairer

EL

Bonjour est ce que si vous

Bonjour

est ce que si vous ouvrez la console python et que vous relancez le script normalement, est ce que cela règle le problème ?

Problème non résolu

Bonjour
Non, avec la console python ouverte cela ne modifie rien, même message d'erreur retourné

Si ce n'est pas confidentiel,

Si ce n'est pas confidentiel, je veux bien voir les données et le fichier utilisé pour le géorérencement

redaction at portailsig.org

2.12.2

fonctionne parfaitement avec QGIS 2.12.2

Grâce à ce script, j'ai géoréférencé un "dessin" DXF fait par une architecte, qui n'a aucune connaissance des SIG :-)

qgis 2.12.1

Fonctionne parfaitement
merci

Script ajustementSpatial et Qgis 2.8.3

Bonjour,

Je n'ai pas réussi à faire marcher ce script avec qgis 2.8.3 :

- soit j'ai l'erreur "'ascii' codec can't encode character u'\xe9' in position 334: ordinal not in range(128) See log for more details"
- soit lorsque je clique sur "Itérer sur cette couche" (petite flèche verte à coté du chemin du fichier d'entrée), j'ai le Démarrage de l'algorithme ajustementSpatial qui se lance effectivement, ma machine se met à tourner fort, puis ça plante....

Par contre, du coup j'ai utilisé ogr2ogr directement et là miracle ça marche.

Pour ceux qui ne savent pas faire :
1 - Démarrer OSGeo4W qui s'installe avec qgis
2 - utiliser la commande suivante (pour 4 points) :
ogr2ogr -gcp X1nonréfé Y1nonréfé X1réfé Y1réfé -gcp X2nonréfé Y2nonréfé X2réfé Y2réfé -gcp X3nonréfé Y3nonréfé X3réfé Y3réfé -gcp X4nonréfé Y4nonréfé X4réfé Y4réfé -f "ESRI shapefile" ...\chemin\nom_fichier_out.shp ...\chemin\nom_fichier_in.shp

remplacer X1nonréfé Y1nonréfé X1réfé Y1réfé par les coordonnées correspondantes de chacun de vos points

remplacer ...\chemin\nom_fichier_out.shp par le chemin et le nom du fichier de sortie

remplacer ...\chemin\nom_fichier_in.shp par le chemin et le nom du fichier en entrée

Bonjour Est il possible de me

Bonjour

Est il possible de me faire passer vos données que je puisse regarder d'où vient le problème et éventuellement améliorer le script ? si oui envoyer un mail sur redaction[at]portailsig.org

Merci

Problème codage du fichier texte de points

Bonjour à tous,

Lorsque je lance le script,j’obtiens ce message :
Démarrage de l'algorithme ajustementSpatial ...
'ascii' codec can't encode character u'\xe9' in position 330: ordinal not in range(128) See log for more details

D'après mes recherches, ce problème est lié à l'encodage utilisé. Pour autant, j'ai utilisé l'encodage UTF-8 et AINSI.

N'ayant aucune notion en python, je suis démuni.

Est ce que quelqu'un pourrait m'en dire plus ?

Merci de me répondre,

Pierre L

Limite du nombre de points de correspondance

Merci pour ce script bien pratique.
Attention dans les faits il y a une limite au nombre de points de correspondance (due aux limites de calcul en fonction de l'ordre du polynome ?)

Format des coordonnées

Merci pour ce script bien pratique !

georeferencer couches vectorielles

Hi Ludovic,

mes amis italiens et moi, nous avons développé un plugin de QGIS pour georéférencer des couches vectorielles;

nos objectifs sont:
- definir en mode graphique les paires de points correspondants (source et destination)
- on peut definir
- 2 paires (rotation + translation)
- 3+ paires (rotation + translation + scalatura (scaling: en francais?)
- appliquer la transformation (seulement lineaire)
- activer/desactiver le paires en fonction des besoins de l'utilisateur
- enregistrer/lire le points pour la transformation des autres couches;

la logique et l'implementation sont totalement naif; en effet il s'agit d'un outil experimentel, pas encore deposé dans le depot de QGIS;

nous serion heureux d'avoir votre point de vue et de travailler ensemble pour fournir aux utilisateurs de QGIS un outil je pense bien interessant;

si vous voulez, vous pouvez voir une petite presentation ici http://www.slideshare.net/giulianc/vect-georef; si vous etes interessé je pourrais envoyer une copie pour essayer le plugin;

s'il vous plaît excusez mon français très faible et je vous remercie de votre attention;

cordialement,
giuliano curti

Bonjour, j'ai essayé

Bonjour,

j'ai essayé d'utiliser votre outil mais je ne comprends pas comment ajouter les points de controle?
Pouvez vous m'aider ?

Merci,

EmelineD

georeferencer et ... excuses

pardon,

je n'ai pas laissé mon address: giulianc51@gmail.com, excusez moi :-)

saluts,
giuliano curti

invalide

Bonjour,
j'utilise Qgis 2,
voici le message que j'obtiens :
Cette extension est incompatible avec cette version de QGIS
Extension conçue pour la version 1.x de QGIS
une solution?
Merci d'avance

Il ne s'agit pas d'un plugin,

Il ne s'agit pas d'un plugin, il faut le mettre dans le répertoire de scripts de l'outil traitement et l'utiliser avec celui ci.

Est ce bien ainsi que vous faites ?

c'est réglé

effectivement j'avais mal suivi la procédure.
c'est réglé,
merci

Parfait, n'hésitez pas à nous

Parfait, n'hésitez pas à nous dire si cela fonctionne bien pour vous.

erreur ajustement spatial

Bonjour,
J'essaie de faire un ajustement en suivant la procedure mais j'ai ce message d'errueur "ascii codec can't decode byte 0xef in position 5 :ordinal not in range (128)".
Ai-je omis un détail ?
Merci.

Bonjour Cela ressemble à un

Bonjour
Cela ressemble à un problème d'accent dans le chemin du fichier ?