Mais

Extração de informações de tempo de arcpy.da.searchcursor e tuplas


Portanto, tenho uma classe de recursos em um GDB que contém dados de tempo que desejo realizar cálculos por meio do arcpy. Esses dados foram inseridos de uma string para um formato de data e hora na classe de recursos por meio de um script que lida com um tipo especial de arquivo ASCII.

O formato de saída desta tupla, quando acessado usando arcpy.da.SearchCursor (), assume a seguinte forma:

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

Onde o tipo de valor que preciso realizar cálculos adicionais deve assumir a seguinte forma:

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

Eu chego a esse problema quando tento o seguinte código:

fc = "C:  scripting  timeest.gdb  test1 " rows = arcpy.da.SearchCursor (fc, ["time"]) a = [] para linha em linhas: a.append (linha)

E quando vejo o tipo de saída, recebo uma 'tupla', que é a saída de dados normal da classe arcpy.da.SearchCursor ().

tipo (a [0]) 

Mas o que eu realmente quero fazer é separar as informações da tupla para que eu possa realizar as operações normais do Python com os objetos datetime.datetime.

As páginas de ajuda não têm sido muito úteis para encontrar uma maneira de separar os dados do formato de tupla. Não consigo imprimir as informações dentro da tupla, nem consigo acessar como um array. O que procuro fazer é chegar ao objeto datetime.datetime dentro da tupla para que eu possa realizar minha análise. Alguém já passou por esse problema antes?

Eu carreguei um shapefile com o problema que estou executando em http://brianbancroft.ca/docs/timetest.zip caso alguém queira tentar executá-lo.


Embora eu não tenha uma resposta para o problema de extração de dados de uma tupla com um único elemento, encontrei uma solução alternativa.

Em vez de usar arcpy.da.SearchCursor (), descobri que arcpy.SearchCursor () fez o trabalho. Usando os mesmos dados de amostra, descobri que você pode extrair objetos datetime.datetime executando o seguinte:

a = [] linhas = arcpy.SearchCursor (fc) para linha em linhas: a.append (row.getValue ("time"))

Se você estiver tentando extrair valor de vários campos, isso resultará em algumas linhas extras de código no loop for / while, mas fará o trabalho da mesma forma.


Assista o vídeo: Tajemnice ruskiego internetu i POLICJA kopiąca krypto (Outubro 2021).