ما هو 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
في لوحة Browser انقر بالزر الأيمن على PostgreSQL ← New Connection….
أدخل الاسم، وHost (مثل
localhost)، وPort (عادة5432)، وDatabase، ثم بيانات الدخول، واضغط Test Connection.تظهر الجداول المكانية تحت الاتصال؛ اسحبها إلى الخريطة كأي طبقة.
لنقل طبقة من QGIS إلى القاعدة: اسحبها من لوحة Layers إلى اسم الاتصال في Browser، أو استخدم Database › DB Manager ← Import Layer/File.
لتشغيل SQL وعرض النتيجة كطبقة: DB Manager ← SQL Window ← Load as new layer.
للتفاصيل: فتح البيانات في دليل مستخدم QGIS، ووحدة قواعد البيانات المكانية في الدليل التدريبي.
مسار التعلّم المقترح
ورشة «مقدمة إلى PostGIS»: ابدأ من التثبيت وتحميل البيانات، ثم SQL البسيط، والأشكال الهندسية، والعلاقات المكانية، والربط المكاني، والفهارس، والإسقاط.
الفصل 4 من الدليل: إدارة البيانات: نماذج البيانات، الأنواع، الصلاحية، أنظمة الإحداثيات، التحميل والتصدير.
الفصل 7: مرجع الدوال: صفحة لكل دالة بصيغتها وأمثلتها.
من موقع PostGIS الرسمي
Getting Started: البدء والتثبيت.
FAQ: الأسئلة الشائعة.
Tips & Tricks: مقالات قصيرة لمهام شائعة.
Training: مواد تدريبية وكتب.
Documentation: صفحة التوثيق الرئيسية.
الدليل والورشة مترجمان عن مصادرهما الرسمية ومنشوران برخصة CC BY-SA 3.0 كالأصل. PostGIS مشروع تابع لـ OSGeo، وهذا الموقع غير تابع له رسميًا.