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 Fri 26 June 2015 21:55

NicolasSilov
Juste Inscrit !
Date d'inscription: 11 Nov 2014
Messages: 9

ArcGIS 10.2 : requete python simple

Bonjour a la communauté, je reviens solliciter votre aide.

Pour mon bureau j'ai besoin de créer un script python qui me permettrait : de localiser de nombreuses coordonnées XY a l'intérieur d'un shape qui est celui des municipalités de Colombie (oui je travaille en Colombie smile  ).

Ce shape contient chaque commune avec son code et son polygone géoréférencé.
En fait, le but ultime serait de créer un code via python qui nous localiserait chaque point sur le territoire et nous enseignerait de manière automatique dans quel commune chaque point se situe.

Je tiens a préciser que je suis novice dans l'utilisation de python. Aussi nous travaillons sur la version 10.2 d'arcmap et la version Python 2.7.3.

Toute information serait la bienvenue, je vous remercie fortement !

Dernière modification par NicolasSilov (Fri 26 June 2015 21:55)

Hors ligne

 

#2 Mon 29 June 2015 09:22

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

Re: ArcGIS 10.2 : requete python simple

Bonjour,

L'idée est d'abord de décomposer ce que vous voulez faire :
1. Un script Python : pas de Toolbox ? Si oui, il vous faut apprendre les bases pour créer un "outil" Python :
http://resources.arcgis.com/fr/help/mai … 0022000000
2. Localiser des données XY : Outil générer une couche d'évènement XY :
http://resources.arcgis.com/fr/help/mai … 006z000000
3. Trouver la commune associée = jointure spatiale :
http://resources.arcgis.com/fr/help/mai … 000q000000

Hors ligne

 

#3 Mon 29 June 2015 10:02

lebon henri
Participant actif
Lieu: Vendée
Date d'inscription: 14 Jan 2008
Messages: 99

Re: ArcGIS 10.2 : requete python simple

Salut,

Pas besoin de script python pour ce que tu veux faire.

Une simple requête spatiale devrait suffire.

Par contre ca peut être très lourd si tu as beaucoup de points et de communes.

Cordialement.

Hors ligne

 

#4 Mon 29 June 2015 10:42

mfrebout
Participant occasionnel
Lieu: Tours
Date d'inscription: 5 Sep 2005
Messages: 37
Site web

Re: ArcGIS 10.2 : requete python simple

Bonjour,

La fonction spatiale st_intersects est faite pour ça.
Voici un exemple de requête :

Code:

SELECT MonPoint.INSEE, MonPoint.NOM, MonPoint.SHAPE,Commune.Nom 
FROM Commune,MonPoint 
WHERE sde.st_intersects(MonPoint.SHAPE),Commune.SHAPE)=1

A adapter en function du sgbd. Pour ma part je suis sur Oracle ArcSDE.

Cordialement, Mireille Frébout

Hors ligne

 

#5 Tue 30 June 2015 16:37

NicolasSilov
Juste Inscrit !
Date d'inscription: 11 Nov 2014
Messages: 9

Re: ArcGIS 10.2 : requete python simple

J'ai besoin d'un script car le but est ensuite d'avoir a notre disposition un script dans lequel nous pouvons entrer de nouvelles coordonnées quand nous en avons besoin afin de savoir de maniere automatique et rapide dans quelle commune ces coordonnées se trouvent.

Je n'ai pas eu le temps de beaucoup mý pencher ce week end, si ce n'est que j'ai realisé ma requete a partir d'un model builder.
create XY point event, spatial join etc puis j'ai exporté le script.

Toutefois cette technique me permet de piocher uniquement les coordonnées présentes dans le shape renseigné au préalable et ne me permet pas de renseigner des coordonnées indépendamment .

Mireille je vais essayer cette fonction qui me parait intéréssante.

Merci a tous

Dernière modification par NicolasSilov (Tue 30 June 2015 16:40)

Hors ligne

 

#6 Tue 30 June 2015 17:05

lebon henri
Participant actif
Lieu: Vendée
Date d'inscription: 14 Jan 2008
Messages: 99

Re: ArcGIS 10.2 : requete python simple

Vous travaillez avec un simple shapefile, les fonctions ArcSDE ne vous concerne pas il me semble.

Vous n'avez pas de licence arcgis serveur ?

Pensez éventuellement à passer en filegeodatabase, pour gagner en vitesse par rapport au shapefile.

Si vous voulez vraiment vous lancer dans un script, vous allez devoir avoir un script qui construit un point à partir de coordonnées inscrits dans les paramètres que saisis l'utilisateurs, l'injecte dans votre couche de point. Ensuite, croiser cette géométrie avec la couche commune. tout ca en utilisant arcpy.da

Bon courage.

Hors ligne

 

#7 Tue 30 June 2015 17:47

NicolasSilov
Juste Inscrit !
Date d'inscription: 11 Nov 2014
Messages: 9

Re: ArcGIS 10.2 : requete python simple

Salut lebon henri, pourrais tu me donner un exemple de script avec arcpy.da? Comment t'y prendrais tu pour créer cette variable coordonnées, en faire un evenement point et le lier a la couche commune pour connaitre instantanement le nom de la commune source?

le script que j'obtiens pour le moment est celui ci:

Code:

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ### Description: make a XY event layer from personal coordinates and export it to a layer file
>>> 
>>> ### import system modules
>>> import arcpy
>>> from arcpy import env
>>> 
>>> ### set environment settings
>>> env.works = "Z:\2_CONTRATOS\00111_CAMBIO CLIMATICO, VIVIENDA Y OT\06_REF"
>>> 
>>> ### Local variables
>>> X = 979584.331385
>>> Y = 1351252.35644
>>> coordinates = [X,Y]
>>> print coordinates
[979584.331385, 1351252.35644]
>>> Municipios = "\\\\Servidor\\geodatabase\\COLOMBIA\\1_NACION\\COLOMBIA\\Export_Output.shp"
>>> Mun_points_layer = "mun_points_layer"
>>> 
>>> ### Process: Make XY event Layer ###
>>> arcpy.gp.MakeXYEventLayer(coordinates, "X", "Y", mun_points_layer, "", "")

Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    arcpy.gp.MakeXYEventLayer(coordinates, "X", "Y", mun_points_layer, "", "")
NameError: name 'mun_points_layer' is not defined
>>> arcpy.gp.MakeXYEventLayer(coordinates, "X", "Y", Mun_points_layer, "", "")

Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    arcpy.gp.MakeXYEventLayer(coordinates, "X", "Y", Mun_points_layer, "", "")
  File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\geoprocessing\_base.py", line 498, in <lambda>
    return lambda *args: val(*gp_fixargs(args, True))
RuntimeError: Object: Error in executing tool
>>>

Dernière modification par NicolasSilov (Wed 01 July 2015 17:21)

Hors ligne

 

Pied de page des forums

Powered by FluxBB