在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!)
使用说明:
字段类型:目标字段必须是日期类型(Date)
执行顺序:代码会按照记录在属性表中的显示顺序执行
结果示例(假设今天是2024年1月15日):
第1条记录:2024-01-15
第2条记录:2024-01-16
第3条记录:2024-01-17
第4条记录:2024-01-18
推荐使用方法2或方法3
这些方法不依赖于OBJECTID,而是按照记录的处理顺序生成日期,更加可靠。确保在运行前:
创建好日期类型的字段
字段计算器设置为Python
代码正确复制到相应区域
选择其中一种方法,根据你的具体需求调整即可。