#1 Fri 31 January 2014 09:48
- JulienRscl
- Participant occasionnel
- Lieu: Lyon
- Date d'inscription: 23 May 2013
- Messages: 26
Localisateur X/Y
Bonjour,
j'aimerai savoir si certains ont déjà développé un script qui permet de zoomer sur des coordonnées précises.
Je sais qu'il y a le localisateur "Aller vers XY" dans arcgis mais cela ne m'arrange pas. J'ai vraiment besoin d'un outil ou script qui me permet de zoomer sur mes coordonnées.
Sinon avez-vous une idée des fonctions pythons que je pourrais utiliser ?
Merci d'avance
Hors ligne
#2 Fri 31 January 2014 10:17
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: Localisateur X/Y
Salut,
Peut être ceci --> http://arcscripts.esri.com/details.asp?dbid=14003
ou ceci --> http://arcscripts.esri.com/scripts.asp? … ;eQuery=XY
Quelques infos nous seraient utiles -> Sur quelle version travailles tu et dans quel langage désires tu le script?
A+
Joël
Dernière modification par Spacejo (Fri 31 January 2014 10:20)
Hors ligne
#3 Fri 31 January 2014 15:11
- JulienRscl
- Participant occasionnel
- Lieu: Lyon
- Date d'inscription: 23 May 2013
- Messages: 26
Re: Localisateur X/Y
Je travailles sur arcgis 10.1 et j'aimerai un script en python (desolé je pensais l'avoir précisé). Le but étant de réaliser un géotraitement localisateur.
Hors ligne
#4 Mon 03 February 2014 14:08
- Kevin Jousseaume
- Participant assidu
- Lieu: Nanterre, région parisienne
- Date d'inscription: 20 Mar 2006
- Messages: 217
Re: Localisateur X/Y
Bonjour.
Vous pouvez utiliser ceci, je l'ai testé avec succès dans la console Python afin de centrer sur le point de coordonnées X=627000, Y=2378890.
Code:
# Récupération du document mxd = arcpy.mapping.MapDocument("CURRENT") # Récupération du bloc de données df = arcpy.mapping.ListDataFrames(mxd)[0] # Définition de l'étendue à partir des coordonnées du point sur lequel se localiser newExtent = df.extent newExtent.XMin, newExtent.YMin = 627000-1, 2378890-1 newExtent.XMax, newExtent.YMax = 627000+1, 2378890+1 # Centre la carte sans changer d'échelle df.panToExtent(newExtent) # Rafraichissement de la vue arcpy.RefreshActiveView()
Hors ligne
#5 Mon 17 February 2014 17:30
- JulienRscl
- Participant occasionnel
- Lieu: Lyon
- Date d'inscription: 23 May 2013
- Messages: 26
Re: Localisateur X/Y
Super ! Merci cela fonctionne.
J'aimerai maintenant forcer le système de coordonnées. Lui dire en gros que mon x/y sont des coordonnées en mètres dans le système de coordonnées RGF_1993_Lambert_93.
J'ai tenté plusieurs choses mais je bloque.
Hors ligne
#6 Mon 17 February 2014 18:01
- Kevin Jousseaume
- Participant assidu
- Lieu: Nanterre, région parisienne
- Date d'inscription: 20 Mar 2006
- Messages: 217
Re: Localisateur X/Y
Bonsoir,
Vous pouvez essayer ça :
Code:
# Récupération du document mxd = arcpy.mapping.MapDocument("CURRENT") # Récupération du bloc de données df = arcpy.mapping.ListDataFrames(mxd)[0] srDataframe = df.spatialReference srIn = arcpy.SpatialReference(2154) # RGF_1993_Lambert_93, comme défini ici : http://resources.arcgis.com/en/help/main/10.1/018z/pdf/projected_coordinate_systems.pdf pointGeometry = arcpy.PointGeometry(arcpy.Point(655000,6850000),srIn,False, False) projectedPoint = pointGeometry.projectAs(srDataframe) # Définition de l'étendue à partir des coordonnées du point sur lequel se localiser newExtent = df.extent newExtent.XMin, newExtent.YMin = projectedPoint.firstPoint.X-1, projectedPoint.firstPoint.Y-1 newExtent.XMax, newExtent.YMax = projectedPoint.firstPoint.X+1, projectedPoint.firstPoint.Y+1 # Centre la carte sans changer d'échelle df.panToExtent(newExtent) # Rafraichissement de la vue arcpy.RefreshActiveView()
où :
- srDataframe = la référence spatiale de votre bloc de données
- srIn = la référence spatiale de votre point (ici, 2154 = RGF_1993_Lambert_93).
Hors ligne