#1 Mon 31 August 2015 15:58
(outil/méthode) Recherche de projection à partir de XY
Bonjour,
Je suis un grand fan de ce site web : http://dogeo.fr/_apps/projection/ qui me sert énormément quand j'ai un doute sur des coordonnées.
Seulement le site se limite aux systèmes français et quelques autres.
Savez vous s'il existe un autre site web, ou s'il existe déjà un script ou un outil qui pourrait faire la même chose dans l'ensemble des systèmes de coordonnées de la base EPSG ? J'aimerais pouvoir rentrer des coordonnées de la même façon, puis visualiser tous les points générés dans chaque système possible pour tenter de trouver la projection de mes coordonnées visuellement (=si le point est au bon endroit, alors, j'ai trouvé la projection).
Je sens que la solution n'est pas hors de portée en script mais il me manque un petit coup de pouce. Dans l'idée, je suppose qu'on crée un point dans la projection X, qu'on reprojete par exemple en WGS84 et qu'on ajoute à une couche de points finale. On boucle sur la liste des projection X(N) pour générer N nombre de points selon N projections différentes puis on affiche notre couche finale. Une idée pour scripter ça simplement ?
EDIT : titre modifié
Dernière modification par Robin (Tue 01 September 2015 10:09)
Hors ligne
#2 Tue 01 September 2015 09:14
- sam.huel
- Participant occasionnel
- Date d'inscription: 4 Dec 2012
- Messages: 16
Re: (outil/méthode) Recherche de projection à partir de XY
Salut,
je me sert plutôt de ce site qui est pas mal fait :
http://twcc.fr/
Hors ligne
#3 Tue 01 September 2015 09:50
Re: (outil/méthode) Recherche de projection à partir de XY
Je crois même qu'il est dans l'annuaire de liens...qui reste une solution d'avenir en complément des moteurs de recherches.
Hors ligne
#4 Tue 01 September 2015 09:59
- Floflo49fb
- Participant assidu
- Lieu: Montpellier
- Date d'inscription: 29 Aug 2009
- Messages: 250
- Site web
Re: (outil/méthode) Recherche de projection à partir de XY
Bonjour,
Il existe aussi : http://epsg.io avec par exemple pour le Lambert 93 : http://epsg.io/2154/map
Florian Boret
Dream it, Make it, Share it
Hors ligne
#5 Tue 01 September 2015 10:06
Re: (outil/méthode) Recherche de projection à partir de XY
Merci pour ces premières réponses.
J'ai mal formulé mon titre, car je ne cherche pas la liste des projections du monde : je cherche à trouver des projections à partir d'un set de coordonnées dans une projection inconnue. Les deux sites (que je connais bien) sont des aides efficaces, mais aucun n'égale l'efficacité de Dogeo pour savoir rapidement dans quelle projection on se situe.
Le site TWCC dispose d'un nombre plus important de projections mais il faut manuellement faire défiler les projections pour voir leurs coordonnées quand on clique sur la carte, et il n'y a pas de moyen simple d'afficher toutes les possibilités pour un set de données à projection inconnue.
Dans l'idée, si un pays a un nombre réduit de projections, je peux m'en sortir, mais s'il y en a 10, 20, 30, je ne veux pas perdre du temps à toutes les tester. L'outil dogeo pour ça est très efficace pour retrouver ses petits mais j'aimerais avoir le même genre des résultats... avec plus de points sur la carte pour plus de projections possibles.
Hors ligne
#6 Tue 01 September 2015 10:37
Re: (outil/méthode) Recherche de projection à partir de XY
Je poursuis les recherches en faisant des bouts de codes (pas forcément optimal, mais le but est d'expliquer ma démarche) :
1. Fournir un fichier avec un point sans projection / rentrer les variables X et Y pour créer la couche par le code
2. La ligne de code suivante me créé une nouvelle couche affectée du code EPSG X. Si je boucle sur la liste des codes EPSG, j'aurais donc X couches pour X projections.:
ogr2ogr PointXY_EPSGXXXX.shp PointXY.shp -a_srs EPSG:XXXX
3. Pour obtenir mon résultats, il faudra que je reprojete toutes les couches vers une seule projection (en WGS84 par exemple) et que j'ajoute (-append) toutes mes couches de points projetées différemment dans une couche de points uniques. Il ne me restera plus qu'à ajouter cette couche de X points sur ma carto pour voir toutes les possibilités de projections selon mon set de coordonnées.
Yapluka, comme on dit...
Hors ligne
#7 Tue 01 September 2015 12:35
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: (outil/méthode) Recherche de projection à partir de XY
Salut,
Voici un exemple sommaire avec OGR en Python. C'est pas l'API la plus élégante mais il a de bonnes ressources ici et le code doit pouvoir se transposer facilement dans une autre API (Arcpy, pyQGIS, Fiona ...).
Code:
# -*- coding:utf-8 -*- from osgeo import osr from osgeo import ogr #unknow coords (ici Toulouse en Lambert 2 carto 27572) x = 528000 y = 1845000 #init wgs84 proj wgs84 = osr.SpatialReference() wgs84.ImportFromEPSG(4326) #projection potentielles à tester (ici projections Fr NTF et RGF) potentialEPSG = [ 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 2154, 27571, 27572, 27573, 27574, 27561, 27562, 27563, 27564 ] #create shapefile in wgs84 driver = ogr.GetDriverByName("ESRI Shapefile") data_source = driver.CreateDataSource("coordsTest.shp") layer = data_source.CreateLayer("coordsTest", wgs84, ogr.wkbPoint) layer.CreateField(ogr.FieldDefn("EPSG", ogr.OFTInteger)) for epsg in potentialEPSG: #reproj from potential epsg to wgs84 prj = osr.SpatialReference() prj.ImportFromEPSG(epsg) transfo = osr.CoordinateTransformation(prj,wgs84) result = transfo.TransformPoint(x, y) #Add reproj point and data to wgs84 shp feature = ogr.Feature(layer.GetLayerDefn()) point = ogr.Geometry(ogr.wkbPoint) point.AddPoint(result[0], result[1]) feature.SetGeometry(point) feature.SetField("EPSG", epsg) layer.CreateFeature(feature) feature.Destroy() data_source.Destroy()
L'approche me parait plus efficace qu’enchaîner des commandes ogr2ogr. Le problème est de savoir quels sont les systèmes de projection que l'on veut tester. Si à chaque fois on connaît le pays dans lequel se trouve le point il suffirait de faire une requête sur la base EPSG (http://www.epsg.org/) pour extraire au préalable toutes les projections concernant ce pays puis les tester.
Hors ligne
#8 Tue 01 September 2015 16:37
Re: (outil/méthode) Recherche de projection à partir de XY
Super ! Joli bout de code, il va falloir que je teste ça à présent.
Mon code était un brouillon très basique, mais je ne serais probablement pas arrivé à ce résultat avant longtemps.
Je reviendrais sur ce sujet pour faire des retours sur le code une fois que je l'aurais pris en main.
Merci beaucoup pour ces efforts et pour le lien, je ne connaissais pas
Robin.
Hors ligne
#9 Tue 01 September 2015 18:03
Re: (outil/méthode) Recherche de projection à partir de XY
Retour promis : ca marche du tonnerre, je suis ravi
Merci !!!!
Pour ceux qui souhaitent l'utiliser (exemple) :
1. Ouvrir QGIS
2. Ouvrir la console Python (Menu Extension/Console Python)
3. Cliquer sur le bouton "Editeur" : une feuille de papier avec un crayon
4. Coller le code / enregistrer sous... quelque part
5. Changer x = 528000 et y = 1845000 pour de nouvelles coordonnées si besoin
6. Changer les chiffres dans potentialEPSG = [3942, ...27564] si besoin
7. Changer l'emplacement du fichier créé, par exemple : data_source = driver.CreateDataSource("C:/tmp/coordsTest.shp")
8. Cliquer sur le bouton Exécuter le script (triangle vers la droite). Agrandir la fenêtre vers le haut si vous ne le voyez pas.
9. Admirez la maîtrise de Dominique
Hors ligne
#10 Thu 03 September 2015 13:41
- dominique.lys
- Participant assidu
- Date d'inscription: 5 Oct 2006
- Messages: 473
- Site web
Re: (outil/méthode) Recherche de projection à partir de XY
Super content que ça fonctionne. Pour une utilisation dans QGIS utiliser pyQGIS serait sûrement plus adapté, de plus cela permettrait de créer une couche temporaire directement mémoire plutôt que de générer un fichier, ou encore d'intégrer une petite interface graphique. Un bon exercice en somme !
Hors ligne