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

GEODATA DAYS 2024

#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

 

Pied de page des forums

Powered by FluxBB