Py学习  »  Python

在ArcGIS Pro字段计算, 写Python代码,日期顺序,第一条记录是今天,第二条记录是明天,依次类推

GISAI • 1 周前 • 35 次点击  

在ArcGIS Pro中使用字段计算器为记录创建从今天开始的顺序日期,可以使用以下Python代码:

方法1:基于OBJECTID或FID创建顺序日期

python

from datetime import datetime, timedelta


# 基于记录顺序创建从今天开始的日期

def create_sequence_date(record_id):

    if record_id is None:

        return None

    today = datetime.now().date()

    # 第一条记录是今天(offset=0),第二条是明天(offset=1)...

    future_date = today + timedelta(days=record_id - 1)

    return future_date


# 在字段计算器中调用(使用OBJECTID或FID)

create_sequence_date(!OBJECTID!)


方法2:使用全局计数器(推荐)

from datetime import datetime, timedelta


# 使用全局计数器确保顺序正确

rec_count = 0

def sequential_dates():

    global rec_count

    today = datetime.now().date()

    future_date = today + timedelta(days=rec_count)

    rec_count += 1

    return future_date


# 在字段计算器中直接调用(不带参数)

sequential_dates()


方法3:使用行号(更可靠的方法)

from datetime import datetime, timedelta


# 使用行号创建顺序日期

counter = 0

def date_by_row():

    global counter

    today = datetime.now().date()

    target_date = today + timedelta(days=counter)

    counter += 1

    return target_date


# 在字段计算器中调用

date_by_row()


方法4:完整的预逻辑脚本代码

在字段计算器的"预逻辑脚本代码"框中输入:

from datetime import datetime, timedelta


# 初始化计数器

current_index = 0


def generate_sequence_dates():

    global current_index

    today = datetime.now().date()

    result_date = today + timedelta(days=current_index)

    current_index += 1

    return result_date

然后在"表达式"框中输入:

python

generate_sequence_dates()




方法5:基于排序字段创建日期序列

python

from datetime import datetime, timedelta


# 如果有排序字段,可以使用排序字段的值

def date_by_sort_field(sort_field):

    if sort_field is None:

        return None

    today = datetime.now().date()

    # 假设sort_field从1开始

    future_date = today + timedelta(days=sort_field - 1)

    return future_date


# 在字段计算器中调用

date_by_sort_field(!Sort_Field!)


 在字段计算器中调用date_by_sort_field(!Sort_Field!)

使用说明:

  1. 字段类型:目标字段必须是日期类型(Date)

  2. 执行顺序:代码会按照记录在属性表中的显示顺序执行

  3. 结果示例(假设今天是2024年1月15日):

  • 第1条记录:2024-01-15

  • 第2条记录:2024-01-16

  • 第3条记录:2024-01-17

  • 第4条记录:2024-01-18

推荐使用方法2或方法3

这些方法不依赖于OBJECTID,而是按照记录的处理顺序生成日期,更加可靠。确保在运行前:

  • 创建好日期类型的字段

  • 字段计算器设置为Python

  • 代码正确复制到相应区域

选择其中一种方法,根据你的具体需求调整即可。



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/189876