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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 31 August 2015 15:58

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

(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

Bruno
Membre du bureau
Lieu: Toulouse
Date d'inscription: 22 Jun 2005
Messages: 11951
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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 smile
Robin.

Hors ligne

 

#9 Tue 01 September 2015 18:03

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: (outil/méthode) Recherche de projection à partir de XY

Retour promis : ca marche du tonnerre, je suis ravi smile
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 smile

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

 

#11 Fri 04 September 2015 08:03

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: (outil/méthode) Recherche de projection à partir de XY

Tu veux dire en adaptant le code ? Why not.  A suivre !

Hors ligne

 

Pied de page des forums

Powered by FluxBB