datetime.date.today ()에서 오늘 날짜로 날짜 필드를 계산합니까?


10

arcpy.CalculateField_management를 사용하여 속성 테이블에 현재 날짜를 추가하는 도구 부분을 작업 중입니다. 나는 인터 웹에서 광범위하고 방황 했으며이 문제에 대한 해결책을 찾지 못하는 것 같습니다.

이 코드를 사용할 때 "12:00:00 AM"값을 얻습니다.

    input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
    today = datetime.date.today()
    dte = today.strftime('%m/%d/%Y')
    arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON")

이 코드를 사용할 때 오늘 날짜 "10/07/2014"에서 "06/19/1905"값을 얻습니다.

    input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
    today = datetime.date.today()
    dte = str(today)
    arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON")

내가 뭘 잘못하고 있는지 생각해? 업데이트 커서 사용을 피하고 싶지만 마지막 옵션 인 경우 업데이트 커서를 사용합니다.


이 코드의 Python 부분이 날짜와 관련하여 올바르게 작동하는 것으로 보입니다. 그러나 문제는 코드의 Arcpy 부분에 있다고 생각합니다. "PYTHON"대신 "VB"를 시도하여 필드에서 올바른 값을 업데이트하는지 확인하십시오.
F_Kellner

이렇게해도 문제가 해결되지는 않았지만 값을 12:00:54 AM으로 변경하면 이상한 결과가 나타납니다.
fathom analytics 11

답변:


10

업데이트 커서는 100 %의 시간 동안 필드 계산기를 수행합니다.

이것을 표현식으로 작성해야합니다.

import arcpy, datetime

fc = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
field = "DTCARXTRCT"
exp = '''def add_date():
  import time
  return time.strftime("%Y/%m/%d")'''

arcpy.CalculateField_management(fc, field, 'add_date()',
                                'PYTHON', exp)
print 'done'

datetime.date.today ()가 필드 계산기에서 작동하지 않고 strftime으로 전환되었습니다.

또는 자신의 변수를 제공 할 수있는 더 나은 방법을 원한다면 커서를 사용하십시오.

import arcpy, datetime

fc = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
field = "DTCARXTRCT"
with arcpy.da.UpdateCursor(fc, [field]) as rows:
    for row in rows:
        rows.updateRow([datetime.date.today()])
print 'done'

나는이 두 가지를 모두 테스트했으며 훌륭하게 작동합니다. 감사! 참고로, 업데이트 커서는 비교적 간단한 것으로 더 많은 것을 작성해야하기 때문에 업데이트 커서를 사용하고 싶지 않습니다. 파이썬에 익숙하지 않고 함수의 유용성을 이해하지 못하는 것일 수 있습니다. 패키징 된 gp 도구를 사용하면 커서를 사용하는 것보다 나에게 더 의미가 있습니다. 생각?
fathom Analytics

2
그것은 완전히 이해할 수 있습니다. 파이썬을 처음 시작할 때 커서가 두려웠습니다. 그러나 파이썬에 익숙해지면 커서가 훨씬 유연하다는 것을 알 수 있습니다. 또한 원래 답변에서 언급했듯이 커서의 성능이 훨씬 뛰어납니다. 제가 근무했던 카운티에서 GIS 컨설턴트는 필드 계산기를 여러 번 사용한 매우 긴 프로세스에 대한 스크립트를 작성했으며이 작업을 실행하는 데 2 ​​시간이 걸렸습니다. 파이썬으로 더 나아 졌을 때 스크립트를 다시 작성하고 필드 calc 대신 커서를 사용했으며 15 분 안에 실행되었습니다.
crmackey

0

다음을 사용하십시오.

time.strftime("%Y/%m/%d")

이 부분을 사용하여 코드를 수정할 위치를 모릅니다. 전체 코드를 표시하도록 게시물을 편집 할 수 있습니까?
fathom analytics

이 줄은 위의 답변에 통합되었습니다
detroit_hc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.