377 lines
10 KiB
Python
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
|