رسم خرائط باستخدام مكتبة Matplotlib في بايثون مع تضمين الدول الجزرية الصغيرة

رسم خرائط باستخدام مكتبة Matplotlib في بايثون مع تضمين الدول الجزرية الصغيرة


1. استخدام بيانات جغرافية دقيقة

تُعد مكتبة GeoPandas أداة قوية للتعامل مع البيانات الجغرافية. يمكن تحميل بيانات العالم بدقة متوسطة أو عالية من Natural Earth عبر Cartopy أو GeoPandas. على سبيل المثال:

import geopandas as gpd
from cartopy.io import shapereader

# تحميل بيانات العالم بدقة 50m
shapefile = shapereader.natural_earth(resolution='50m', category='cultural', name='admin_0_countries')
world = gpd.read_file(shapefile)

 


2. تحديد الدول الجزرية الصغيرة

بعض الدول الجزرية قد لا تظهر بوضوح في الخرائط القياسية. يمكن تحديدها يدويًا باستخدام أسمائها:

# قائمة بأسماء الدول الجزرية الصغيرة
island_countries = ['Cabo Verde', 'Mauritius', 'Comoros', 'São Tomé and Príncipe', 'Seychelles']

# تصفية الدول الجزرية من بيانات العالم
islands = world[world['NAME'].isin(island_countries)]

 


3. حساب المراكز الجغرافية للدول الجزرية

لحساب مركز كل دولة جزيرية:

# حساب المركز الجغرافي لكل دولة جزيرية
islands['centroid'] = islands.geometry.centroid

 


4. رسم الخريطة مع تضمين الدول الجزرية

باستخدام Matplotlib وCartopy:(python-graph-gallery.com)

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# إعداد الشكل والإسقاط
fig, ax = plt.subplots(figsize=(10, 10), subplot_kw={'projection': ccrs.PlateCarree()})

# رسم خريطة العالم
world.plot(ax=ax, edgecolor='black', facecolor='lightgray')

# رسم الدول الجزرية
islands.plot(ax=ax, edgecolor='blue', facecolor='lightblue')

# رسم مراكز الدول الجزرية كنقاط
ax.scatter(islands['centroid'].x, islands['centroid'].y, color='red', s=50, transform=ccrs.PlateCarree())

# عرض الخريطة
plt.show()

 


5. تعديل معلمات الرسم لظهور التفاصيل الدقيقة

عند استخدام مكتبة Basemap، يمكن تعديل معلمة area_thresh لضمان ظهور الكيانات الصغيرة:(github.com)

from mpl_toolkits.basemap import Basemap

# إعداد الخريطة مع تقليل area_thresh
m = Basemap(projection='merc', resolution='h', area_thresh=0.1,
            llcrnrlon=-20, llcrnrlat=-40, urcrnrlon=60, urcrnrlat=40)

m.drawcoastlines()
m.drawcountries()
m.fillcontinents(color='coral', lake_color='aqua')
m.drawmapboundary(fill_color='aqua')

 

تعديل area_thresh إلى قيمة منخفضة مثل 0.1 يضمن ظهور الجزر الصغيرة التي قد تُهمل في الإعدادات الافتراضية.


6. استخدام الخرائط التوضيحية (Inset Maps) لتكبير الجزر الصغيرة

لتحسين وضوح الجزر الصغيرة، يمكن استخدام خرائط توضيحية داخل الخريطة الرئيسية:

from mpl_toolkits.axes_grid1.inset_locator import inset_axes

# إنشاء محور فرعي داخل الخريطة الرئيسية
axins = inset_axes(ax, width="30%", height="30%", loc='lower left',
                   bbox_to_anchor=(0.1, 0.1, 0.5, 0.5), bbox_transform=ax.transAxes)

# تحديد حدود الخريطة التوضيحية
axins.set_extent([50, 60, -10, 0], crs=ccrs.PlateCarree())

# رسم نفس البيانات في الخريطة التوضيحية
world.plot(ax=axins, edgecolor='black', facecolor='lightgray')
islands.plot(ax=axins, edgecolor='blue', facecolor='lightblue')
axins.scatter(islands['centroid'].x, islands['centroid'].y, color='red', s=50, transform=ccrs.PlateCarree())

 

تساعد الخرائط التوضيحية في تسليط الضوء على المناطق الصغيرة دون فقدان السياق العام للخريطة.


7. التحقق من جودة البيانات الجغرافية

في بعض الأحيان، قد تكون البيانات الجغرافية غير مكتملة أو تفتقر إلى تفاصيل الدول الجزرية. يمكن استخدام مصادر بيانات بديلة أو تحديث البيانات الحالية لضمان شمولية الخريطة.

حول المحتوى:

باتباع هذه الخطوات، يمكن رسم خرائط دقيقة تشمل الدول الجزرية الصغيرة باستخدام مكتبة Matplotlib في بايثون.