118 lines
2.2 KiB
Python
118 lines
2.2 KiB
Python
#!/usr/bin/env python
|
|
# coding: utf-8
|
|
|
|
# In[1]:
|
|
|
|
|
|
# Khai báo các thư viện cần thiết
|
|
from new_import_ODC import *
|
|
|
|
# Khai báo đường dẫn đến kết quả phân loại và dữ liệu của địa phương
|
|
KD_path = "ThuanHoa/KhoanhDat/ThuanHoa_TKDD2022.shp"
|
|
KetQuaPhanLoaiDat = "KetQuaPhanLoaiDatODC.tif"
|
|
|
|
|
|
# In[2]:
|
|
|
|
|
|
# khai báo các loại đất từ dữ liệu kiểm kê ứng với các hiện trạng được phân loại từ viễn thám
|
|
CODE_MAP = {
|
|
"BHK": 2,
|
|
"CLN": 3,
|
|
"DGD": 6,
|
|
"DGT": 6,
|
|
"DNL": 6,
|
|
"DRA": 6,
|
|
"DSH": 6,
|
|
"DTL": 5,
|
|
"DTS": 6,
|
|
"DYT": 6,
|
|
"LUC": 1,
|
|
"NKH": 3,
|
|
"NTD": 6,
|
|
"NTS": 4,
|
|
"ONT": 6,
|
|
"SKC": 6,
|
|
"SKX": 6,
|
|
"SON": 5,
|
|
"TMD": 6,
|
|
"TON": 6,
|
|
"TSC": 6,
|
|
}
|
|
|
|
# Khai báo các nhãn phân loại đất ứng với 3 loại đất chính
|
|
HT_MAP = {
|
|
"NN": {"name": "Đất Nông Nghiệp", "data": [1, 2, 3, 4]},
|
|
"PNN": {"name": "Đất Phi Nông Nghiệp", "data": [6]},
|
|
"TQ": {"name": "Đất Thổ Quả", "data": [15]},
|
|
}
|
|
|
|
|
|
# In[3]:
|
|
|
|
|
|
# Tiến hành chồng lắp
|
|
result = compare(KD_path, KetQuaPhanLoaiDat, CODE_MAP, HT_MAP)
|
|
|
|
|
|
# In[4]:
|
|
|
|
|
|
# cấu hình màu cho các loại sử dụng đất
|
|
colors = [
|
|
"#abcee9",
|
|
"#ffffc0",
|
|
"#c4ff9e",
|
|
"#ffd6a8",
|
|
"#93ddda",
|
|
"#1aeef7",
|
|
"#ffa7f2",
|
|
"#33ee33",
|
|
]
|
|
labels = ["Lúa tôm", "Lúa", "CHN", "CLN", "TS", "Sông", "Đất xây dựng", "Rừng"]
|
|
|
|
|
|
# In[5]:
|
|
|
|
|
|
# Lưu kết quả
|
|
save_result(result, HT_MAP)
|
|
|
|
|
|
# In[6]:
|
|
|
|
|
|
# hiển thị kết quả
|
|
xx = []
|
|
|
|
for k, v in result.items():
|
|
rs = merge_arrays(v, nodata=np.nan)
|
|
xx.append(rs.squeeze(drop=True))
|
|
xx = xr.concat(xx, pd.Index([HT_MAP[x]["name"] for x in HT_MAP], name="name"))
|
|
|
|
colorval = list(range(len(colors)))
|
|
options = {
|
|
"cmap": colors,
|
|
"clim": (0, 8),
|
|
"aspect": "equal",
|
|
"height": 400,
|
|
"colorbar_opts": {
|
|
"major_label_overrides": dict(zip(colorval, labels)),
|
|
"major_label_text_align": "left",
|
|
"ticker": FixedTicker(ticks=colorval),
|
|
},
|
|
}
|
|
|
|
xx.hvplot(
|
|
groupby="name",
|
|
rasterize=True, # Use Datashader, particularly useful for dask arrays
|
|
aggregator=reductions.mode(), # Datashader selects mode value, requires 'hv.Image'
|
|
).options(opts.Image(**options))
|
|
|
|
|
|
# In[ ]:
|
|
|
|
|
|
|
|
|