''' 用于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