دليل استخدام postgis
postgis
هو وحدة تمديد للبيانات الجغرافية في PostgreSQL، وتوفر أنواع ووظائف البيانات الجغرافية، مما يسمح لـ PostgreSQL بتخزين وإستعلام البيانات الجغرافية. ستشرح هذه المقالة بالتفصيل كيفية تثبيت واستخدام postgis
في ServBay.
تثبيت postgis
يتضمن ServBay بالفعل وحدة postgis
، فأنت فقط تحتاج إلى تمكينها في قاعدة البيانات. فيما يلي خطوة تمكين postgis
:
الاتصال بقاعدة بيانات PostgreSQL:
bashpsql -U your_username -d your_database
1إنشاء تمديد:
sqlCREATE EXTENSION postgis;
1التحقق من التثبيت:
sql\dx
1
تكوين postgis
بعد تمكين postgis
، يمكنك إنشاء وإدارة أنواع البيانات الجغرافية، واستخدام العديد من الوظائف الجغرافية للعمل بها.
إنشاء جدول بيانات جغرافية
فيما يلي مثال يوضح كيفية إنشاء جدول يحتوي على بيانات جغرافية.
إنشاء الجدول:
sqlCREATE TABLE locations ( id SERIAL PRIMARY KEY, name VARCHAR(100), geom GEOMETRY(Point, 4326) );
1
2
3
4
5إدخال بيانات المثال:
sqlINSERT INTO locations (name, geom) VALUES ('Location A', ST_GeomFromText('POINT(116.4074 39.9042)', 4326)), ('Location B', ST_GeomFromText('POINT(121.4737 31.2304)', 4326));
1
2
3
إنشاء فهرس للبيانات الجغرافية
لتحسين أداء الاستعلام، يُوصى بإنشاء فهرس للعمود الجغرافي.
- إنشاء فهرس GIST:sql
CREATE INDEX idx_geom ON locations USING GIST (geom);
1
استخدام postgis للاستعلامات الجغرافية
فيما يلي بعض الأمثلة على الاستعلامات الجغرافية الشائعة.
استعلام عن المسافة
- الاستعلام عن المسافة بين نقطتين:sql
SELECT ST_Distance( ST_GeomFromText('POINT(116.4074 39.9042)', 4326), ST_GeomFromText('POINT(121.4737 31.2304)', 4326) );
1
2
3
4
استعلام عن الاحتواء
- الاستعلام عما إذا كانت نقطة ما داخل منطقة معينة:sql
SELECT name FROM locations WHERE ST_Contains( ST_GeomFromText('POLYGON((116.0 39.0, 117.0 39.0, 117.0 40.0, 116.0 40.0, 116.0 39.0))', 4326), geom );
1
2
3
4
5
استعلام عن الجيران الأقربين
- الاستعلام عن الأماكن القريبة من نقطة ما:sql
SELECT name FROM locations ORDER BY geom <-> ST_GeomFromText('POINT(116.4074 39.9042)', 4326) LIMIT 5;
1
2
3
استخدام postgis للتحليل الجغرافي
يوفر postgis
وظائف تحليلية جغرافية غنية، فيما يلي بعض الوظائف الشائعة.
تحليل المنطقة المحيطة
- إنشاء منطقة محيطة:sql
SELECT ST_Buffer(geom, 0.01) FROM locations WHERE name = 'Location A';
1
تحليل التقاطع
- الاستعلام عن تقاطع كائنين هندسيين:sql
SELECT ST_Intersection( ST_GeomFromText('POLYGON((116.0 39.0, 117.0 39.0, 117.0 40.0, 116.0 40.0, 116.0 39.0))', 4326), geom ) FROM locations WHERE name = 'Location A';
1
2
3
4
التحليل المشترك
- دمج عدة كائنات هندسية:sql
SELECT ST_Union(geom) FROM locations;
1
تصور البيانات الجغرافية
يمكنك استخدام أدوات نظم المعلومات الجغرافية المختلفة (مثل QGIS) أو خدمات الخرائط على الإنترنت (مثل Leaflet, OpenLayers) لتصور البيانات الجغرافية من postgis
.
استخدام QGIS
الاتصال بقاعدة بيانات PostgreSQL:
- افتح QGIS
- اختر "إدارة مصادر البيانات" -> "PostGIS"
- ادخل معلومات الاتصال بقاعدة البيانات واتصل
تحميل البيانات الجغرافية:
- اختر الجدول أو الرؤية التي تريد تحميلها
- انقر على زر "إضافة"
استخدام Leaflet
- إنشاء خريطة ويب:html
<!DOCTYPE html> <html> <head> <title>Leaflet PostGIS Example</title> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> </head> <body> <div id="map" style="width: 600px; height: 400px;"></div> <script> var map = L.map('map').setView([39.9042, 116.4074], 10); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); // Add a marker from PostGIS data var marker = L.marker([39.9042, 116.4074]).addTo(map) .bindPopup('Location A') .openPopup(); </script> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
الخاتمة
postgis
هو وحدة تمديد قوية، ومن خلال تكوين بسيط، يمكنك تحقيق تخزين واستعلام بيانات جغرافية فعال في PostgreSQL. يتضمن ServBay بالفعل وحدة postgis
، يمكنك فقط اتباع الخطوات المذكورة في هذه المقالة للتثبيت والتكوين لبدء الاستخدام. من خلال العديد من الاستعلامات والتحليلات الجغرافية، يمكنك الاستفادة من البيانات الجغرافية لتوفير دعم قاعدة بيانات موثوق لتطبيقك.