refactor: reorganize project structure by moving core modules and update import paths in API server
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# In[1]:
|
||||
|
||||
|
||||
get_ipython().run_cell_magic('time', '', '%matplotlib inline\n\nimport importlib\nimport new_import_ODC \n\nimportlib.reload(new_import_ODC)\n\nfrom new_import_ODC import *\n')
|
||||
|
||||
|
||||
# In[2]:
|
||||
|
||||
|
||||
get_ipython().run_cell_magic('time', '', '# Dask gateway\ncluster, client = notebook_utils.initialize_dask(use_gateway=True, workers=(1,4))\ndc = datacube.Datacube()\n\n# Configure s3 access\nconfigure_s3_access(aws_unsigned=False, requester_pays=True, client=client)\n\nclient\n')
|
||||
|
||||
|
||||
# In[3]:
|
||||
|
||||
|
||||
## cấu hình thời gian lấy ảnh và tọa độ
|
||||
date_range = ('2022-09-01', '2023-10-01')
|
||||
longtitude_range = (105.86575, 105.94120)
|
||||
latitude_range = (9.65070, 9.69850)
|
||||
|
||||
|
||||
# In[4]:
|
||||
|
||||
|
||||
## truy vấn ảnh vệ tinh sen2
|
||||
data = load_data(dc, date_range, longtitude_range, latitude_range)
|
||||
notebook_utils.heading(notebook_utils.xarray_object_size(data))
|
||||
display(data)
|
||||
|
||||
|
||||
# In[5]:
|
||||
|
||||
|
||||
get_ipython().run_cell_magic('time', '', '# Tiến hành loại bỏ các vị trí bị mây ảnh hưởng\nresult = mask_clean(data)\nprogress(result)\n')
|
||||
|
||||
|
||||
# In[6]:
|
||||
|
||||
|
||||
# Tiến hành tính toán NDVI
|
||||
ds1 = calculate_indices(result, index='NDVI', satellite_mission='s2')
|
||||
ndvi = ds1["NDVI"]
|
||||
display(ndvi)
|
||||
|
||||
|
||||
# In[7]:
|
||||
|
||||
|
||||
## ảnh NDVI chưa điền mây (fill nan)
|
||||
plt.imshow(ndvi.isel(time=50))
|
||||
|
||||
|
||||
# In[8]:
|
||||
|
||||
|
||||
# đặt thời gian các mùa
|
||||
time_split = [slice('2022-09-01', '2023-01-01'),
|
||||
slice('2023-01-01', '2023-05-01'),
|
||||
slice('2023-05-01', '2023-07-01'),
|
||||
slice('2023-07-01', '2023-10-01')]
|
||||
|
||||
# Điền mây ở các vị trí mang giá trị nan (fill nan)
|
||||
fill_nan_ndvi = fill_nan(ndvi, time_split)
|
||||
|
||||
# In kết quả ảnh ndvi đã điền mây (đã fill nan)
|
||||
plt.imshow(fill_nan_ndvi.isel(time=50))
|
||||
|
||||
|
||||
# In[9]:
|
||||
|
||||
|
||||
get_ipython().run_cell_magic('time', '', "## tính ndvi theo tháng\naverage_ndvi = fill_nan_ndvi.resample(time='1M').mean().persist()\nprogress(average_ndvi)\n")
|
||||
|
||||
|
||||
# In[10]:
|
||||
|
||||
|
||||
# compute average_ndvi
|
||||
average_ndvi = average_ndvi.compute()
|
||||
|
||||
|
||||
# In[11]:
|
||||
|
||||
|
||||
# load dữ liệu sen1
|
||||
coordinates = (longtitude_range, latitude_range)
|
||||
dsvh, dsvv = load_data_sen1(dc, date_range, coordinates)
|
||||
average_vv = calculate_average(dsvv, time_pattern='1M')
|
||||
average_vh = calculate_average(dsvh, time_pattern='1M')
|
||||
|
||||
|
||||
# In[12]:
|
||||
|
||||
|
||||
# load model RF
|
||||
loaded_model = joblib.load(os.path.join("model_train", "model_odc.joblib"))
|
||||
|
||||
# dự đoán
|
||||
data_array = predict(loaded_model, data.rio.crs, average_ndvi, average_vh, average_vv)
|
||||
|
||||
|
||||
# In[13]:
|
||||
|
||||
|
||||
# cấu hình màu cho các loại đất
|
||||
colors = [
|
||||
"#abcee9",
|
||||
"#ffef44",
|
||||
"#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"
|
||||
]
|
||||
# hiển thị phân loại sử dụng đất
|
||||
cmap = ListedColormap(colors)
|
||||
img = data_array.plot(cmap=cmap, add_colorbar=False)
|
||||
cbar = plt.colorbar(img)
|
||||
cbar.ax.set_yticklabels(labels)
|
||||
plt.title("Phân loại sử dụng đất")
|
||||
plt.axis('off')
|
||||
plt.show()
|
||||
|
||||
|
||||
# In[14]:
|
||||
|
||||
|
||||
## cấu hình shapefile ranh giới thuận hòa và vh vv file
|
||||
thuanhoa_path = "ThuanHoa/region/ST_ThuanHoa_Boundaryofficially.shp"
|
||||
|
||||
# cắt theo ranh giới xã thuận hòa
|
||||
region_result = cut_according_shp(thuanhoa_path, average_ndvi, data_array)
|
||||
|
||||
|
||||
# In[15]:
|
||||
|
||||
|
||||
# hiển thị kết quả phân loại sử dụng đất
|
||||
colorval = list(range(len(colors)))
|
||||
options = {
|
||||
'title': 'Phân loại sử dụng đất',
|
||||
'cmap': colors,
|
||||
'clim': (0, 8),
|
||||
'aspect': 'equal',
|
||||
'colorbar_opts': {
|
||||
'major_label_overrides': dict(zip(colorval, labels)),
|
||||
'major_label_text_align': 'left',
|
||||
'ticker': FixedTicker(ticks=colorval),
|
||||
},
|
||||
}
|
||||
|
||||
region_result.hvplot(
|
||||
rasterize = True, # Use Datashader, particularly useful for dask arrays
|
||||
aggregator = reductions.mode(), # Datashader selects mode value, requires 'hv.Image'
|
||||
).options(opts.Image(**options))
|
||||
|
||||
|
||||
# In[16]:
|
||||
|
||||
|
||||
# Lưu lại kết quả
|
||||
region_result.rio.to_raster("KetQuaPhanLoaiDatODC.tif")
|
||||
|
||||
|
||||
# In[17]:
|
||||
|
||||
|
||||
# đóng client, cluster
|
||||
client.close()
|
||||
cluster.close()
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user