142 lines
4.4 KiB
Python
142 lines
4.4 KiB
Python
'''
|
|
用于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
|