""" 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