Files
remote-sensing/core/vietnam_provinces.py
T

377 lines
10 KiB
Python

"""
Vietnam Provinces Boundaries
Ranh giới các tỉnh thành Việt Nam với bbox coordinates
"""
VIETNAM_PROVINCES = {
"Toàn quốc": {
"bbox": [102.14, 8.18, 109.46, 23.39],
"name_en": "Vietnam (Full)",
"region": "Toàn quốc"
},
# Miền Bắc - Northern Region
"Hà Nội": {
"bbox": [105.35, 20.53, 105.92, 21.33],
"name_en": "Hanoi",
"region": "Miền Bắc"
},
"Hải Phòng": {
"bbox": [106.48, 20.70, 107.07, 21.09],
"name_en": "Hai Phong",
"region": "Miền Bắc"
},
"Quảng Ninh": {
"bbox": [106.48, 20.70, 108.26, 21.62],
"name_en": "Quang Ninh",
"region": "Miền Bắc"
},
"Lào Cai": {
"bbox": [103.22, 21.82, 104.45, 22.77],
"name_en": "Lao Cai",
"region": "Miền Bắc"
},
"Điện Biên": {
"bbox": [102.72, 21.09, 103.45, 22.21],
"name_en": "Dien Bien",
"region": "Miền Bắc"
},
"Lai Châu": {
"bbox": [102.72, 21.82, 103.72, 22.77],
"name_en": "Lai Chau",
"region": "Miền Bắc"
},
"Hà Giang": {
"bbox": [104.42, 22.33, 105.59, 23.39],
"name_en": "Ha Giang",
"region": "Miền Bắc"
},
"Cao Bằng": {
"bbox": [105.52, 22.24, 106.70, 23.04],
"name_en": "Cao Bang",
"region": "Miền Bắc"
},
"Bắc Kạn": {
"bbox": [105.48, 21.95, 106.15, 22.52],
"name_en": "Bac Kan",
"region": "Miền Bắc"
},
"Tuyên Quang": {
"bbox": [104.97, 21.65, 105.65, 22.42],
"name_en": "Tuyen Quang",
"region": "Miền Bắc"
},
"Thái Nguyên": {
"bbox": [105.48, 21.27, 106.15, 22.07],
"name_en": "Thai Nguyen",
"region": "Miền Bắc"
},
"Lạng Sơn": {
"bbox": [106.22, 21.40, 107.18, 22.41],
"name_en": "Lang Son",
"region": "Miền Bắc"
},
"Bắc Giang": {
"bbox": [105.97, 21.05, 106.70, 21.68],
"name_en": "Bac Giang",
"region": "Miền Bắc"
},
"Phú Thọ": {
"bbox": [104.83, 21.01, 105.48, 21.82],
"name_en": "Phu Tho",
"region": "Miền Bắc"
},
"Vĩnh Phúc": {
"bbox": [105.31, 21.14, 105.81, 21.61],
"name_en": "Vinh Phuc",
"region": "Miền Bắc"
},
"Bắc Ninh": {
"bbox": [105.83, 20.93, 106.26, 21.32],
"name_en": "Bac Ninh",
"region": "Miền Bắc"
},
"Hải Dương": {
"bbox": [106.14, 20.68, 106.70, 21.07],
"name_en": "Hai Duong",
"region": "Miền Bắc"
},
"Hưng Yên": {
"bbox": [105.83, 20.58, 106.26, 21.03],
"name_en": "Hung Yen",
"region": "Miền Bắc"
},
"Hà Nam": {
"bbox": [105.79, 20.33, 106.14, 20.73],
"name_en": "Ha Nam",
"region": "Miền Bắc"
},
"Nam Định": {
"bbox": [105.98, 20.04, 106.47, 20.64],
"name_en": "Nam Dinh",
"region": "Miền Bắc"
},
"Thái Bình": {
"bbox": [106.23, 20.27, 106.70, 20.76],
"name_en": "Thai Binh",
"region": "Miền Bắc"
},
"Ninh Bình": {
"bbox": [105.70, 20.05, 106.14, 20.50],
"name_en": "Ninh Binh",
"region": "Miền Bắc"
},
"Hòa Bình": {
"bbox": [104.83, 20.35, 105.74, 21.06],
"name_en": "Hoa Binh",
"region": "Miền Bắc"
},
"Sơn La": {
"bbox": [103.22, 20.66, 104.83, 21.82],
"name_en": "Son La",
"region": "Miền Bắc"
},
"Yên Bái": {
"bbox": [103.97, 21.35, 105.20, 22.21],
"name_en": "Yen Bai",
"region": "Miền Bắc"
},
# Miền Trung - Central Region
"Thanh Hóa": {
"bbox": [104.83, 19.33, 106.14, 20.66],
"name_en": "Thanh Hoa",
"region": "Miền Trung"
},
"Nghệ An": {
"bbox": [103.97, 18.34, 105.74, 19.89],
"name_en": "Nghe An",
"region": "Miền Trung"
},
"Hà Tĩnh": {
"bbox": [105.20, 17.98, 106.23, 18.78],
"name_en": "Ha Tinh",
"region": "Miền Trung"
},
"Quảng Bình": {
"bbox": [105.74, 16.97, 107.04, 18.06],
"name_en": "Quang Binh",
"region": "Miền Trung"
},
"Quảng Trị": {
"bbox": [106.48, 16.38, 107.54, 17.20],
"name_en": "Quang Tri",
"region": "Miền Trung"
},
"Thừa Thiên Huế": {
"bbox": [107.04, 16.01, 108.01, 16.95],
"name_en": "Thua Thien Hue",
"region": "Miền Trung"
},
"Đà Nẵng": {
"bbox": [107.77, 15.87, 108.33, 16.28],
"name_en": "Da Nang",
"region": "Miền Trung"
},
"Quảng Nam": {
"bbox": [107.04, 14.93, 108.70, 16.16],
"name_en": "Quang Nam",
"region": "Miền Trung"
},
"Quảng Ngãi": {
"bbox": [108.01, 14.66, 109.18, 15.53],
"name_en": "Quang Ngai",
"region": "Miền Trung"
},
"Bình Định": {
"bbox": [108.33, 13.76, 109.26, 14.72],
"name_en": "Binh Dinh",
"region": "Miền Trung"
},
"Phú Yên": {
"bbox": [108.70, 12.75, 109.46, 13.96],
"name_en": "Phu Yen",
"region": "Miền Trung"
},
"Khánh Hòa": {
"bbox": [108.70, 11.75, 109.46, 12.95],
"name_en": "Khanh Hoa",
"region": "Miền Trung"
},
"Ninh Thuận": {
"bbox": [108.33, 11.27, 109.18, 12.04],
"name_en": "Ninh Thuan",
"region": "Miền Trung"
},
"Bình Thuận": {
"bbox": [107.54, 10.49, 108.70, 11.75],
"name_en": "Binh Thuan",
"region": "Miền Trung"
},
"Kon Tum": {
"bbox": [107.54, 13.95, 108.70, 15.17],
"name_en": "Kon Tum",
"region": "Tây Nguyên"
},
"Gia Lai": {
"bbox": [107.54, 13.17, 108.70, 14.72],
"name_en": "Gia Lai",
"region": "Tây Nguyên"
},
"Đắk Lắk": {
"bbox": [107.54, 12.24, 108.70, 13.40],
"name_en": "Dak Lak",
"region": "Tây Nguyên"
},
"Đắk Nông": {
"bbox": [107.04, 11.75, 108.33, 12.75],
"name_en": "Dak Nong",
"region": "Tây Nguyên"
},
"Lâm Đồng": {
"bbox": [107.04, 10.99, 108.70, 12.52],
"name_en": "Lam Dong",
"region": "Tây Nguyên"
},
# Miền Nam - Southern Region
"Hồ Chí Minh": {
"bbox": [106.36, 10.35, 107.04, 11.16],
"name_en": "Ho Chi Minh City",
"region": "Miền Nam"
},
"Đồng Nai": {
"bbox": [106.70, 10.49, 107.54, 11.51],
"name_en": "Dong Nai",
"region": "Miền Nam"
},
"Bình Dương": {
"bbox": [106.36, 10.87, 106.96, 11.51],
"name_en": "Binh Duong",
"region": "Miền Nam"
},
"Bà Rịa - Vũng Tàu": {
"bbox": [107.04, 10.16, 107.77, 10.87],
"name_en": "Ba Ria - Vung Tau",
"region": "Miền Nam"
},
"Bình Phước": {
"bbox": [106.36, 11.16, 107.54, 12.24],
"name_en": "Binh Phuoc",
"region": "Miền Nam"
},
"Tây Ninh": {
"bbox": [105.74, 10.87, 106.70, 11.75],
"name_en": "Tay Ninh",
"region": "Miền Nam"
},
"Long An": {
"bbox": [105.74, 10.16, 106.70, 11.16],
"name_en": "Long An",
"region": "Miền Nam"
},
"Tiền Giang": {
"bbox": [105.74, 9.99, 106.70, 10.70],
"name_en": "Tien Giang",
"region": "Miền Nam"
},
"Bến Tre": {
"bbox": [105.98, 9.77, 106.70, 10.35],
"name_en": "Ben Tre",
"region": "Miền Nam"
},
"Đồng Tháp": {
"bbox": [105.20, 10.16, 105.98, 11.16],
"name_en": "Dong Thap",
"region": "Miền Nam"
},
"Vĩnh Long": {
"bbox": [105.74, 9.77, 106.36, 10.35],
"name_en": "Vinh Long",
"region": "Miền Nam"
},
"Trà Vinh": {
"bbox": [105.98, 9.33, 106.70, 10.04],
"name_en": "Tra Vinh",
"region": "Miền Nam"
},
"An Giang": {
"bbox": [104.83, 9.99, 105.74, 10.99],
"name_en": "An Giang",
"region": "Miền Nam"
},
"Kiên Giang": {
"bbox": [103.22, 8.68, 105.48, 10.52],
"name_en": "Kien Giang",
"region": "Miền Nam"
},
"Cần Thơ": {
"bbox": [105.48, 9.77, 106.14, 10.35],
"name_en": "Can Tho",
"region": "Miền Nam"
},
"Hậu Giang": {
"bbox": [105.31, 9.33, 105.98, 9.99],
"name_en": "Hau Giang",
"region": "Miền Nam"
},
"Sóc Trăng": {
"bbox": [105.48, 9.16, 106.23, 9.99],
"name_en": "Soc Trang",
"region": "Miền Nam"
},
"Bạc Liêu": {
"bbox": [105.31, 8.93, 105.98, 9.60],
"name_en": "Bac Lieu",
"region": "Miền Nam"
},
"Cà Mau": {
"bbox": [104.58, 8.18, 105.48, 9.60],
"name_en": "Ca Mau",
"region": "Miền Nam"
},
}
def get_all_provinces():
"""Lấy danh sách tất cả các tỉnh thành"""
return list(VIETNAM_PROVINCES.keys())
def get_provinces_by_region():
"""Lấy danh sách tỉnh thành theo vùng miền"""
regions = {}
for province, data in VIETNAM_PROVINCES.items():
region = data["region"]
if region not in regions:
regions[region] = []
regions[region].append({
"name": province,
"name_en": data["name_en"],
"bbox": data["bbox"]
})
return regions
def get_province_bbox(province_name):
"""Lấy bbox của một tỉnh thành"""
if province_name in VIETNAM_PROVINCES:
return VIETNAM_PROVINCES[province_name]["bbox"]
return None
def search_province(query):
"""Tìm kiếm tỉnh thành theo tên"""
query = query.lower()
results = []
for province, data in VIETNAM_PROVINCES.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"]
})
return results