初始化

This commit is contained in:
2026-04-22 12:27:49 +08:00
commit 4857cb6e45
73 changed files with 20927 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
'''
ArcGis 字段计算器 模块代码
'''
codeblock_dltb_yjdl = """
def calculate_yjdl(dlbm):
if str(dlbm).startswith('01'):
return '耕地'
elif str(dlbm).startswith('02'):
return '园地'
elif str(dlbm).startswith('03'):
return '林地'
elif str(dlbm).startswith('04'):
return '草地'
else:
return '其他'"""
codeblock_dltb_ejdl = """
def calculate_ejdl(dlbm,dlmc):
if str(dlbm).startswith('03'):
return '林地'
elif str(dlbm).startswith('04'):
return '草地'
elif str(dlbm).startswith('12'):
return '其他'
elif str(dlbm).startswith('0101'):
return '水田'
elif str(dlbm).startswith('0102'):
return '水浇地'
elif str(dlbm).startswith('0103'):
return '旱地'
elif str(dlbm).startswith('0201'):
return '果园'
elif str(dlbm).startswith('0202'):
return '茶园'
elif str(dlbm).startswith('0203'):
return '橡胶园'
elif str(dlbm).startswith('0204'):
return '其他园地'
else:
return dlmc"""
codeblock_cal_shfj = """
def calculate_shfj(girdcode):
if int(girdcode) == 1:
return "重度酸化"
elif int(girdcode) == 2:
return "中度酸化"
elif int(girdcode) == 3:
return "轻度酸化"
elif int(girdcode) == 4:
return "弱酸化"
else: # dPH
return "其他"
"""

View File

@@ -0,0 +1,49 @@
# -*- coding: utf-8 -*-
'''
公共配置
- 地区分组
- 土壤性质字典
- 土壤性质分级字典
- 土壤性质分级标准字典
'''
# 地区分组
guangxi_region = ['广西壮族自治区', '北海市', '海城区', '银海区', '铁山港区', '苍梧县', '容县', '靖西市', '兴宁区', '邕宁区', '武鸣区', '天峨县', '平南县', '港南区', '来宾市']
yunnan_region = ['云南省', '西畴县', '马关县', '澜沧县', '双江县', '永德县', '寻甸县', '罗平县', '丘北县', '永仁县', '南华县', '双柏县', '武定县', '祥云县', '楚雄彝族自治州']
# 土壤性质字典
soil_prop_dict = {
"AB": "有效硼",
"ACU": "有效铜",
"AMN": "有效锰",
"AMO": "有效钼",
"AS1": "有效硫",
"AZN": "有效锌",
"CEC": "阳离子交换量",
"ECA": "交换性钙",
"EMG": "交换性镁",
"TSE": "全硒",
"TN": "全氮",
"TP": "全磷",
"TK": "全钾",
"AFE": "有效铁",
"AK": "速效钾",
"AP": "有效磷",
"TRRZ": "土壤容重",
"OM": "有机质",
"FL": "粉粒含量",
"NL": "黏粒含量",
"SL": "砂粒含量",
"PH": "土壤 pH",
"YXTCHD": "有效土层厚度",
"GZCHD": "耕作层厚度",
"TRZD": "土壤质地",
"TRZD12": "土壤质地",
"LSFD": "砾石丰度",
"三普PH": "三普PH",
"二普PH": "二普PH",
"测土PH": "测土PH",
"二普-三普": "二普-三普",
"测土-三普": "测土-三普",
"二普-测土": "二普-测土"
}

125
tools/config/custom_sort.py Normal file
View File

@@ -0,0 +1,125 @@
'''
自定义排序yl_order-亚类排序ts_order-土属排序
'''
yl_order = [
"典型砖红壤",
"典型赤红壤",
"典型红壤",
"黄红壤",
"红壤性土",
"典型黄壤",
"漂洗黄壤",
"表潜黄壤",
"黄壤性土",
"暗黄棕壤",
"典型新积土",
"滨海风沙土",
"红色石灰土",
"黑色石灰土",
"棕色石灰土",
"黄色石灰土",
"酸性紫色土",
"中性紫色土",
"石灰性紫色土",
"硅质岩粗骨土",
"典型潮土",
"灰潮土",
"山地灌丛草甸土",
"泥炭沼泽土",
"盐化沼泽土",
"滨海潮滩盐土",
"含盐酸性硫酸盐土",
"潴育水稻土",
"淹育水稻土",
"渗育水稻土",
"潜育水稻土",
"漂洗水稻土",
"咸酸水稻土",
]
ts_order = [
"涂砂质砖红壤",
"暗泥质砖红壤",
"麻砂质砖红壤",
"砂泥质砖红壤",
"红泥质赤红壤",
"暗泥质赤红壤",
"麻砂质赤红壤",
"硅质赤红壤",
"砂泥质赤红壤",
"泥质赤红壤",
"灰泥质赤红壤",
"红泥质红壤",
"麻砂质红壤",
"砂泥质红壤",
"泥质红壤",
"麻砂质黄红壤",
"硅质黄红壤",
"砂泥质黄红壤",
"灰泥质黄红壤",
"泥砂质红壤性土",
"麻砂质黄壤",
"砂泥质黄壤",
"麻砂质漂洗黄壤",
"砂泥质漂洗黄壤",
"砂泥质表潜黄壤",
"砂泥质黄壤性土",
"灰泥质黄壤性土",
"麻砂质暗黄棕壤",
"砂泥质暗黄棕壤",
"山洪土",
"滨海固定风沙土",
"红色石灰土",
"黑色石灰土",
"棕色石灰土",
"黄色石灰土",
"酸紫砂土",
"酸紫壤土",
"酸紫黏土",
"紫泥土",
"灰紫壤土",
"灰紫泥土",
"白粉土",
"潮壤土",
"石灰性灰潮壤土",
"灰潮砂土",
"灰潮壤土",
"山地灌丛草甸砂土",
"山地灌丛草甸壤土",
"泥炭沼泽土",
"盐化沼泽土",
"涂砂盐土",
"涂泥盐土",
"含盐酸性硫酸盐土",
"潮泥田",
"潮泥砂田",
"涂泥田",
"麻砂泥田",
"砂泥田",
"鳝泥田",
"灰泥田",
"紫泥田",
"红泥田",
"白粉泥田",
"暗泥田",
"浅潮泥田",
"浅潮泥砂田",
"浅暗泥田",
"浅麻砂泥田",
"浅砂泥田",
"浅鳝泥田",
"浅灰泥田",
"浅紫泥田",
"浅白粉泥田",
"浅红泥田",
"渗潮泥田",
"渗砂泥田",
"渗紫泥田",
"青潮泥田",
"青灰泥田",
"青红泥田",
"烂泥田",
"泥炭土田",
"漂红泥田",
"咸酸田",
]

View File

@@ -0,0 +1,141 @@
'''
用于pandas dataframe中字段计算
'''
# 计算一级土地利用类型
def calculate_yjdl(dlbm):
if str(dlbm).startswith('01'):
return '耕地'
elif str(dlbm).startswith('02'):
return '园地'
elif str(dlbm).startswith('03'):
return '林地'
elif str(dlbm).startswith('04'):
return '草地'
else:
return '其他'
# 计算二级土地利用类型
def calculate_ejdl(dlbm):
dlbm_str = str(dlbm).strip()
if dlbm_str.startswith('0101'):
return '水田'
elif dlbm_str.startswith('0102'):
return '水浇地'
elif dlbm_str.startswith('0103'):
return '旱地'
elif dlbm_str.startswith('0201'):
return '果园'
elif dlbm_str.startswith('0202'):
return '茶园'
elif dlbm_str.startswith('0203'):
return '橡胶园'
elif dlbm_str.startswith('0204'):
return '其他园地'
elif dlbm_str.startswith('03'):
return '林地'
elif dlbm_str.startswith('04'):
return '草地'
elif dlbm_str.startswith('12'):
return '其他'
else:
return '未分类'
# 计算母岩母质
def calculate_muyan(soil_name):
soil_name = str(soil_name) # 确保为字符串
# 将"紫"放在最前面
if "" in soil_name:
return "紫色砂页岩"
elif "红砂" in soil_name:
return "第三纪红砂岩"
elif "麻砂" in soil_name:
return "花岗岩或花岗片麻岩"
elif "涂砂" in soil_name:
return "砂质浅海沉积物"
elif "暗泥" in soil_name:
return "玄武岩、火山灰(渣)"
elif "砂泥" in soil_name:
return "砂页岩、砂岩、砂砾岩"
elif "" in soil_name or "白粉泥" in soil_name:
return "石英砂岩、石英岩、硅质岩"
elif "灰泥" in soil_name or "石灰" in soil_name:
return "石灰岩、白云岩、大理岩"
elif "磷灰" in soil_name:
return "磷灰岩"
elif "红泥" in soil_name:
return "第四纪红色黏土"
elif "红土" in soil_name:
return "第三纪红色黏土"
elif "风砂" in soil_name:
return "风积砂"
elif "潮泥砂" in soil_name or "泥砂" in soil_name or "新积土" in soil_name:
return "洪积物"
elif "淡涂泥" in soil_name:
return "河口相沉积物"
elif "涂泥" in soil_name:
return "海相沉积物"
elif "黄泥" in soil_name:
return "古老洪冲积物"
# 将容易误匹配的放在最后
elif "潮泥" in soil_name or "潮砂" in soil_name or "潮土" in soil_name:
return "冲积物"
elif "" in soil_name or "鳝泥" in soil_name:
return "片岩、板岩、千枚岩、页岩、泥岩"
else:
return "其他" # 或者返回空值 ""
def calculate_muzhi(value):
if value in ["第三纪红砂岩", "花岗岩或花岗片麻岩", "玄武岩、火山灰(渣)",
"砂页岩、砂岩、砂砾岩", "片岩、板岩、千枚岩、页岩、泥岩", "石英砂岩、石英岩、硅质岩",
"石灰岩、白云岩、大理岩", "磷灰岩", "紫色砂页岩", "第三纪红色黏土", "风积砂"]:
return "残坡积物"
elif value in ["冲积物", "第四纪红色黏土", "洪积物", "海相沉积物", "古老洪冲积物", "河口相沉积物", "砂质浅海沉积物"]:
return "第四纪松散沉积物"
else:
return "未知"
"""
"粉(砂)质黏壤土": "1",
"粉(砂)质黏土": "2",
"粉(砂)质壤土": "3",
"黏壤土": "4",
"黏土": "5",
"壤土": "6",
"壤质黏土": "7",
"砂土及壤质砂土": "8",
"砂质黏壤土": "9",
"砂质黏土": "10",
"砂质壤土": "11",
"重黏土": "12"
"""
def cal_trzd(value):
if value == "砂土及壤质砂土":
return 1
elif value == "砂质壤土":
return 2
elif value == "壤土":
return 3
elif value == "粉砂质壤土":
return 4
elif value == "砂质黏壤土":
return 5
elif value == "黏壤土":
return 6
elif value == "粉砂质黏壤土":
return 7
elif value == "砂质黏土":
return 8
elif value == "壤质黏土":
return 9
elif value == "粉砂质黏土":
return 10
elif value == "黏土":
return 11
elif value == "重黏土":
return 12
else:
return 0