J'utilise ArcGIS 10.2 for Desktop, et j'ai parcouru ce site, et je n'arrive pas encore à comprendre ma réponse. Très nouveau pour VBA et Python, mais beaucoup d'années avec ArcGIS. Je sais que je peux le faire lentement avec Select By Attributes, mais cela prend du temps.
J'essaie une jonction spatiale entre les cas de maladie (couche de points) et les secteurs de recensement américains (couche de polygone). Cela nécessite des données de comptage. Pour chaque point / cas, j'ai un champ appelé YEAR avec des plages de dates de 2001 à 2012 selon l'année où le cas s'est produit. J'ai besoin d'une colonne de comptage pour chaque année. Par exemple, le premier que j'appelle COUNT01. Si la date du cas en YEAR est 2001, alors COUNT01 aura un 1. Si c'est une autre année (2002-2012), alors il devra y avoir un 0. J'aurai des colonnes COUNT02, COUNT03 ... COUNT12. Impossible d'avoir une valeur "Null".
Voici ce que j'ai essayé jusqu'à présent
Et voici à quoi ressemblent les données dans Arc.
vba
etvbscript
par unepython
balise. Bien que pas encore parti VBScript est en train d'être dépréciée . Je m'attends à ce qu'il soit facile à faire avec l'analyseur Python une fois que vous aurez fourni une description plus détaillée qui comprend une image / tableau de quelques exemples de lignes montrant l'entrée réelle et la sortie attendue. YEAR est-il un champ de date ou un champ entier contenant des valeurs correspondant à des années?Réponses:
Je pense que c'est ce que vous voulez .... en utilisant python, vous pouvez faire ce qui suit (suppose que les champs YEAR et COUNT0X sont des entiers)
Remarque Python utilise l'indentation pour analyser le code, assurez-vous donc que l'espacement est correct.
la source
if (int(year) == yearVal):
, ou d'autres (voir: informit.com/articles/article.aspx?p=459269&seqNum=7 ).Cette réponse est essentiellement la même que celle répertoriée ci-dessus, mais c'est un moyen de ne pas avoir à utiliser le bloc de code ... pour le champ Count01, vous devez définir l'analyseur sur Python, puis définir votre calcul sur
La façon dont cela se lit est la suivante: définissez le champ sur 1 si le champ YEAR est 2001, si ce n'est pas 2001, puis définissez-le sur 0 ...
Si vous avez plusieurs conditions if, vous pouvez imbriquer la 2ème (et les suivantes) conditions "if" à l'intérieur de l'instruction else, comme celle-ci ...
La façon dont cela se lit est la suivante: définissez le champ sur 1 si le champ YEAR est 2001, si ce n'est pas 2001, puis définissez-le sur 2 si c'est 2002, sinon, définissez-le sur 0 ...
la source
1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else (3 if !YEAR! == 2003 else 0))
Si vous allez utiliser VBScript, votre calcul de champ a été mal configuré. Premièrement, je n'utiliserais pas une variable qui est le nom du champ, c'est déroutant, utilisez un nom différent pour que ce soit clair comme vous le définissiez. Votre "endif" était faux, il devrait être "end if" et votre code aurait dû être dans la section du script de pré-logique. La manière correcte de configurer cela est indiquée ci-dessous. Mais comme les autres l'ont dit, essayez de ne pas utiliser VBScript car ESRI est déterminé à s'en débarrasser en faveur de Python.
la source