#1 Fri 26 October 2012 09:05
[10.x] Calcul de champ "dynamique"
Bonjour,
Je recherche une méthode, un outil ou un script me permettant de mettre à jour un champ dans une gdb de manière dynamique, un peu à la manière du champ "shape area" quand on quitte une session de mise à jour.
Le calcul de ce champ "dynamique" sera, par exemple, une formule de densité qui reposera sur plusieurs autres champs dont le "shape area".
Selon vous, vers quoi dois-je m'orienter?
Merci d'avance pour vos précieuses lumières.
Martin
Dernière modification par nitram (Fri 26 October 2012 09:16)
Hors ligne
#3 Wed 14 November 2012 09:02
Re: [10.x] Calcul de champ "dynamique"
Bonjour, et merci pour la réponse
Le truc c'est que je n'ai pas Access
J'ai posté la question chez les voisins @
http://www.forumsig.org/showthread.php?t=35433
Et l'on m'a posté une réponse se rapprochant de la tienne:
Si la gdb est stockée dans un SGBDR, alors tu peux essayer de faire un "trigger" (déclencheur en français). En gros, cela commande un événement sur un champ en fonction de ce qui se passe sur un autre champ.
Mais là non plus, ça ne colle pas à mon cas...
En fait, je souhaiterais une solution "interne" à arcgis (au mieux à Arcmap durant une session d'édition), du coup peut-être m'orienter vers un model builder en essayant de paramétrer les conditions d'exécutions.
A suivre ...
Dernière modification par nitram (Wed 14 November 2012 09:04)
Hors ligne
#4 Wed 14 November 2012 10:12
Re: [10.x] Calcul de champ "dynamique"
En fait, je souhaiterais une solution "interne" à arcgis (au mieux à Arcmap durant une session d'édition), du coup peut-être m'orienter vers un model builder en essayant de paramétrer les conditions d'exécutions.
Eh bien, dans ce cas, un petit script/toolbox suffirait, je pense, ca ne devrait pas être complexe (outil calculer un champ).
Un double -clic sur celui ci calculerait la formule. De cette façon, tu n'aurais pas à rentrer la formule à chaque fois, mais ça reste manuel.
Pas mieux
Hors ligne
#5 Thu 15 November 2012 14:08
- Kevin Jousseaume
- Participant assidu
- Lieu: Nanterre, région parisienne
- Date d'inscription: 20 Mar 2006
- Messages: 217
Re: [10.x] Calcul de champ "dynamique"
Bonjour,
Il existerait une autre solution mais qui serait bien plus lourde à mettre en place et qui nécessiterait une plateforme de développement : concevoir une extension de l'éditeur au sein d'un Add-In. En agissant sur les évènements de l'édition, vous pouvez détecter qu'un objet a été créé ou modifié et, en testant que cet objet répond à des critères spécifiques que vous avez définis (appartenance à une classe d'entités, présence d'un champ, etc.), vous pouvez calculer et modifier la valeur d'un champ.
Des explications complémentaires (en anglais...) ici :
http://help.arcgis.com/en/sdk/10.0/arco … 391000000/
Cordialement
Hors ligne
#6 Thu 15 November 2012 14:32
- Kevin Jousseaume
- Participant assidu
- Lieu: Nanterre, région parisienne
- Date d'inscription: 20 Mar 2006
- Messages: 217
Re: [10.x] Calcul de champ "dynamique"
Pour préciser/compléter mon propos : si vous disposez d'une version 10.1, vous avez la possibilité de développer un complément Python, ce qui vous affranchi de la contrainte de la plateforme de développement (.NET ou Java). Des informations détaillées ici (en français cette fois-ci ) :
- Qu'est-ce qu'un complément Python : http://resources.arcgis.com/fr/help/mai … 0025000000
- Extension d'application avec un complément Python http://resources.arcgis.com/fr/help/mai … 0019000000
De la même manière, vous pouvez capturer les évènements de mise à jour (onChangeFeature(self)) ou de création (onCreateFeature(self)) d'une entité et ainsi agir dessus.
Hors ligne
#7 Thu 15 November 2012 16:23
- n314
- Participant assidu
- Date d'inscription: 6 Sep 2005
- Messages: 697
Re: [10.x] Calcul de champ "dynamique"
Tout à été dit. Il n'existe pas de trigger dans ArcGIS, d'où:
1_Lancer le calcul manuellement à chaque édition,
1.1 que ce soit dans la calculatrice
1.2 ou via un script
2_Automatiser le calcul, en s'abonnant aux événements d'édition, par programmation
2.1 Via les add-in (.net ou python)
2.2 Via une classe d'entité personnalisée, héritant de la classe d'entité de base
Hors ligne