پایگاه داده مکانی و PostGIS چیست؟
راهنمای کامل پایگاه داده مکانی: کاربردها، توابع مکانی، مقایسه با Shapefile و شروع رایگان
پایگاه داده مکانی (Spatial Database) پایگاه دادهای است که علاوه بر عدد و متن، شکل و موقعیت را هم ذخیره میکند و میفهمد: نقطهی یک ایستگاه، خط یک خیابان، چندضلعی یک قطعه زمین. PostGIS محبوبترین پایگاه داده مکانی متنباز جهان است؛ افزونهای که PostgreSQL را به یک موتور کامل تحلیل مکانی تبدیل میکند. در این راهنما میبینید پایگاه داده مکانی چه کاری انجام میدهد، کجا به آن نیاز دارید و چطور در چند دقیقه یکی داشته باشید.
پایگاه داده مکانی چه فرقی با پایگاه داده معمولی دارد؟
در یک پایگاه داده معمولی میتوانید بپرسید «کدام مشتریها در تهران هستند؟» چون «تهران» یک متن است. اما سؤالهایی مثل اینها فقط در پایگاه داده مکانی جواب دارند:
- کدام مدرسهها در شعاع ۵۰۰ متری این خیابان هستند؟
- مساحت هر قطعه زمین چقدر است و کدامها با حریم رودخانه همپوشانی دارند؟
- نزدیکترین ایستگاه آتشنشانی به این آدرس کجاست و مسیر رسیدن چقدر طول میکشد؟
- چند حسگر آلودگی هوا داخل هر منطقه شهرداری قرار دارد؟
پایگاه داده مکانی برای این کارها سه چیز دارد: نوع داده هندسی (نقطه، خط، چندضلعی)، توابع مکانی (فاصله، تقاطع، بافر، تبدیل مختصات) و نمایه مکانی که جستجو بین میلیونها عارضه را در کسری از ثانیه انجام میدهد.
PostGIS چیست؟
PostGIS افزونهای رایگان و متنباز برای PostgreSQL است که از سال ۲۰۰۱ توسعه داده میشود و امروز ستون فقرات بسیاری از سامانههای GIS در دنیاست. با نصب آن، ستونهای geometry و geography و صدها تابع مکانی با پیشوند ST_ به پایگاه داده اضافه میشود. تقریباً همه ابزارهای GIS مستقیم به PostGIS وصل میشوند:
| ابزار | کاربرد با PostGIS |
|---|---|
| QGIS | نمایش، ویرایش و تحلیل لایهها مستقیم از پایگاه داده (آموزش اتصال QGIS) |
| GeoServer | انتشار لایهها بهصورت WMS و WFS برای WebGIS (آموزش GeoServer) |
| Python / GeoPandas | خواندن و نوشتن داده مکانی با چند خط کد (نمونه کد) |
| GeoDjango / Node.js | ساخت وبسایت و API نقشه |
| ogr2ogr / shp2pgsql | وارد کردن Shapefile، GeoPackage و GeoJSON (آموزش ورود داده) |
افزونههای مهم کنار PostGIS
- pgRouting: کوتاهترین مسیر، تحلیل شبکه معابر و حوزه دسترسی.
- postgis_raster: ذخیره و تحلیل تصاویر ماهوارهای و مدل رقومی ارتفاع (DEM).
- postgis_topology: مدیریت مرزهای مشترک و همسایگی، مثل نقشههای کاداستر.
- pg_trgm و fuzzystrmatch: جستجوی سریع و تقریبی روی نام مکانها و نشانیها.
چند کوئری مکانی نمونه
فاصله واقعی به متر بین دو نقطه (با نوع geography):
SELECT ST_Distance(
ST_SetSRID(ST_MakePoint(51.3380, 35.6997), 4326)::geography, -- برج آزادی
ST_SetSRID(ST_MakePoint(51.3890, 35.7575), 4326)::geography -- برج میلاد
) AS meters;
همه قطعههایی که با حریم ۲۰۰ متری یک رودخانه تقاطع دارند:
SELECT p.id, p.owner
FROM parcels p
JOIN rivers r ON ST_DWithin(p.geom::geography, r.geom::geography, 200);
تعداد نقاط داخل هر منطقه:
SELECT z.name, count(s.*) AS sensors
FROM zones z LEFT JOIN sensors s ON ST_Contains(z.geom, s.geom)
GROUP BY z.name ORDER BY sensors DESC;
نمونههای بیشتر در کوئریهای مکانی پرکاربرد آمده است.
PostGIS یا Shapefile و GeoPackage؟
Shapefile و GeoPackage فایل هستند: برای یک نفر روی یک کامپیوتر عالیاند. وقتی چند نفر باید همزمان روی داده کار کنند، وقتی GeoServer یا یک وبسایت باید لایه را نمایش دهد، یا وقتی داده از چند صد هزار عارضه بیشتر میشود، به یک پایگاه داده مکانی سرور نیاز دارید. PostGIS همچنین کنترل دسترسی، تراکنش، نمایه مکانی و تحلیل با SQL را یکجا میدهد.
سیستم مختصات (SRID) را چطور انتخاب کنیم؟
برای ذخیره و نمایش وب معمولاً EPSG:4326 (طول و عرض جغرافیایی) کافی است. برای محاسبه دقیق فاصله و مساحت، یا از نوع geography استفاده کنید یا داده را به UTM زون مربوط ببرید؛ برای تهران EPSG:32639. جزئیات در سیستم مختصات و SRID در ایران.
چطور یک پایگاه داده PostGIS داشته باشیم؟
دو راه دارید. نصب روی سرور خودتان: PostgreSQL و PostGIS را نصب میکنید، دسترسی از بیرون، کاربر محدود، SSL، فایروال و بکاپ را تنظیم میکنید. برای تیمهایی که مدیر سرور دارند مناسب است، ولی برای یک پایاننامه یا پروژه کوچک چند روز وقت میگیرد.
پایگاه داده PostGIS آماده در پایگاه داده مکانی: با شماره موبایل ثبتنام میکنید، یک نام مینویسید و افزونهها را تیک میزنید. کمتر از یک دقیقه بعد یک پایگاه داده مکانی با اتصال SSL و کاربر اختصاصی دارید، همراه با اطلاعات اتصال آماده برای QGIS، GeoServer و پایتون. جدولها، نقشه هر لایه و کنسول SQL هم داخل خود سایت در دسترس است.
پلن رایگان: 100 مگابایت حجم، 10 اتصال همزمان و 90 روز اعتبار با امکان تمدید رایگان؛ مناسب یادگیری، پایاننامه و نمونه اولیه WebGIS.
پرسشهای متداول
آیا PostGIS رایگان است؟
بله. PostGIS و PostgreSQL هر دو متنباز و رایگاناند؛ هزینه فقط مربوط به سروری است که روی آن اجرا میشوند.
برای راهاندازی WebGIS به چه چیزهایی نیاز دارم؟
معمولاً یک پایگاه داده مکانی (PostGIS)، یک سرور نقشه یا API (مثل GeoServer) و یک کتابخانه نمایش نقشه در مرورگر (Leaflet یا OpenLayers).
آیا میتوانم از ArcGIS به PostGIS وصل شوم؟
بله، ArcGIS Pro از اتصال به PostgreSQL/PostGIS پشتیبانی میکند؛ اطلاعات اتصال همان است که برای QGIS استفاده میکنید.