با PostgreSQL یک ژئودیتابیس ایجاد کنید.
در این نوشته قصد داریم شما را با مراحل ایجاد پایگاه داده مکانی با PostgreSQL آشنا سازیم، با ما همراه باشید…
تا کنون در سایت GISPlus، پنج نوشته برای آموزش پایگاه داده مکانی منتشر کرده ایم. برای آن که به یاد آورید، مروری کوتاه بر این آموزش ها خواهیم داشت.
آموزش اول: پایگاه داده مکانی چیست؟
در این آموزش به شما گفتیم چرا باید از پایگاه داده مکانی استفاده کنید. گفتیم که پایگاه داده مکانی، پیش نیاز راه اندازی Web GIS می باشد. شما را با مفاهیم پایگاه داده مکانی و چیستی آن آشنا کردیم و نرم افزارهای مدیریت پایگاه داده مکانی را نیز به شما توضیح دادیم.
برخی از کاربران سایت از ما پرسش داشتند که در مطالعات خود به واژه های پایگاه داده مکانی، پایگاه داده جغرافیایی، بانک اطلاعات جغرافیایی، بانک اطلاعات مکانی، ژئودیتابیس و مواردی شبیه به این ها برخورد می کنند و تفاوت این واژه ها در چیست؟ حقیقت این است که همه این واژه ها ترجمه واژه های Database و GeoDatabase و یا Spatial Database می باشند. ترجمه درست، پایگاه داده می باشد که متاسفانه در منابع مختلف از آن به بانک اطلاعاتی هم یاد می شود. در نوشته ای مجزا به رفع ابهام در این خصوص خواهیم پرداخت.
آموزش دوم: پایگاه داده مکانی PostgreSQL
در این آموزش به شما گفتیم که PostgreSQL چیست؟ گفتیم که برای ایجاد پایگاه داده مکانی می توانید از نرم افزار PostgreSQL استفاده نمایید. البته به شرطی کهافزونه مکانی PostGIS را بر روی PostgreSQL نصب کرده باشید.
آموزش سوم: نصب و راه اندازی PostgreSQL
در سلسله نوشته های آموزش نرم افزار PostgreSQL به شما آموزش نصب PostgreSQL را دادیم.
آموزش چهارم: آموزش PostGIS
در این آموزش به شما گفتیم برای کار با داده های مکانی در PostgreSQL باید از افزونه مکانی PostGIS استفاده نماییم.
آموزش پنجم: آموزش نصب PostGIS
در این نوشته برای ایجاد پایگاه داده مکانی با PostgreSQL، به شما آموزش نصب افزونه PostGIS را یاد دادیم.
اینک در این نوشته به آموزش ایجاد پایگاه داده مکانی با PostgreSQL خواهیم پرداخت و شما یاد می گیرید چگونه یک پایگاه داده مکانی با PostgreSQL ایجاد کنیم؟
این نوشته از مجموعه آموزش های آکادمی WEB GIS است. برای مشاهده آموزش های پیشین و دانلود فیلم و PDF آن ها، می توانید به صفحه آکادمی WEB GISمراجعه نمایید.ورود به آکادمی WEB GIS
ایجاد پایگاهداده مکانی با PostgreSQL
پس از آن که نرم افزار PostgreSQL و افزونه مکانی PostGIS را نصب کردید و پایگاه داده مکانی پیشفرض ایجاد شد، میتوانید به ایجاد پایگاه داده مکانی با PostgreSQL بپردازید. به دو روش میتوانید نسبت به ایجاد پایگاهداده مکانی، اقدام نمایید. تنها نکتهای که میبایست به آن توجه داشته باشید این است که در هر دو روش، پایگاهداده postgis_23_sample را به عنوان template انتخاب نمایید.
برای آن که بتوانید از مزایای پایگاه داده استفاده نمایید، ابتدا میبایست یک پایگاه داده ایجاد نمایید. برای ایجاد یک پایگاه داده جدید، دو راه وجود دارد:
برای ایجاد پایگاه داده مکانی می توانید از واسط های گرافیکی همانند pgAdmin استفاده نموده و یا با استفاده از دستورات SQL این کار را انجام دهید. ما در این آموزش از نرم افزار pgAdmin که به همراه نرم افزار PostgreSQL نصب می شود، استفاده خواهیم کرد.
ایجاد پایگاه داده مکانی با استفاده از pgAdmin
به منظور ایجاد پایگاه داده با استفاده از pgAdmin، واسطکاربری pgAdmin را اجرا نمایید و به سرویسدهنده local متصل شوید. در بخش Object Browser بر روی زیر گروه Databases کلیک راست نمایید و گزینه New Database را انتخاب نمایید.
پس از این کار، پنجرهای همانند زیر باز میشود. در سربرگ Properties میبایست نام پایگاهداده را در بخش Name، مشخص نمایید. ورود نام برای پایگاهداده، اجباری میباشد. در بخش Owner میتوانید مشخص نمایید که کدامین کاربر، مالک پایگاهداده میباشد. این بخش به صورت اختیاری میباشد و اگر کاربری را انتخاب ننمایید، کاربر postgres به عنوان مالک پایگاهداده در نظر گرفته میشود. در بخش Comment نیز میتوانید توضیحات دلخواه خود را وارد نمایید. این بخش نیز اختیاری میباشد.
در سربرگ Definition، میتوانید برخی دیگر از تنظیمات اختیاری برای ایجاد پایگاهداده را انجام دهید. به تصویر زیر دقت نمایید.
در بخش Encoding میتوانید تعیین کنید که نوع کدگذاری اطلاعات ذخیره شده در پایگاهداده چگونه میباشند. بهتر است درصورتی که از دادههای چندزبانه استفاده مینمایید، UTF8 را انتخاب نمایید. در بخش Template میتوانید مشخص کنید که آیا این پایگاهداده میبایست ساختار اشیای خود را از یک پایگاهداده دیگر به ارث ببرد یا خیر. از آنجایی که در حال ایجاد پایگاه داده مکانی با PostgreSQL هستیم، لذا در قسمت Template میبایست پایگاه داده مکانی پیشفرض postgis_23_sample را انتخاب نمایید (همانند تصویر زیر).
در بخش Tablespace میتوانید مشخص نمایید که اشیای این پایگاهداده در کدام TableSpace ذخیره میشوند. ما در بسته آموزش PostgreSQL به صورت مفصل در مورد TableSpaceها و مزایای استفاده از آن ها برای بهبود کارآیی پایگاه داده، صحبت کرده ایم.
در قسمت Connection limits میتوانید مشخص نمایید به صورت همزمان، چند اتصال میتواند با پایگاه داده برقرار شود. به عبارت دیگر چند کاربر به صورت هم زمان میتوانند به پایگاهداده، متصل شوند. عدد -1 نمایانگر بینهایت میباشد. از آنجایی که این تنظیمات به صورت اختیاری میباشند، درصورتی که این موارد تنظیم نشوند، از مقادیر پیشفرض برای آنها استفاده خواهد شد. در ادامه، جدول مقادیر پیشفرض تنظیمات این سربرگ را مشاهده مینمایید.
پس از ورود اطلاعات دو سربرگ فوق، بر روی کلید Ok، کلیک نمایید تا مراحل ایجاد پایگاه داده مکانی با PostgreSQL به اتمام برسد.
پس از آنکه پایگاهداده مکانی geodb1 را ایجاد نمودید، میتوانید به آن متصل شوید. اگر به ساختار آن دقت کنید، مشاهده میکنید که ساختار آن دقیقا همانند ساختار پایگاهداده postgis_23_sample میباشد. درحقیقت پایگاهداده geodb1 تمامی ساختار پایگاهداده postgis_23_sample را به ارث برده است.
ایجاد Schema
برای آن که بتوانید داده های موجود در پایگاه داده خود را دستهبندی نمایید، میبایست از Schema ها استفاده نمایید. هر پایگاه داده در PostgreSQL، دارای یک Schema پیشفرض با نام public میباشد. بهتر است از این Schema برای موارد عمومی که میخواهید در دستهبندی خاصی قرار داده نشوند استفاده نمایید. همانند روشهای قبلی برای ایجاد اشیای پایگاه داده، برای ایجاد یک Schema جدید نیز دو راه وجود دارد:
- استفاده از واسطهای گرافیکی
- استفاده از دستورات SQL
ایجاد Schema با استفاده از pgAdmin
به منظور ایجاد Schema با استفاده از pgAdmin، واسطکاربری pgAdmin را اجرا نمایید و به سرویسدهنده local متصل شوید. در بخش Object Browser وارد پایگاهداده مورد نظر شوید. بر روی زیر گروه Schemas کلیک راست نمایید و گزینه New Schema را انتخاب نمایید.
پس از این کار، پنجرهای همانند زیر باز میشود. در سربرگ Properties میبایست نام Schema را در بخش Name، مشخص نمایید. ورود نام برای Schema، اجباری میباشد. در بخش Owner میتوانید مشخص نمایید که کدامین کاربر، مالک Schema میباشد. این بخش بصورت اختیاری میباشد و اگر کاربری را انتخاب ننمایید، کاربر postgres به عنوان مالک Schema در نظر گرفته میشود. در بخش Comment نیز میتوانید توضیحات دلخواه خود را وارد نمایید. این بخش نیز اختیاری میباشد.
پس از ورود مشخصات فوق، بر روی کلید OK کلیک کنید تا Schema جدید ایجاد شود.
ایجاد جدول مکانی
پس از ساخت پایگاه داده مکانی و ایجاد Schema، می توانید نسبت به ایجاد یک جدول مکانی اقدام کنید. یک جدول (یا Table) نیز با هر دو روش فوق قابل انجام میباشد. در این بخش، به منظورسهولت فرآیند آموزش، ایجاد یک جدول مکانی با استفاده از روش اول را توضیح خواهیم داد.
هر Table دارای تعدادی سطر و ستون میباشد. ستونها که در PostgreSQL از آنها با Column یاد میشود، دارای نوع میباشند. با نصب افزونه مکانی PostGIS، دو نوع داده Geometry و Geography به انواع داده ای PostgreSQL اضافه میشود. در ادامه نوشته های آموزش پایگاه داده مکانی، تفاوت Geometry و Geography را به تفصیل بررسی خواهیم کرد.
ایجاد Table با استفاده از pgAdmin
به منظور ایجاد Table با استفاده از pgAdmin، واسطکاربری pgAdmin را اجرا نمایید و به سرویسدهنده local متصل شوید. در بخش Object Browser وارد پایگاه داده مورد نظر شوید و سپس Schema مورد نظر به منظور ایجاد Tables را باز نمایید و گزینه New Table را انتخاب نمایید.
پس از این کار، پنجرهای همانند زیر باز میشود.
در سربرگ Properties میبایست نام Table را در بخش Name، مشخص نمایید. ورود نام برای Table، اجباری میباشد. در بخش Owner میتوانید مشخص نمایید که کدامین کاربر، مالک Table میباشد. این بخش بصورت اختیاری میباشد و اگر کاربری را انتخاب ننمایید، کاربر postgres به عنوان مالک Table در نظر گرفته میشود. در بخش Comment نیز میتوانید توضیحات دلخواه خود را وارد نمایید. این بخش نیز اختیاری میباشد.
ازآنجایی که Tableها یک ساختار فیزیکی هستند و بروی حافظه جانبی رایانه ذخیره میشوند لذا میتوانید برای آنها، TableSpace نیز انتخاب نمایید. برای این منظور میتوانید وارد سربرگ Definition شوید.
برای ایجاد ستونهای Table میبایست وارد سربرگ Columns شوید و سپس کلید Add را بفشارید تا پنجرهای همانند تصویر زیر باز شود:
در سربرگ Properties میبایست نام ستون را در بخش Name، مشخص نمایید. ورود نام برای ستون، اجباری میباشد. در بخش Data type، میبایست نوع دادهای که قرار است در این ستون ذخیره شود را مشخص نمایید. در بخش Comment نیز میتوانید توضیحات دل خواه خود را وارد نمایید. این بخش نیز اختیاری میباشد. ما در اینجا یک فیلد با نام id از نوع serial ایجاد می کنیم. نوع داده serial، مقادیر این فیلد را در سطرهای مختلف به صورت اتوماتیک قرار خواهد داد و مقدار این ستون در هر سطر، یکی بیشتر از مقدار این ستون در سطر قبل می باشد. ما معمولا در تمامی جداولی که ایجاد می کنیم، چنین ستونی را به عنوان ستون کلید یا Primary Key در نظر می گیریم. فیلد کلید در جداول باعث می شود تا برقراری ارتباط با سایر جداول به راحتی قابل انجام باشد.
کلید OK کلیک نمایید. مجدد بر روی کلید Add کلیک نمایید تا یک ستون دیگر همانند تصویر زیر اضافه نماییم.
همانطور که مشاهده میکنید، نوع دادهای این ستون را از نوع کاراکتری با طول متغییر و نهایت 15 کاراکتر تعیین نمودهایم. به همین منوال شما میتوانید ستونهای بیشتری را به Table اضافه نمایید.
برای ایجاد یک ستون از نوع مکانی، هنگام ایجاد ستونهای Table، پس از ورود نام ستون در بخش Name، در بخش Data type، یکی از انواع داده Geometry و یا Geography را انتخاب نمایید.
پس از ورود مشخصات ستون، بر روی کلید OK کلیک نمایید. در نهایت بر روی کلید OK کلیک نمایید تا Table مورد نظر ایجاد شود.
نکته
اگرچه در انتخاب نام ستونها آزاد هستید اما به منظور تطابق جدول مکانی شما با سایر نرم افزارهای آزاد مکانی خانواده OGC، بهتر است نام ستون مکانی جداول را the_geom قرار دهید.
تا اینجا ما یک ستون از نوع Geometry به جدول اضافه نمودیم و بدین نحو، جدول را برای ذخیره نمودن دادههای مکانی، آماده کردیم، اما مشخص نکردهایم که نوع داده مکانی قابل ذخیره در ستون the_geom از چه نوعی میباشد. نوع نقطه ای، نوع خطی و نوع سطحی و همچنین انواع چندتایی از این نوع ها قابل تعریف می باشد. همچنین مشخص نکردهایم که دادههای مکانی قابل ذخیره بصورت دوبعدی هستند یا سهبعدی و یا سیستم مختصات دادههای قابل ذخیره چیست.
برای تعیین این موارد، تنها روش ممکن، استفاده از دستورات SQL و یا استفاده از نرم افزارهای واسط میباشد و در حال حاضر نمیتوان این تنظیمات را از طریق واسطکاربری pgAdmin، انجام داد. استفاده از نرمافزارهای واسط در نوشته های آتی از سلسله آموزش پایگاه داده مکانی توضیح داده میشوند. در این بخش، نحوه استفاده از دستورات SQL به منظور تعیین این تنظیمات را میآوریم. به مثال زیر توجه نمایید:
همان طور که مشاهده میکنید دو دستور SQL آورده شده است. در دستور اول، یک جدول با دو ستون ایجاد میشود. در دستور دوم، تابع AddGeometryColumn که یکی از توابع PostGIS میباشد فراخوانی میشود. وظیفه این تابع، اضافه نمودن یک ستون از نوع مکانی به یک جدول میباشد. اگر به ورودیهای این تابع دقت کنید، مشاهده میکنید که این تابع دارای 6 ورودی میباشد. ورودی اول مشخص کننده نام Schema میباشد که خالی رها شده و به معنای Schema، public میباشد. ورودی دوم حاوی نام جدول میباشد. در ورودی سوم، نام ستون مکانی را وارد میکنید. در ورودی چهارم میبایست کد مشخصه سیستم مختصات داده های مکانی قابل ذخیره در ستون مکانی را وارد نمایید. در مورد این کدها که به EPSG معروف هستند در آموزش نرم افزار PostgreSQL صحبت کرده ایم.
در حال حاضر بدانید که کد 4326 مشخص کننده این است که داده های مکانی دارای سیستم مختصات درجه دقیقه میباشند. در ورودی بعدی میبایست مشخص کنیم که داده های مکانی قابل ذخیره در این ستون از چه نوعی هستند. LINESTRING، بیانگر این است که داده های مکانی از نوع خطی میباشند. عدد 2 در آخرین ورودی نیز مشخص کننده این است که داده های مکانی به صورت دوبعدی میباشند.
فیلم آموزش ایجاد پایگاه داده مکانی با PostgreSQL
به شما پیشنهاد می کنیم فیلم آموزش ایجاد پایگاه داده مکانی با PostgreSQL را به رایگان دانلود نمایید. ما در این فیلم، کلیه مراحل فوق را به شما به صورت تصویری آموزش می دهیم و با نحوه ایجاد پایگاه داده مکانی با PostgreSQL آشنا می شوید.
سخن پایانی
برای شروع برنامه نویسی وب GIS و راه اندازی سامانه Web GIS نیاز دارید تا مقدماتی را فراهم کنید. این مقدمات به شرح زیر هستند:
- ایجاد یک پایگاه داده مکانی
- ورود نقشه ها و داده های مکانی به پایگاه داده مکانی
- انتشار نقشه ها و داده های مکانی در Web
پس از این سه گام می توانید برنامه نویسی قابلیت های GIS را شروع نمایید.
با نوشته هایی که تاکنون به منظور آموزش پایگاه داده مکانی در سایت GISPlus منتشر کردیم، شما یاد گرفته اید که چگونه یک پایگاه داده مکانی ایجاد کنیم؟ ما مراحل ایجاد پایگاه داده مکانی با PostgreSQL را در شش آموزش گذشته به شما یاد دادیم.
برای خواندن همه این آموزش ها می توانید به بخش پایگاه داده مکانی در سایت GISPlus بروید.
آموزش آتی
در نوشته آتی شما را با انواع داده های مکانی در پایگاه داده، آشنا خواهیم کرد.