Geopandas

 


مكتبة GeoPandas هي مكتبة مفتوحة المصدر بلغة Python تُسهِّل العمل مع البيانات الجغرافية (GIS). تعتمد على مكتبة Pandas، وتدمج بين مكتبات أخرى مثل Shapely، Fiona، وPyproj للتعامل مع البيانات الجغرافية المكانية.

أهم ميزات GeoPandas:

  1. التعامل مع البيانات الجغرافية:

    • تدعم أنواعًا متعددة من البيانات مثل النقاط (Points)، الخطوط (Lines)، والمضلعات (Polygons).
    • توفر أدوات لمعالجة بيانات الخرائط (Vector data).
  2. قراءة وكتابة الملفات الجغرافية:

    • تدعم صيغًا شائعة مثل Shapefiles، GeoJSON، KML، وGPKG.
  3. التحليل المكاني:

    • حساب المسافات والمساحات.
    • تنفيذ عمليات مثل الدمج المكاني (Spatial Join) والقطع (Intersection).
    • تحويل الأنظمة الإحداثية (CRS transformations).
  4. التكامل مع مكتبات Python أخرى:

    • تتكامل مع مكتبة Matplotlib لإنشاء الرسوم البيانية والخرائط.
    • يمكن استخدامها مع مكتبات مثل Folium وPlotly لإنشاء خرائط تفاعلية.

أمثلة على استخدام GeoPandas:

import geopandas as gpd

# Read a Shapefile
data = gpd.read_file("data.shp")

# Display the coordinate reference system (CRS)
print(data.crs)

# Plot the data
data.plot()

# Transform to WGS 84 CRS
data = data.to_crs("EPSG:4326")

# Calculate area for each geometry
data['area'] = data.geometry.area

تثبيت GeoPandas:

يمكن تثبيت المكتبة باستخدام pip أو conda:

pip install geopandas

أو

conda install -c conda-forge geopandas

استخدامات GeoPandas:

  • تحليل البيانات الجغرافية والمكانية.
  • معالجة بيانات نظم المعلومات الجغرافية (GIS).
  • دمج وتحليل بيانات المواقع.

البيانات الجغرافية المكانية

في GeoPandas، يتم تخزين البيانات الجغرافية في هياكل تُسمى GeoDataFrames، وهي امتداد لمفهوم DataFrame من مكتبة Pandas ولكن مع دعم مباشر للأعمدة التي تحتوي على هندسة جغرافية (Geometry).

أنواع البيانات الجغرافية التي تدعمها GeoPandas:

  1. Point: يُستخدم لتمثيل المواقع الفردية (مثل إحداثيات مدينة).
  2. LineString: يُستخدم لتمثيل الخطوط (مثل الطرق).
  3. Polygon: يُستخدم لتمثيل المناطق المغلقة (مثل البحيرات أو الحدود).
  4. MultiPoint، MultiLineString، MultiPolygon: لتمثيل مجموعات من الكائنات الجغرافية.

قراءة البيانات الجغرافية:

GeoPandas تستطيع قراءة بيانات من ملفات مختلفة مثل:

  • Shapefile (الامتداد .shp).
  • GeoJSON (الامتداد .geojson).
  • CSV مع أعمدة تحتوي على إحداثيات.
  • قواعد البيانات الجغرافية مثل PostGIS.

مثال:

python
# Read a GeoJSON file geojson_data = gpd.read_file("data.geojson") # Display the first few rows print(geojson_data.head())

العمليات الجغرافية الأساسية:

1. Spatial Join (الدمج المكاني):

لدمج البيانات بناءً على التقاطع الجغرافي:

python
joined_data = gpd.sjoin(data1, data2, how="inner", predicate="intersects")

2. Buffer (إنشاء مناطق محيطة):

يمكنك إنشاء منطقة محيطة (Buffer) حول كل عنصر:

python
data['buffer'] = data.geometry.buffer(0.1) # Create a buffer of 0.1 units

3. Intersection (التقاطع):

لإيجاد المنطقة المشتركة بين هندستين:

python
intersection = data1.geometry.intersection(data2.geometry)

4. Union (الاتحاد):

لدمج جميع الأشكال في شكل واحد:

python
union = data.unary_union

5. Dissolve (التجميع):

لدمج المضلعات حسب قيمة معينة في عمود:

python
dissolved = data.dissolve(by='category')

نظام الإحداثيات (Coordinate Reference System - CRS):

GeoPandas يسمح بالعمل مع أنظمة إحداثية مختلفة وتحويل البيانات بينها.

عرض النظام الحالي:

python
print(data.crs)

تحويل النظام:

python
data = data.to_crs("EPSG:3857") # Web Mercator projection

التكامل مع مكتبات أخرى:

1. Matplotlib لرسم الخرائط:

python
import matplotlib.pyplot as plt data.plot(column='population', cmap='OrRd', legend=True) plt.title("Population Distribution") plt.show()

2. Folium للخرائط التفاعلية:

python
import folium # Create a map m = folium.Map(location=[40.7128, -74.0060], zoom_start=10) # Add GeoJSON data folium.GeoJson(data).add_to(m) # Save or display the map m.save("map.html")

3 التحقق من صحة البيانات الجغرافية:

في كثير من الأحيان، تكون البيانات الجغرافية غير نظيفة، وتحتاج إلى التحقق منها وتصحيحها:

python
# Check for invalid geometries invalid_geometries = data[~data.is_valid] # Fix geometries data['geometry'] = data['geometry'].buffer(0)


4. قراءة وكتابة أنواع ملفات متعددة:

  • GeoPandas تدعم صيغ متعددة مثل Shapefile، GeoJSON، وغيرها.
  • أمثلة:
python
# Read a GeoJSON file geojson_data = gpd.read_file("data.geojson") # Save the GeoDataFrame to a new Shapefile data.to_file("output.shp") # Save to GeoPackage data.to_file("output.gpkg", layer="layer_name", driver="GPKG")

5. تحليل البيانات الجغرافية:

  • تحليل البيانات بناءً على السمات الجغرافية والمكانية:
    • Spatial Join: ربط بيانات بناءً على الموقع.
    • Clipping: قص البيانات بناءً على حدود معينة.
  • أمثلة:
python
# Spatial Join: Join data2 to data1 based on spatial location joined = gpd.sjoin(data1, data2, how='inner', predicate='intersects') # Clip data based on a bounding box clipped = gpd.clip(data, bounding_box)

6. التعامل مع الأعمدة الهندسية (Geometry Columns):

  • العمود الرئيسي في GeoDataFrame هو geometry الذي يحتوي على الكائنات الهندسية.
  • أمثلة على العمليات:
python
# Access geometries geometries = data.geometry # Calculate centroids data['centroid'] = data.geometry.centroid # Calculate bounds of geometries data['bounds'] = data.geometry.bounds




Next Post Previous Post
No Comment
Add Comment
comment url