Suite

Extraire les informations temporelles de arcpy.da.searchcursor et Tuples


J'ai donc une classe d'entités dans une GDB qui contient des données temporelles que je souhaite effectuer des calculs via arcpy. Ces données ont été entrées à partir d'une chaîne dans un format datetime dans la classe d'entités via un script qui gère un type spécial de fichier ASCII.

Le format de sortie de ce tuple, lorsqu'il est accessible à l'aide de arcpy.da.SearchCursor() prend la forme suivante :

(dateheure.dateheure(1899, 12, 30, 13, 59, 18),)

Lorsque le type de valeur dont j'ai besoin pour effectuer un calcul supplémentaire doit prendre la forme suivante :

dateheure.dateheure(1899, 12, 30, 0, 0)

J'arrive à ce problème quand j'essaye le code suivant :

fc = "C:scripting	imetest.gdb	est1" rows = arcpy.da.SearchCursor(fc,["time"]) a = [] pour la ligne dans les lignes : a.append(row)

Et quand je regarde le type de sortie, je reçois un "tuple", qui est la sortie de données normale de la classe arcpy.da.SearchCursor().

tapez(a[0]) 

Mais ce que je veux vraiment faire, c'est séparer les informations du tuple afin que je puisse effectuer des opérations python normales avec les objets datetime.datetime.

Les pages d'aide n'ont pas été très utiles pour trouver un moyen de séparer les données du format de tuple. Je ne peux pas imprimer les informations à l'intérieur du tuple, ni accéder comme un tableau. Ce que je cherche à faire est d'obtenir l'objet datetime.datetime à l'intérieur du tuple afin que je puisse effectuer mon analyse. Quelqu'un a-t-il déjà rencontré ce problème ?

J'ai téléchargé un fichier de formes avec le problème que j'exécute sur http://brianbancroft.ca/docs/timetest.zip au cas où quelqu'un voudrait essayer de l'exécuter.


Bien que je n'aie pas de réponse au problème de l'extraction de données d'un tuple avec un seul élément, j'ai trouvé une solution de contournement.

Au lieu d'utiliser arcpy.da.SearchCursor(), j'ai trouvé que arcpy.SearchCursor() faisait le travail. En utilisant les mêmes exemples de données, j'ai découvert que vous pouviez extraire des objets datetime.datetime en procédant comme suit :

a = [] rows = arcpy.SearchCursor(fc) pour la ligne dans les lignes : a.append(row.getValue("time"))

Si vous essayez d'extraire la valeur de plusieurs champs, cela entraînera quelques lignes de code supplémentaires dans la boucle for/while, mais le travail sera tout de même fait.