bổ sung chức năng load 64 tỉnh thành và 32 tỉnh thành/ bổ sung mô hình Swin-Unet
This commit is contained in:
@@ -0,0 +1,461 @@
|
||||
"""
|
||||
Vietnam Provinces After Administrative Merger (32 provinces)
|
||||
32 tỉnh thành Việt Nam sau sáp nhập theo Nghị quyết 1211/2023
|
||||
Bbox đã được mở rộng để bao phủ các tỉnh đã hợp nhất
|
||||
"""
|
||||
|
||||
VIETNAM_PROVINCES_32 = {
|
||||
# Thành phố trực thuộc TW (5)
|
||||
"Hà Nội": {
|
||||
"bbox": [105.35, 20.53, 105.92, 21.33],
|
||||
"name_en": "Hanoi",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 3359
|
||||
},
|
||||
|
||||
"Hải Phòng": {
|
||||
"bbox": [106.14, 20.68, 107.07, 21.09], # Bao gồm cả Hải Dương
|
||||
"name_en": "Hai Phong",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": ["Hải Phòng", "Hải Dương"],
|
||||
"area_km2": 2914
|
||||
},
|
||||
|
||||
"Đà Nẵng": {
|
||||
"bbox": [107.04, 14.93, 108.70, 16.28], # Bao gồm cả Quảng Nam
|
||||
"name_en": "Da Nang - Quang Nam",
|
||||
"region": "Duyên hải Nam Trung Bộ",
|
||||
"merged_from": ["Đà Nẵng", "Quảng Nam"],
|
||||
"area_km2": 11065
|
||||
},
|
||||
|
||||
"Hồ Chí Minh": {
|
||||
"bbox": [106.36, 10.35, 107.04, 11.16],
|
||||
"name_en": "Ho Chi Minh City",
|
||||
"region": "Đông Nam Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 2061
|
||||
},
|
||||
|
||||
"Cần Thơ": {
|
||||
"bbox": [105.48, 9.77, 106.14, 10.35],
|
||||
"name_en": "Can Tho",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 1402
|
||||
},
|
||||
|
||||
# Các tỉnh sau sáp nhập (27)
|
||||
|
||||
# Vùng núi phía Bắc
|
||||
"Lào Cai": {
|
||||
"bbox": [103.22, 21.82, 104.45, 22.77],
|
||||
"name_en": "Lao Cai",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 6384
|
||||
},
|
||||
|
||||
"Điện Biên": {
|
||||
"bbox": [102.72, 21.09, 103.72, 22.21], # Bao gồm cả Lai Châu
|
||||
"name_en": "Dien Bien - Lai Chau",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": ["Điện Biên", "Lai Châu"],
|
||||
"area_km2": 15274
|
||||
},
|
||||
|
||||
"Hà Giang": {
|
||||
"bbox": [104.42, 22.33, 105.59, 23.39],
|
||||
"name_en": "Ha Giang",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 7946
|
||||
},
|
||||
|
||||
"Cao Bằng": {
|
||||
"bbox": [105.48, 21.95, 106.70, 23.04], # Bao gồm cả Bắc Kạn
|
||||
"name_en": "Cao Bang - Bac Kan",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": ["Cao Bằng", "Bắc Kạn"],
|
||||
"area_km2": 11335
|
||||
},
|
||||
|
||||
"Lạng Sơn": {
|
||||
"bbox": [106.22, 21.40, 107.18, 22.41],
|
||||
"name_en": "Lang Son",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 8327
|
||||
},
|
||||
|
||||
"Tuyên Quang": {
|
||||
"bbox": [104.97, 21.65, 105.65, 22.42],
|
||||
"name_en": "Tuyen Quang",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 5868
|
||||
},
|
||||
|
||||
"Yên Bái": {
|
||||
"bbox": [103.97, 21.35, 105.20, 22.21],
|
||||
"name_en": "Yen Bai",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 6899
|
||||
},
|
||||
|
||||
"Thái Nguyên": {
|
||||
"bbox": [105.48, 21.27, 106.15, 22.07],
|
||||
"name_en": "Thai Nguyen",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 3534
|
||||
},
|
||||
|
||||
"Phú Thọ": {
|
||||
"bbox": [104.83, 21.01, 105.48, 21.82],
|
||||
"name_en": "Phu Tho",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": None,
|
||||
"area_km2": 3533
|
||||
},
|
||||
|
||||
"Hòa Bình": {
|
||||
"bbox": [103.22, 20.35, 105.74, 21.82], # Bao gồm cả Sơn La
|
||||
"name_en": "Hoa Binh - Son La",
|
||||
"region": "Vùng núi phía Bắc",
|
||||
"merged_from": ["Hòa Bình", "Sơn La"],
|
||||
"area_km2": 19210
|
||||
},
|
||||
|
||||
# Đồng bằng Bắc Bộ
|
||||
"Quảng Ninh": {
|
||||
"bbox": [106.48, 20.70, 108.26, 21.62],
|
||||
"name_en": "Quang Ninh",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 6102
|
||||
},
|
||||
|
||||
"Bắc Ninh": {
|
||||
"bbox": [105.83, 20.93, 106.70, 21.68], # Bao gồm cả Bắc Giang
|
||||
"name_en": "Bac Ninh - Bac Giang",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": ["Bắc Ninh", "Bắc Giang"],
|
||||
"area_km2": 4631
|
||||
},
|
||||
|
||||
"Vĩnh Phúc": {
|
||||
"bbox": [105.31, 21.14, 105.81, 21.61],
|
||||
"name_en": "Vinh Phuc",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 1236
|
||||
},
|
||||
|
||||
"Hưng Yên": {
|
||||
"bbox": [105.83, 20.58, 106.26, 21.03],
|
||||
"name_en": "Hung Yen",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 926
|
||||
},
|
||||
|
||||
"Nam Định": {
|
||||
"bbox": [105.79, 20.04, 106.47, 20.73], # Bao gồm cả Hà Nam
|
||||
"name_en": "Nam Dinh - Ha Nam",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": ["Nam Định", "Hà Nam"],
|
||||
"area_km2": 2442
|
||||
},
|
||||
|
||||
"Thái Bình": {
|
||||
"bbox": [106.23, 20.27, 106.70, 20.76],
|
||||
"name_en": "Thai Binh",
|
||||
"region": "Đồng bằng Bắc Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 1570
|
||||
},
|
||||
|
||||
# Bắc Trung Bộ
|
||||
"Thanh Hóa": {
|
||||
"bbox": [104.83, 19.33, 106.14, 20.66], # Bao gồm cả Ninh Bình
|
||||
"name_en": "Thanh Hoa - Ninh Binh",
|
||||
"region": "Bắc Trung Bộ",
|
||||
"merged_from": ["Thanh Hóa", "Ninh Bình"],
|
||||
"area_km2": 12490
|
||||
},
|
||||
|
||||
"Nghệ An": {
|
||||
"bbox": [103.97, 17.98, 106.23, 19.89], # Bao gồm cả Hà Tĩnh
|
||||
"name_en": "Nghe An - Ha Tinh",
|
||||
"region": "Bắc Trung Bộ",
|
||||
"merged_from": ["Nghệ An", "Hà Tĩnh"],
|
||||
"area_km2": 22793
|
||||
},
|
||||
|
||||
"Quảng Bình": {
|
||||
"bbox": [105.74, 16.97, 107.04, 18.06],
|
||||
"name_en": "Quang Binh",
|
||||
"region": "Bắc Trung Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 8065
|
||||
},
|
||||
|
||||
"Quảng Trị": {
|
||||
"bbox": [106.48, 16.38, 107.54, 17.20],
|
||||
"name_en": "Quang Tri",
|
||||
"region": "Bắc Trung Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 4746
|
||||
},
|
||||
|
||||
"Thừa Thiên Huế": {
|
||||
"bbox": [107.04, 16.01, 108.01, 16.95],
|
||||
"name_en": "Thua Thien Hue",
|
||||
"region": "Bắc Trung Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 5033
|
||||
},
|
||||
|
||||
# Duyên hải Nam Trung Bộ
|
||||
"Quảng Ngãi": {
|
||||
"bbox": [108.01, 14.66, 109.18, 15.53],
|
||||
"name_en": "Quang Ngai",
|
||||
"region": "Duyên hải Nam Trung Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 5153
|
||||
},
|
||||
|
||||
"Bình Định": {
|
||||
"bbox": [108.33, 12.75, 109.46, 14.72], # Bao gồm cả Phú Yên
|
||||
"name_en": "Binh Dinh - Phu Yen",
|
||||
"region": "Duyên hải Nam Trung Bộ",
|
||||
"merged_from": ["Bình Định", "Phú Yên"],
|
||||
"area_km2": 11092
|
||||
},
|
||||
|
||||
"Khánh Hòa": {
|
||||
"bbox": [108.70, 11.75, 109.46, 12.95],
|
||||
"name_en": "Khanh Hoa",
|
||||
"region": "Duyên hải Nam Trung Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 5218
|
||||
},
|
||||
|
||||
"Bình Thuận": {
|
||||
"bbox": [107.54, 10.49, 109.18, 12.04], # Bao gồm cả Ninh Thuận
|
||||
"name_en": "Binh Thuan - Ninh Thuan",
|
||||
"region": "Duyên hải Nam Trung Bộ",
|
||||
"merged_from": ["Bình Thuận", "Ninh Thuận"],
|
||||
"area_km2": 11234
|
||||
},
|
||||
|
||||
# Tây Nguyên
|
||||
"Gia Lai": {
|
||||
"bbox": [107.54, 13.17, 108.70, 15.17], # Bao gồm cả Kon Tum
|
||||
"name_en": "Gia Lai - Kon Tum",
|
||||
"region": "Tây Nguyên",
|
||||
"merged_from": ["Gia Lai", "Kon Tum"],
|
||||
"area_km2": 25536
|
||||
},
|
||||
|
||||
"Đắk Lắk": {
|
||||
"bbox": [107.04, 11.75, 108.70, 13.40], # Bao gồm cả Đắk Nông
|
||||
"name_en": "Dak Lak - Dak Nong",
|
||||
"region": "Tây Nguyên",
|
||||
"merged_from": ["Đắk Lắk", "Đắk Nông"],
|
||||
"area_km2": 19850
|
||||
},
|
||||
|
||||
"Lâm Đồng": {
|
||||
"bbox": [107.04, 10.99, 108.70, 12.52],
|
||||
"name_en": "Lam Dong",
|
||||
"region": "Tây Nguyên",
|
||||
"merged_from": None,
|
||||
"area_km2": 9776
|
||||
},
|
||||
|
||||
# Đông Nam Bộ
|
||||
"Đồng Nai": {
|
||||
"bbox": [106.36, 10.49, 107.54, 12.24], # Bao gồm cả Bình Phước
|
||||
"name_en": "Dong Nai - Binh Phuoc",
|
||||
"region": "Đông Nam Bộ",
|
||||
"merged_from": ["Đồng Nai", "Bình Phước"],
|
||||
"area_km2": 13317
|
||||
},
|
||||
|
||||
"Bình Dương": {
|
||||
"bbox": [106.36, 10.87, 106.96, 11.51],
|
||||
"name_en": "Binh Duong",
|
||||
"region": "Đông Nam Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 2695
|
||||
},
|
||||
|
||||
"Bà Rịa - Vũng Tàu": {
|
||||
"bbox": [107.04, 10.16, 107.77, 10.87],
|
||||
"name_en": "Ba Ria - Vung Tau",
|
||||
"region": "Đông Nam Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 1990
|
||||
},
|
||||
|
||||
"Tây Ninh": {
|
||||
"bbox": [105.74, 10.87, 106.70, 11.75],
|
||||
"name_en": "Tay Ninh",
|
||||
"region": "Đông Nam Bộ",
|
||||
"merged_from": None,
|
||||
"area_km2": 4040
|
||||
},
|
||||
|
||||
# Đồng bằng sông Cửu Long
|
||||
"Tiền Giang": {
|
||||
"bbox": [105.74, 9.99, 106.70, 11.16], # Bao gồm cả Long An
|
||||
"name_en": "Tien Giang - Long An",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": ["Tiền Giang", "Long An"],
|
||||
"area_km2": 6935
|
||||
},
|
||||
|
||||
"Bến Tre": {
|
||||
"bbox": [105.98, 9.77, 106.70, 10.35],
|
||||
"name_en": "Ben Tre",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 2360
|
||||
},
|
||||
|
||||
"Vĩnh Long": {
|
||||
"bbox": [105.74, 9.33, 106.70, 10.35], # Bao gồm cả Trà Vinh
|
||||
"name_en": "Vinh Long - Tra Vinh",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": ["Vĩnh Long", "Trà Vinh"],
|
||||
"area_km2": 4567
|
||||
},
|
||||
|
||||
"Đồng Tháp": {
|
||||
"bbox": [105.20, 10.16, 105.98, 11.16],
|
||||
"name_en": "Dong Thap",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 3377
|
||||
},
|
||||
|
||||
"An Giang": {
|
||||
"bbox": [104.83, 9.99, 105.74, 10.99],
|
||||
"name_en": "An Giang",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 3537
|
||||
},
|
||||
|
||||
"Kiên Giang": {
|
||||
"bbox": [103.22, 8.68, 105.48, 10.52],
|
||||
"name_en": "Kien Giang",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 6348
|
||||
},
|
||||
|
||||
"Sóc Trăng": {
|
||||
"bbox": [105.31, 9.16, 106.23, 9.99], # Bao gồm cả Hậu Giang
|
||||
"name_en": "Soc Trang - Hau Giang",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": ["Sóc Trăng", "Hậu Giang"],
|
||||
"area_km2": 4750
|
||||
},
|
||||
|
||||
"Bạc Liêu": {
|
||||
"bbox": [105.31, 8.93, 105.98, 9.60],
|
||||
"name_en": "Bac Lieu",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 2585
|
||||
},
|
||||
|
||||
"Cà Mau": {
|
||||
"bbox": [104.58, 8.18, 105.48, 9.60],
|
||||
"name_en": "Ca Mau",
|
||||
"region": "Đồng bằng sông Cửu Long",
|
||||
"merged_from": None,
|
||||
"area_km2": 5332
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def get_all_provinces_32():
|
||||
"""Lấy danh sách tất cả 32 tỉnh thành sau sáp nhập"""
|
||||
return list(VIETNAM_PROVINCES_32.keys())
|
||||
|
||||
|
||||
def get_provinces_by_region_32():
|
||||
"""Lấy danh sách 32 tỉnh thành theo vùng miền"""
|
||||
regions = {}
|
||||
for province, data in VIETNAM_PROVINCES_32.items():
|
||||
region = data["region"]
|
||||
if region not in regions:
|
||||
regions[region] = []
|
||||
regions[region].append({
|
||||
"name": province,
|
||||
"name_en": data["name_en"],
|
||||
"bbox": data["bbox"],
|
||||
"merged_from": data.get("merged_from"),
|
||||
"area_km2": data.get("area_km2")
|
||||
})
|
||||
return regions
|
||||
|
||||
|
||||
def get_province_bbox_32(province_name):
|
||||
"""Lấy bbox của một tỉnh thành (32 tỉnh)"""
|
||||
if province_name in VIETNAM_PROVINCES_32:
|
||||
return VIETNAM_PROVINCES_32[province_name]["bbox"]
|
||||
return None
|
||||
|
||||
|
||||
def get_merged_info(province_name):
|
||||
"""Lấy thông tin sáp nhập của tỉnh"""
|
||||
if province_name in VIETNAM_PROVINCES_32:
|
||||
data = VIETNAM_PROVINCES_32[province_name]
|
||||
return {
|
||||
"name": province_name,
|
||||
"bbox": data["bbox"],
|
||||
"merged_from": data.get("merged_from"),
|
||||
"region": data["region"],
|
||||
"area_km2": data.get("area_km2")
|
||||
}
|
||||
return None
|
||||
|
||||
|
||||
def search_province_32(query):
|
||||
"""Tìm kiếm tỉnh thành theo tên (32 tỉnh)"""
|
||||
query = query.lower()
|
||||
results = []
|
||||
for province, data in VIETNAM_PROVINCES_32.items():
|
||||
if (query in province.lower() or
|
||||
query in data["name_en"].lower()):
|
||||
results.append({
|
||||
"name": province,
|
||||
"name_en": data["name_en"],
|
||||
"bbox": data["bbox"],
|
||||
"region": data["region"],
|
||||
"merged_from": data.get("merged_from"),
|
||||
"area_km2": data.get("area_km2")
|
||||
})
|
||||
return results
|
||||
|
||||
|
||||
def get_provinces_statistics():
|
||||
"""Thống kê các tỉnh đã sáp nhập"""
|
||||
total = len(VIETNAM_PROVINCES_32)
|
||||
merged = len([p for p in VIETNAM_PROVINCES_32.values() if p.get("merged_from")])
|
||||
original = total - merged
|
||||
|
||||
return {
|
||||
"total_provinces": total,
|
||||
"merged_provinces": merged,
|
||||
"original_provinces": original,
|
||||
"regions": list(set(p["region"] for p in VIETNAM_PROVINCES_32.values())),
|
||||
"total_area_km2": sum(p.get("area_km2", 0) for p in VIETNAM_PROVINCES_32.values())
|
||||
}
|
||||
Reference in New Issue
Block a user