#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 ).
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
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
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