أدوات بايثون للبيانات الجغرافية
GeoPandas هو مشروع لإضافة دعم للبيانات الجغرافية لكائنات الباندا. يقوم حاليًا بتنفيذ أنواع GeoSeries
و GeoDataFrame
والتي تعد فئات فرعية من pandas.Series
و pandas.DataFrame
على التوالي. يمكن لكائنات GeoPandas العمل على كائنات هندسية رشيقة وإجراء عمليات هندسية.
العمليات الهندسية لـ GeoPandas ديكارتية. يمكن تخزين النظام المرجعي الإحداثي (crs) كسمة على كائن، ويتم ضبطه تلقائيًا عند التحميل من ملف. قد يتم تحويل الكائنات إلى أنظمة إحداثيات جديدة باستخدام طريقة to_crs()
. لا يوجد حاليًا أي تطبيق لإحداثيات مماثلة للعمليات، لكن هذا قد يتغير في المستقبل.
الوثائق متاحة على الموقع Geopandas.org (الإصدار الحالي) وقراءة المستندات (إصدارات الإصدار والتطوير).
يستخدم مشروع GeoPandas نموذجًا للحوكمة المفتوحة ويحظى برعاية مالية من NumFOCUS. فكر في تقديم تبرع معفى من الضرائب لمساعدة المشروع على دفع تكاليف وقت المطور والخدمات المهنية والسفر وورش العمل ومجموعة متنوعة من الاحتياجات الأخرى.
راجع مستندات التثبيت للحصول على كافة التفاصيل. تعتمد GeoPandas على الحزم التالية:
pandas
shapely
pyogrio
pyproj
packaging
علاوة على ذلك، فإن matplotlib
عبارة عن تبعية اختيارية مطلوبة للتخطيط. تعتمد هذه الحزم على عدة مكتبات منخفضة المستوى للتحليل الجغرافي المكاني، الأمر الذي قد يمثل تحديًا عند تثبيته. لذلك، نوصي بتثبيت GeoPandas باستخدام مدير الحزم conda. راجع مستندات التثبيت لمزيد من التفاصيل.
>>> import geopandas
>>> from shapely.geometry import Polygon
>>> p1 = Polygon([(0, 0), (1, 0), (1, 1)])
>>> p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
>>> p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
>>> g = geopandas.GeoSeries([p1, p2, p3])
>>> g
0 POLYGON ((0 0, 1 0, 1 1, 0 0))
1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
2 POLYGON ((2 0, 3 0, 3 1, 2 1, 2 0))
dtype: geometry
تقوم بعض العمليات الجغرافية بإرجاع كائنات الباندا العادية. خاصية area
الخاصة بالسلسلة GeoSeries
ستُرجع pandas.Series
التي تحتوي على مساحة كل عنصر في GeoSeries
:
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
تقوم العمليات الأخرى بإرجاع كائنات GeoPandas:
>>> g.buffer(0.5)
0 POLYGON ((-0.3535533905932737 0.35355339059327...
1 POLYGON ((-0.5 0, -0.5 1, -0.4975923633360985 ...
2 POLYGON ((1.5 0, 1.5 1, 1.502407636663901 1.04...
dtype: geometry
تعرف كائنات GeoPanda أيضًا كيفية رسم نفسها. يستخدم GeoPandas matplotlib للتخطيط. لإنشاء قطعة أرض من GeoSeries
، استخدم:
>>> g.plot()
تطبق GeoPandas أيضًا مُنشئات بديلة يمكنها قراءة أي تنسيق بيانات يتعرف عليه pyogrio. لقراءة ملف مضغوط يحتوي على ملف شكل ESRI مع حدود الأحياء في مدينة نيويورك (يمكن جلب المثال باستخدام حزمة geodatasets
):
>>> import geodatasets
>>> nybb_path = geodatasets.get_path('nybb')
>>> boros = geopandas.read_file(nybb_path)
>>> boros.set_index('BoroCode', inplace=True)
>>> boros.sort_index(inplace=True)
>>> boros
BoroName Shape_Leng Shape_Area
BoroCode
1 Manhattan 359299.096471 6.364715e+08
2 Bronx 464392.991824 1.186925e+09
3 Brooklyn 741080.523166 1.937479e+09
4 Queens 896344.047763 3.045213e+09
5 Staten Island 330470.010332 1.623820e+09
geometry
BoroCode
1 MULTIPOLYGON (((981219.0557861328 188655.31579...
2 MULTIPOLYGON (((1012821.805786133 229228.26458...
3 MULTIPOLYGON (((1021176.479003906 151374.79699...
4 MULTIPOLYGON (((1029606.076599121 156073.81420...
5 MULTIPOLYGON (((970217.0223999023 145643.33221...
>>> boros['geometry'].convex_hull
BoroCode
1 POLYGON ((977855.4451904297 188082.3223876953,...
2 POLYGON ((1017949.977600098 225426.8845825195,...
3 POLYGON ((988872.8212280273 146772.0317993164,...
4 POLYGON ((1000721.531799316 136681.776184082, ...
5 POLYGON ((915517.6877458114 120121.8812543372,...
dtype: geometry