إضافة geo_data.py - بسم الله الرحمن الرحيم
هذا الالتزام موجود في:
56
geo_data.py
Normal file
56
geo_data.py
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
"""Arab World Geo Data - بيانات جغرافية للوطن العربي"""
|
||||||
|
|
||||||
|
ARAB_COUNTRIES = [
|
||||||
|
{"name_ar": "المملكة العربية السعودية", "name_en": "Saudi Arabia", "capital": "الرياض", "lat": 24.7136, "lng": 46.6753, "population_m": 35.0},
|
||||||
|
{"name_ar": "الإمارات العربية المتحدة", "name_en": "UAE", "capital": "أبوظبي", "lat": 24.4539, "lng": 54.3773, "population_m": 9.4},
|
||||||
|
{"name_ar": "مصر", "name_en": "Egypt", "capital": "القاهرة", "lat": 30.0444, "lng": 31.2357, "population_m": 109.0},
|
||||||
|
{"name_ar": "العراق", "name_en": "Iraq", "capital": "بغداد", "lat": 33.3152, "lng": 44.3661, "population_m": 43.5},
|
||||||
|
{"name_ar": "الأردن", "name_en": "Jordan", "capital": "عمّان", "lat": 31.9454, "lng": 35.9284, "population_m": 11.1},
|
||||||
|
{"name_ar": "لبنان", "name_en": "Lebanon", "capital": "بيروت", "lat": 33.8938, "lng": 35.5018, "population_m": 5.5},
|
||||||
|
{"name_ar": "سوريا", "name_en": "Syria", "capital": "دمشق", "lat": 33.5138, "lng": 36.2765, "population_m": 22.0},
|
||||||
|
{"name_ar": "فلسطين", "name_en": "Palestine", "capital": "القدس", "lat": 31.7683, "lng": 35.2137, "population_m": 5.4},
|
||||||
|
{"name_ar": "اليمن", "name_en": "Yemen", "capital": "صنعاء", "lat": 15.3694, "lng": 44.1910, "population_m": 33.0},
|
||||||
|
{"name_ar": "عُمان", "name_en": "Oman", "capital": "مسقط", "lat": 23.5880, "lng": 58.3829, "population_m": 4.5},
|
||||||
|
{"name_ar": "الكويت", "name_en": "Kuwait", "capital": "مدينة الكويت", "lat": 29.3759, "lng": 47.9774, "population_m": 4.3},
|
||||||
|
{"name_ar": "قطر", "name_en": "Qatar", "capital": "الدوحة", "lat": 25.2854, "lng": 51.5310, "population_m": 2.9},
|
||||||
|
{"name_ar": "البحرين", "name_en": "Bahrain", "capital": "المنامة", "lat": 26.2235, "lng": 50.5876, "population_m": 1.5},
|
||||||
|
{"name_ar": "الجزائر", "name_en": "Algeria", "capital": "الجزائر", "lat": 36.7538, "lng": 3.0588, "population_m": 44.0},
|
||||||
|
{"name_ar": "المغرب", "name_en": "Morocco", "capital": "الرباط", "lat": 34.0209, "lng": -6.8416, "population_m": 37.0},
|
||||||
|
{"name_ar": "تونس", "name_en": "Tunisia", "capital": "تونس", "lat": 36.8065, "lng": 10.1815, "population_m": 12.0},
|
||||||
|
{"name_ar": "ليبيا", "name_en": "Libya", "capital": "طرابلس", "lat": 32.8872, "lng": 13.1913, "population_m": 6.8},
|
||||||
|
{"name_ar": "السودان", "name_en": "Sudan", "capital": "الخرطوم", "lat": 15.5007, "lng": 32.5599, "population_m": 46.0},
|
||||||
|
{"name_ar": "موريتانيا", "name_en": "Mauritania", "capital": "نواكشوط", "lat": 18.0735, "lng": -15.9582, "population_m": 4.6},
|
||||||
|
{"name_ar": "الصومال", "name_en": "Somalia", "capital": "مقديشو", "lat": 2.0469, "lng": 45.3182, "population_m": 17.0},
|
||||||
|
{"name_ar": "جيبوتي", "name_en": "Djibouti", "capital": "جيبوتي", "lat": 11.5721, "lng": 43.1456, "population_m": 1.1},
|
||||||
|
{"name_ar": "جزر القمر", "name_en": "Comoros", "capital": "موروني", "lat": -11.7172, "lng": 43.2473, "population_m": 0.8},
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_country(name: str):
|
||||||
|
"""البحث عن دولة بالاسم العربي أو الإنجليزي"""
|
||||||
|
for c in ARAB_COUNTRIES:
|
||||||
|
if name in c["name_ar"] or name.lower() in c["name_en"].lower():
|
||||||
|
return c
|
||||||
|
return None
|
||||||
|
|
||||||
|
def get_nearest_country(lat: float, lng: float):
|
||||||
|
"""أقرب دولة عربية للإحداثيات المعطاة"""
|
||||||
|
import math
|
||||||
|
nearest = None
|
||||||
|
min_dist = float("inf")
|
||||||
|
for c in ARAB_COUNTRIES:
|
||||||
|
dist = math.sqrt((c["lat"] - lat)**2 + (c["lng"] - lng)**2)
|
||||||
|
if dist < min_dist:
|
||||||
|
min_dist = dist
|
||||||
|
nearest = c
|
||||||
|
return nearest
|
||||||
|
|
||||||
|
def total_population() -> float:
|
||||||
|
"""إجمالي سكان الوطن العربي"""
|
||||||
|
return sum(c["population_m"] for c in ARAB_COUNTRIES)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
print(f"عدد الدول العربية: {len(ARAB_COUNTRIES)}")
|
||||||
|
print(f"إجمالي السكان: {total_population():.1f} مليون نسمة")
|
||||||
|
print(f"\nالدول العربية:")
|
||||||
|
for c in ARAB_COUNTRIES:
|
||||||
|
print(f" {c['name_ar']} - العاصمة: {c['capital']} - السكان: {c['population_m']}M")
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم