GISarabia.org
PostGIS 3.6 · PostgreSQL 12–18 · بالعربية

PostGIS بالعربية: قواعد البيانات المكانية

شرح عربي للبدء مع PostGIS، وترجمة كاملة لدليله الرسمي ولورشة «مقدمة إلى PostGIS»، مع الربط بـ QGIS.

ما هو PostGIS؟

PostGIS امتداد (Extension) مفتوح المصدر لقاعدة البيانات PostgreSQL، يضيف إليها القدرة على تخزين البيانات الجغرافية والاستعلام عنها وتحليلها بلغة SQL. بعد تفعيله تصبح قاعدة البيانات «مكانية»: فيها أنواع بيانات للأشكال الهندسية، وفهارس مكانية، ومئات الدوال مثل حساب المسافات والمساحات والتقاطعات والنطاقات العازلة.

ما يضيفهأمثلة
أنواع بياناتgeometry للإحداثيات المسقطة، geography للحساب على سطح الأرض بالمتر، raster للبيانات الشبكية
دوال مكانيةST_Distance، ST_Intersects، ST_Buffer، ST_Area، ST_Transform
فهارس مكانيةفهارس GiST تجعل الاستعلام على ملايين المعالم سريعًا
معاييريتبع مواصفات OGC Simple Features وSQL/MM، فيتكامل مع QGIS وGeoServer وGDAL وغيرها

لماذا قاعدة بيانات مكانية بدل الملفات؟

  • عدة مستخدمين في الوقت نفسه: فريق كامل يقرأ ويحرّر نفس البيانات دون نسخ ملفات.

  • الحجم والأداء: ملايين المعالم مع فهارس مكانية، واستعلام جزء منها فقط بدل تحميل الملف كله.

  • التحليل بلغة SQL: سؤال مثل «كم مدرسة تبعد أقل من 1 كم عن كل محطة؟» يصبح استعلامًا واحدًا قابلًا للتكرار والأتمتة.

  • سلامة البيانات: قيود وأنواع حقول ومعاملات (Transactions) ونسخ احتياطي وصلاحيات مستخدمين.

  • مصدر واحد للتطبيقات: QGIS وخوادم الخرائط وتطبيقات الويب تقرأ من نفس القاعدة.

التثبيت والتفعيل

النظامالطريقة الأسهل
Windowsثبّت PostgreSQL بالمثبّت الرسمي، ثم شغّل Stack Builder واختر من Spatial Extensions حزمة PostGIS.
Linux (Debian/Ubuntu)من مستودع PostgreSQL الرسمي: حزمة بالصيغة postgresql-<الإصدار>-postgis-3.
macOSتطبيق Postgres.app يأتي مع PostGIS جاهزًا.
Dockerصورة postgis/postgis الرسمية.

بعد التثبيت، اتصل بقاعدة بياناتك (بأداة psql أو pgAdmin) وفعّل الامتداد مرة واحدة لكل قاعدة:

CREATE EXTENSION postgis;
SELECT postgis_full_version();

إن ظهر رقم الإصدار فقاعدتك أصبحت مكانية. يتطلب PostGIS 3.6 إصدار PostgreSQL بين 12 و18. التفاصيل الكاملة في فصل التثبيت من الدليل المترجم.

أول استعلاماتك

أنشئ جدولًا بعمود من نوع geometry وأضف إليه نقاطًا بنظام WGS 84 (EPSG:4326):

CREATE TABLE places (
  id   serial PRIMARY KEY,
  name text,
  geom geometry(Point, 4326)
);

INSERT INTO places (name, geom) VALUES
  ('A', ST_SetSRID(ST_MakePoint(31.2357, 30.0444), 4326)),
  ('B', ST_SetSRID(ST_MakePoint(35.9106, 31.9539), 4326));

CREATE INDEX places_geom_idx ON places USING GIST (geom);

ثم احسب المسافة بالكيلومتر على سطح الأرض بتحويل الشكل إلى geography:

SELECT a.name, b.name,
       ST_Distance(a.geom::geography, b.geom::geography) / 1000 AS km
FROM places a, places b
WHERE a.id < b.id;

وابحث عن كل ما يقع ضمن 50 كم من نقطة باستخدام الفهرس المكاني:

SELECT name
FROM places
WHERE ST_DWithin(geom::geography,
                 ST_SetSRID(ST_MakePoint(31.2357, 30.0444), 4326)::geography,
                 50000);

geometry أم geography؟ مع geometry تُحسب المسافات بوحدات نظام الإحداثيات (درجات في EPSG:4326)، فاستخدم نظامًا متريًا أو حوّل إلى geography لتحصل على أمتار. شرح مفصل في درس Geography من الورشة.

الربط مع QGIS

  1. في لوحة Browser انقر بالزر الأيمن على PostgreSQL ← New Connection….

  2. أدخل الاسم، وHost (مثل localhost)، وPort (عادة 5432)، وDatabase، ثم بيانات الدخول، واضغط Test Connection.

  3. تظهر الجداول المكانية تحت الاتصال؛ اسحبها إلى الخريطة كأي طبقة.

  4. لنقل طبقة من QGIS إلى القاعدة: اسحبها من لوحة Layers إلى اسم الاتصال في Browser، أو استخدم Database › DB Manager ← Import Layer/File.

  5. لتشغيل SQL وعرض النتيجة كطبقة: DB Manager ← SQL Window ← Load as new layer.

للتفاصيل: فتح البيانات في دليل مستخدم QGIS، ووحدة قواعد البيانات المكانية في الدليل التدريبي.

مسار التعلّم المقترح

  1. ورشة «مقدمة إلى PostGIS»: ابدأ من التثبيت وتحميل البيانات، ثم SQL البسيط، والأشكال الهندسية، والعلاقات المكانية، والربط المكاني، والفهارس، والإسقاط.

  2. الفصل 4 من الدليل: إدارة البيانات: نماذج البيانات، الأنواع، الصلاحية، أنظمة الإحداثيات، التحميل والتصدير.

  3. الفصل 5: الاستعلامات المكانية والفصل 6: نصائح الأداء.

  4. الفصل 7: مرجع الدوال: صفحة لكل دالة بصيغتها وأمثلتها.

من موقع PostGIS الرسمي

الدليل والورشة مترجمان عن مصادرهما الرسمية ومنشوران برخصة CC BY-SA 3.0 كالأصل. PostGIS مشروع تابع لـ OSGeo، وهذا الموقع غير تابع له رسميًا.