将 arcgis 日期字段转换为一年中的某天

2024-06-23 03:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前在ArcGIS中有多个要素类,它们都包含一个名为DateSample_DateT0_Date的字段,其中包含每个采样的日期。日期不包含前导零(例如7/4/201407/04/2014)。在

我需要一个python或arcpy代码,它可以将字段中的样本日期转换为一年中的相应日期(闰年)(1月1日为1日,12月31日为365)。
我见过很多代码使用datetime和strptime,这似乎是我需要走的路,但我看到的大多数代码都要求用户输入他们要查找的特定日期,但由于我有太多的数据文件,我正在寻找一个代码,将其自动化为我。请告诉我你知道的任何代码可以帮助我做到这一点。在

import arcpy  
import datetime  
from datetime import datetime  
fcList = arcpy.ListFeatureClasses()  
for fc in fcList:  
    if "DOY" not in arcpy.ListFields(fc):  
        arcpy.AddField_management(fc,"DOY","SHORT")  
    if "DOY" in arcpy.ListFields(fc):      
        if "Date" in arcpy.ListFields(fc):  

Tags: sample代码inimportdatetimedateif要素
2条回答

您可以使用datetime module。假设您的日期是月/日/年:

from datetime import datetime

date_string = "7/4/2014"

parts = date_string.split("/")

month = int(parts[0])
day = int(parts[1])
year = int(parts[2])

print(datetime(year, month, day).timetuple().tm_yday)

使用datetime包做这件事非常简单。它有一个名为strptime的函数,它接受一个字符串并将其转换为日期时间。然后还有另一个名为strftime的函数,它将以特定格式输出日期时间(在您的例子中是一年中的某一天)。在

有关日期时间here的更多信息,请参阅文档。在

获取年份日期的示例:

def get_DOY(date_string):
    # First convert string to datetime object
    parsed_datetime = datetime.datetime.strptime(test_str, '%m/%d/%Y') 

    # Then get day of year from datetime
    day_of_year = parsed_datetime.timetuple().tm_yday
    return day_of_year

编辑:更简单的方法是从timetuple中获取一年中的哪一天,以便它直接将其输出为int

我没有arcgis方面的经验,但假设函数是.getValue以根据字段名获取值:

^{pr2}$

相关问题 更多 >

    热门问题