الفهرسة الجغرافية المكانية باستخدام PostGIS
أضف إضافة PostGIS، وخزّن geometry/geography، واستعلم عن العلاقات المكانية باستخدام فهارس GiST
الفهرسة الجغرافية المكانية باستخدام PostGIS درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
ما هو PostGIS؟
إنه أقوى إضافة جغرافية مكانية في أي قاعدة بيانات مفتوحة المصدر. فهو يضيف أنواع geometry وgeography ومئات الدوال المكانية وفهارس GiST وSP-GiST لإجراء الاستعلامات المكانية بسرعة.
تمكين PostGIS
إنها إضافة contrib:
CREATE EXTENSION postgis;
SELECT PostGIS_Version();GEOMETRY مقابل GEOGRAPHY
- GEOMETRY — مستوٍ، سريع، وتُقاس وحداته بوحدات نظام الإحداثيات، وغالبًا ما تكون أمتارًا أو درجات
- GEOGRAPHY — يمثل الأرض الكروية، أبطأ، ووحداته دائمًا بالأمتار
اختر GEOGRAPHY لقياس "المسافات على سطح الأرض" عند التعامل مع بيانات من مناطق مختلفة، واختر GEOMETRY لأنظمة الإحداثيات المسقطة، مثل نظم GIS الإقليمية والعمليات السريعة.
تخزين النقاط
النمط الشائع هو تخزين خط العرض وخط الطول كنقطة من نوع GEOGRAPHY:
CREATE TABLE places (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
location GEOGRAPHY(POINT, 4326)
);
INSERT INTO places (name, location)
VALUES ('Berlin', ST_GeogFromText('SRID=4326;POINT(13.405 52.520)'));SRID
يحدد "معرّف المرجع المكاني" نظام الإحداثيات. ويُعد WGS84، بالمعرّف 4326، المعيار المتبع لإحداثيات GPS لخط العرض وخط الطول.
الفهرس المكاني GiST
أنشئ فهرس GiST لعمود geometry:
CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.أقرب جار: <->
يعيد عامل KNN <-> مع وجود فهرس النتائج الأقرب خلال أجزاء من الثانية:
SELECT name, ST_Distance(location, ST_GeogFromText('SRID=4326;POINT(13.4 52.5)')) AS m
FROM places
ORDER BY location <-> ST_GeogFromText('SRID=4326;POINT(13.4 52.5)')
LIMIT 10;ضمن مسافة محددة
اعثر على الأماكن التي تقع ضمن مسافة كيلومترين من نقطة:
SELECT name FROM places
WHERE ST_DWithin(
location,
ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
2000 -- meters
);المضلعات والمساحات
خزّن المضلعات واستعلم عنها، مثل حدود المدن ومناطق التوصيل:
CREATE TABLE zones (
id BIGSERIAL PRIMARY KEY,
name TEXT,
area GEOGRAPHY(POLYGON, 4326)
);
-- Find places inside a zone:
SELECT p.name FROM places p
JOIN zones z ON ST_Within(p.location::GEOMETRY, z.area::GEOMETRY)
WHERE z.name = 'Mitte';التقاطع والاحتواء والوقوع ضمن النطاق
مجموعة غنية من المسندات المكانية: ST_Intersects وST_Contains وST_Within وST_Touches وST_Disjoint وST_Equals.
تحميل GeoJSON
استورد GeoJSON مباشرةً إلى PostGIS:
INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');إنشاء بلاطات المتجهات
يمكن لـ PostGIS 3.0 والإصدارات الأحدث إنشاء بلاطات متجهات Mapbox مباشرةً باستخدام ST_AsMVT، مما يتيح تشغيل واجهات الخرائط مباشرةً من قاعدة البيانات.
خلاصة
يحوّل PostGIS Postgres إلى محرك GIS متكامل.
- استخدم GEOMETRY للإحداثيات المسقطة، وGEOGRAPHY للمسافات على سطح الأرض
- استخدم فهرس GiST للتصفية المكانية والبحث عن أقرب جار
- ST_DWithin وST_Distance وST_Within
- SRID 4326 = WGS84 لإحداثيات خط العرض وخط الطول
تحقق سريع
تخزّن مواقع المستخدمين كنوع GEOGRAPHY(POINT). ما نوع الفهرس الذي يسرّع الاستعلامات من نوع "العثور على ما يقع ضمن 5 كيلومترات"؟
الأسئلة الشائعة
هل درس «الفهرسة الجغرافية المكانية باستخدام PostGIS» مجاني؟
نعم — نص درس «الفهرسة الجغرافية المكانية باستخدام PostGIS» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «الفهرسة الجغرافية المكانية باستخدام PostGIS»؟
أضف إضافة PostGIS، وخزّن geometry/geography، واستعلم عن العلاقات المكانية باستخدام فهارس GiST تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «الفهرسة الجغرافية المكانية باستخدام PostGIS»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- البحث بالترايغرام (pg_trgm) للمطابقة التقريبية
- البحث في النص الكامل باستخدام tsvector وGIN
- الفهرسة الجغرافية المكانية باستخدام PostGIS
- البحث المتجهي باستخدام pgvector