.12 Hiển thị danh sách các tỉnh, huyện có cảnh báo mức 5

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu, tìm hiểu và cài đặt thử nghiệm một số phương pháp cảnh báo nguy cơ cháy rừng 04 (Trang 56 - 65)

KẾT LUẬN

Sau quá trình nghiên cứu, tìm hiểu, với sự nỗ lực của cá nhân và sự giúp đỡ nhiệt tình của thầy cô cán bộ hướng dẫn, của các bạn đồng môn, luận văn đã đạt được những mục tiêu đề ra và hoàn thành những nội dung đã đề cập trong đề cương, cụ thể:

- Nghiên cứu, tìm hiểu các khái niệm cơ bản về rừng và cháy rừng. - Điều kiện tự nhiên ảnh hưởng đến cháy rừng.

- Tình hình cháy rừng ở Việt Nam những năm gần đây. - Đánh giá thực trạng công tác phòng tránh cháy rừng.

- Nghiên cứu, tìm hiểu một số phương pháp cảnh báo cháy rừng dựa vào các chỉ số khác nhau đã và đang được sử dụng ở Việt Nam và trên thế giới.

- Đề xuất cài đặt thử nghiệm một phương pháp cảnh báo nguy cơ cháy rừng dựa trên chỉ số cảnh báo cháy Angstrom, Nesterov, đề xuất chỉ số tổng hợp. Trong quá trình nghiên cứu, tôi đã cố gắng trau dồi, học hỏi và bổ sung thêm được nhiều kiến thức mới. Tuy nhiên, do hạn chế về mặt thời gian và sự hiểu biết ở lĩnh vức mới nên kết quả vẫn có phần hạn chế, tôi xin đưa ra hướng tiếp theo của luận văn như sau:

Nếu tiếp tục được nghiên cứu, tìm hiểu, tôi sẽ nghiên cứu bổ sung hệ số mùa và tìm ra được ngưỡng sai số lượng mưa tối ưu hơn áp dụng vào thuật toán để cải tiến hơn nữa phương pháp cảnh báo nguy cơ cháy rừng nhằm tối ưu hóa việc cảnh báo sớm nguy cơ cháy rừng.

Luận văn nghiên cứu không tránh khỏi những thiếu sót, rất mong nhận được các góp ý, đánh giá của phản biện và hội đồng đánh giá luận văn để luận văn của tôi được hoàn thiện hơn.

TÀI LIỆU THAM KHẢO Tiếng Việt:

1. Bộ Nông nghiệp và Phát triển nông thôn, (2006), Hệ sinh thái rừng tự nhiên Việt

Nam.

2. Bế Minh Châu (2001), Nghiên cứu ảnh hưởng của điều kiện khí tượng đến độ ẩm

và khả năng cháy của vật liệu dưới rừng Thông góp phần hoàn thiện phương pháp dự báo cháy rừng tại một số vùng trọng điểm Thông ở Miền Bắc Việt Nam. Luận

văn tiến sỹ Nông nghiệp số 4.04.03.

3. Lê Sỹ Doanh, Bế Minh Châu (2014), Ảnh hưởng của biến đổi khí hậu đến nguy cơ

cháy rừng ở vùng Tây Bắc Việt Nam.

4. Phạm Ngọc Hưng (2001), Thiên tai khô hạn cháy rừng và các giải pháp phòng

cháy chữa cháy rừng ở Việt Nam.

5. Hồ Văn Phú (2015), Hệ thống cảnh báo nguy cơ cháy rừng, khóa luận tốt nghiệp.

Tiếng Anh:

6. Carla Willis, Brian van Wilgen, Kevin Tolhurst, Colin Everson, Peter D’Abreton,

Lionel Pero and Gavin Fleming, (2001), The Development of a National Fire

Danger Rating System for South Africa.

7. J.J. Sharples, R.H.D. McRae, R.O. Weber, A.M. Gill (2009) A simple index for

assessing fire danger rating.

8. Milan Onderka & Igor Melicherčik (2010), Fire-prone areas delineated from a

combination of the Nesterov Fire-risk Rating Index with multispectral satellite data.

9. Khac Phong Do, Ba Tung Nguyen, Xuan Thanh Nguyen, Quang Hung Bui, Nguyen Le

Tran, Thi Nhat Thanh Nguyen, Van Quynh Vuong, Thanh Ha Le, Spatial interpolation and assimilation methods for satellite and ground meteorological data in Vietnam, to

appear in Journal of Information Processing Systems, 2015 (Scopus Indexed).

10. William J. de Groot·Robert D. Field, Michael A. Brady·Orbita Roswintiarti,

Maznorizan Mohamad (2007) Development of the Indonesian and Malaysian Fire

Danger Rating Systems.

11.Ba Tung Nguyen, Khac Phong Do, Xuan Thanh Nguyen, Nguyen Le Tran, Quang

Hung Bui, Thi Nhat Thanh Nguyen, Van Quynh Vuong, Thanh Ha Le, “Improved

Assessment of Fire Early Warning System in Vietnam using Spatial Data”,

Submitted to the Enviromental Research Letters, reviewing phase, 2015

12.C. McSweeney,M. Newand G. Lizcano, “UNDP Climate Change Country Profiles – Vietnam”

13.Viet Nam Assessment Report on Climate Change, UNEP and IPONRE (2009)

14. Xuan Thanh Nguyen, Ba Tung Nguyen, Khac Phong Do, Quang Hung Bui, Thi Nhat

Thanh Nguyen, Van Quynh Vuong and Thanh Ha Le, Spatial Interpolation of Meteorologic Variables in Vietnam using the Kriging Method, Journal of Information

15.Thanh Ha Le, Thanh Thi Nhat Nguyen, Kristofer Lasko,Shriram Ilavajhala, Krishna Prasad Vadrevu and Chris Justice, Vegetation Fires And Air Pollution In Vietnam,Environmental Pollution, 2014 (SCI Indexed).

Website:

16. Cục Kiểm lâm, Bộ Nông nghiệp và Phát triển nông thôn. Trang Web về phát hiện sớm điểm cháy http://www.kiemlam.org.vn/dubaochay/dubaochay.htm và cảnh báo cháy rừng http://www.kiemlam.org.vn/dubaochay/canhbao.asp

17. http://www.met.gov.my/index.php?option=com_content&task=view&id=4749&It emid=1157

18. http://luanan.nlv.gov.vn/luanan?a=d&d=TTbFfqzCHtEi2001.1.1&e=---vi-20-- 1--img-txIN---

PHỤ LỤC

(Một số module của chương trình cài đặt)

Phụ lục bao gồm một số module thực hiện của chương trình cài đặt. Những module này được chia làm 2 phần: module bổ trợ và module tính toán chỉ số.

1. Module bổ trợ

a. Hàm tính ngày tháng:

defgetDate (mDate, nDays):

date = datetime.strptime (mDate, "%Y_%m_%d")

newDate = date - timedelta (days = nDays)

return newDate.strftime("%Y_%m_%d")

b. Hàm kết xuất dữ liệu ra ảnh TIFF

defexportGeotiff(filename, raster, row, col, xResolution, minLon, minLat, yResolution):

format = 'GTiff'

driver = gdal.GetDriverByName( format )

dst_ds = driver.Create(filename, col, row, 1, gdal.GDT_UInt16 )

c. Hàm đọc dữ liệu vào mảng 2 chiều:

defreadData(ngay):

ngayhumid = str(ngay) + "_humid.tif" ngaytemp = str(ngay) + ".tif"

humid = gdal.Open(ngayhumid) temp = gdal.Open (ngaytemp)

cols = humid.RasterXSize rows = humid.RasterYSize bands = humid.RasterCount geotransform = humid.GetGeoTransform() originX = geotransform[0] originY = geotransform[3] pixelWidth = geotransform[1] pixelHeight = geotransform[5] humid_numpy = humid.ReadAsArray () temp_numpy = temp.ReadAsArray()

d. Hàm chèn dữ liệu vào cơ sở dữ liệu Postgre:

classDBINFO:

DATABASE = "'test'" USER = "'postgres'" HOST = "'localhost'" PASSWORD = "'123'"

definsertData(cur, table, date, level, lati, longi): data = (date, level, lati, longi)

query = "INSERT INTO " + table + " (dat, level, lat, lng) VALUES (%s,

%s, %s, %s)"

cur.execute(query, data)

print"query successfully!"

definsertDataDB(year, month, day):

date = year + "_" + month + "_" + day

level_fire, xOrigin, yOrigin, pixelWidth, pixelHeight = Angstrom(date)

try:

dbinfo = "dbname = " + DBINFO.DATABASE + " user = " + DBINFO.USER +

" host = " + DBINFO.HOST + " password = " + DBINFO.PASSWORD

table = "fire_risk"

conn = psycopg2.connect(dbinfo) cur = conn.cursor()

for row in range(0, len(level_fire)): for col in range(0, len(level_fire[0])):

d = year + "-" + month + "-" + day

lv = level_fire[row][col]

lat = yOrigin + pixelHeight*row lng = xOrigin + pixelWidth*col

insertData(cur, table, d, lv, lat, lng) print date

conn.commit() except:

print"!!!"

e. Hàm lấy dữ liệu Việt Nam:

definsertVietNamData(date): try:

dbinfo = "dbname = " + DBINFO.DATABASE + " user = " + DBINFO.USER +

" host = " + DBINFO.HOST + " password = " + DBINFO.PASSWORD

table = "vn_fire_risk1"

conn = psycopg2.connect(dbinfo) cur = conn.cursor()

query = """ SELECT f.*

FROM fire_risk as f, vnm_adm0 as va

WHERE ST_Intersects(ST_GeomFromText('POINT ('||f.lng - 0.05||' '||f.lat + 0.05||')', 4326), va.geom)

and f.dat = '%s'""" % date

print"start!"

cur.execute(query) rows = cur.fetchall() for row in rows:

d = row[1] lv = row[2] lat = row[3] lng = row[4]

insertData(cur, table, d, lv, lat, lng)

conn.commit() except: print"!!!" f. Hàm đếm số điểm cháy: def diemchay(theochiso, y, m, d): ngay = y + "_" + m + "_" + d path1 = 'D:/CAOHOC/python/workspace/Python1/2012/Humid/' ngayhumid = path1 + str(ngay) + "_humid.tif"

humid = gdal.Open(ngayhumid) cols = humid.RasterXSize rows = humid.RasterYSize bands = humid.RasterCount geotransform = humid.GetGeoTransform() originX = geotransform[0] originY = geotransform[3] pixelWidth = geotransform[1] pixelHeight = geotransform[5]

#Doc file activefire de dem so diem chay ngayactive = [int(y), int(m), int(d)]

sf = shapefile.Reader("Vietnam2012_Fires.shp") records = sf.records() l1 = 0 l2 = 0 l3 = 0 l4 = 0 l5 = 0

for record in records:

# Neu 1 ban ghi cua cac diem chay la ngay cua anh da mo if record[5] == ngayactive:

# Duyet trong anh angstrom index check = True

for row in range(0, 200): for col in range(0, 130):

angstr_index = theochiso[row][col]

# Neu diem chay nam trong cell thi lay ra index tai cell do

if checkPointInCell(record[0], record[1], originY + row*pixelHeight, originX + col*pixelWidth,

pixelWidth, pixelHeight): # Text file if angstr_index == 1: l1 = l1 + 1 if angstr_index == 2: l2 = l2 + 1 if angstr_index == 3: l3 = l3 + 1 if angstr_index == 4: l4 = l4 + 1

if angstr_index == 5: l5 = l5 + 1

continue check = False

# Neu tim dc cell thi thoat dung duyet cell trong anh if check == False:

continue

print "So diem chay muc 1:" , l1 print "So diem chay muc 2:" , l2 print "So diem chay muc 3:" , l3 print "So diem chay muc 4:" , l4 print "So diem chay muc 5:" , l5 return l1, l2, l3, l4, l5 g. Hàm tính tổng diện tích cảnh báo: def dientich(theochiso): ds3 = gdal.Open("grid_cell_area.tif") nDientich = ds3.ReadAsArray() s1 = 0 s2 = 0 s3 = 0 s4 = 0 s5 = 0 for i in range(200): for j in range(130): if (theochiso[i,j] == 1): s1 = s1 + nDientich[i,j] elif (theochiso[i,j] == 2): s2 = s2 + nDientich[i,j] elif (theochiso[i,j] == 3): s3 = s3 + nDientich[i,j] elif (theochiso[i,j] == 4): s4 = s4 + nDientich[i,j] else: s5 = s5 + nDientich[i,j] print "Dien tich muc 1:" , s1

print "Dien tich muc 2:" , s2 print "Dien tich muc 3:" , s3 print "Dien tich muc 4:" , s4 print "Dien tich muc 5:" , s5

return s1, s2, s3, s4, s5 2. Module chính

a. Hàm tính chỉ số Angstrom:

def ang_index (ngay):

ans_index = (humid_numpy/20) + ((27 - temp_numpy)/10) for i in range(rows): for j in range(cols): if (ans_index[i,j] >= 4): ans_numpy[i,j] = 1 elif (ans_index[i,j] >= 2.5): ans_numpy[i,j] = 2 elif (ans_index[i,j] >= 2):

ans_numpy[i,j] = 3 elif (ans_index[i,j] >= 1.5): ans_numpy[i,j] = 4 else: ans_numpy[i,j] = 5 b. Hàm tính chỉ số Nesterov:

def nest_index (ngay): nes_index = humid_numpy

fileFCB = 'forest_cover_binary.tif' tifFCB = gdal.Open(fileFCB)

dataFCB = tifFCB.ReadAsArray() # get anchor station

fileNearestStaion = 'nearestStation.tif' tifNS = gdal.Open(fileNearestStaion) dataNS = tifNS.ReadAsArray()

dstram = readDataCSV('dstram.csv')

nes_index = np.zeros((rows, cols)) flag = np.ones((rows, cols))

hsmua = np.ones((rows, cols))

arrayK = np.zeros((rows, cols)) # Nguong mua tai moi diem anh preTRMM = np.zeros((rows, cols)) # luu giu lieu luong mua ngay trc do

preNTRV = np.zeros((rows, cols)) # luu tong luong mua 2 ngay lien tiep curDate = ngay demngay = 0 while (demngay < 100): print curDate # load files

fileTrmm = path1 + 'Preci/' + curDate + '_preci.tif' fileTp = path1 + 'Temp/' + curDate + '_temp.tif'

fileDp = path1 + 'DoHutbh/' + curDate + '_DoHutbh.tif'

if os.path.exists(fileTrmm): tifTrmm = gdal.Open(fileTrmm) dataTrmm = tifTrmm.ReadAsArray() else:

print 'trmm_assimilation not available' if os.path.exists(fileTp):

tifTp = gdal.Open(fileTp) tifDp = gdal.Open(fileDp)

else: print 'temperature not available' if os.path.exists(fileDp):

dataTp = tifTp.ReadAsArray() dataDp = tifDp.ReadAsArray() else: print 'dohutbh not available'

if (demngay == 0):

for i in range(0, rows):

for j in range(0, cols): tram_id = int(dataNS[i][j])

arrayK[i][j] = float(dstram[tram_id][6]) hsmua[i][j] = computeK(dataTrmm[i][j], arrayK[i][j])

if hsmua[i][j] == 0: flag[i][j] = 0 for i in range(0, rows):

for j in range(0, cols): if flag[i][j] == 0:

continue

if (dataTrmm[i][j] > arrayK[i][j]): flag[i][j] = 0

continue

if (preTRMM[i][j] <> 0) and (preTRMM[i][j] + dataTrmm[i][j] > arrayK[i][j]):

nes_index[i][j] = nes_index[i][j] - preNTRV[i][j] flag[i][j] = 0

continue if flag[i][j] == 1:

preNTRV[i][j] = dataTp[i][j] * dataDp[i][j]

nes_index[i][j] = nes_index[i][j] + preNTRV[i][j]

preTRMM = dataTrmm demngay = demngay + 1 curDate = getDate(curDate, 1) metadata = tifNS.GetGeoTransform() for i in range(rows): for j in range(cols): if (nes_index[i,j] <= 1000): nes_numpy[i,j] = 1 elif (nes_index[i,j] <= 2500): nes_numpy[i,j] = 2 elif (nes_index[i,j] <= 5000): nes_numpy[i,j] = 3 elif (nes_index[i,j] <= 10000): nes_numpy[i,j] = 4 else: nes_numpy[i,j] = 5 c. Hàm tính chỉ số tổng hợp: saiso = deri_numpy for i in range(rows): for j in range(cols): if (deri_numpy[i,j] < nguong): level_fire[i,j] = nes_numpy[i,j] else: level_fire[i,j] = ans_numpy[i,j]

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu, tìm hiểu và cài đặt thử nghiệm một số phương pháp cảnh báo nguy cơ cháy rừng 04 (Trang 56 - 65)

Tải bản đầy đủ (PDF)

(65 trang)