پایگاه داده فضایی چه کاری می تواند برای شما انجام دهد؟-آیا پایگاه داده مکانی واقعاً خاص است؟بسیاری از متخصصان GIS از یک رشته خاص وارد این حوزه می شوند و به GIS به عنوان ابزاری برای دستیابی به اهداف خود در زمینه اصلی خود علاقه مند می شوند و با فرسایش یا قصد شروع به تغییر تمرکز خود به GIS می کنند. من خودم این مسیر را طی کردم. پس از رفتن به مدرسه برای مطالعه زیست شناسی حیات وحش، با GIS آشنا شدم و در یک برنامه کوچک در GIS و تجزیه و تحلیل فضایی ثبت نام کردم. من فکر می کنم که این یک چیز خوب از بسیاری جهات است. افرادی که علاقه مند به حل مشکلات در رشته های دیگر هستند، زمینه را به سمتی پیش می برند که بعید است فردی که تنها تمرکز خود را روی GIS قرار داده است، پیش برود. ما به این افراد در صنعت نیاز داریم.
اما GIS یک رشته فنی است. در هسته GIS آن، فناوری پایگاه داده است، البته با تمرکز فضایی. به نظر من، بسیاری از بخشهای GIS دانشگاه، بهویژه در سطح گواهی، بیش از حد بر جنبههای «مکانی» GIS تمرکز میکنند و به اندازه کافی بر روی فناوری پایگاهداده اساسی تمرکز ندارند. در نتیجه این برنامهها متخصصان GIS را تولید میکنند که در نقشهبرداری و تحلیل فضایی بسیار خوب هستند، اما خود را برای بازار کار مدرن GIS آماده نمیدانند، جایی که نیاز فزایندهای به افراد با مهارت در مدیریت پایگاه داده، SQL و مبتنی بر وب وجود دارد. GIS. حتی اگر آنها خودشان آن وظایف را انجام نمی دهند، متخصصان GIS حداقل باید درک درستی از فناوری داشته باشند تا بتوانند به طور موثر با کسانی که این وظایف را انجام می دهند، ارتباط برقرار کنند.
تا حدودی با فرارسیدن برنامه های دانشگاهی، این در حال تغییر است. با این حال، آن دسته از ما که 10 یا 20 سال پیش زمانی که اکثر رایانه ها ماشین های مستقل تک کاربره بودند، آموزش دیده بودند، هنوز با واژگان پایگاه های داده سرویس گیرنده-سرور در سطح سازمانی چند کاربره دست و پنجه نرم می کنند. خوشبختانه من در موقعیتم بهتر از خیلی ها بودم زیرا تقریباً 10 سال را به عنوان برنامه نویس پایگاه داده قبل از بازگشت به مدرسه برای مطالعه زیست شناسی گذرانده بودم.
موضوع اساسی این مفهوم است که “فضایی خاص است”. من استدلال می کنم که اینطور نیست، اگرچه کارها را پیچیده می کند. مطمئناً نیاز به درک سیستم های مرجع فضایی وجود دارد. نیاز به درک اصول کارتوگرافی برای خروجی نتایج به عنوان نقشه وجود دارد. همچنین نیاز به درک ایده روابط فضایی (لمس، گسست، همپوشانی، شامل، و غیره) و عملیات فضایی (بافر، تقاطع، اتحاد، تفاوت، و غیره) وجود دارد. این مفاهیم مطمئناً پیچیدگی هایی را به داده ها اضافه می کنند، اما در نهایت هنوز فقط داده ها هستند و حوزه علوم رایانه ابزارهای شگفت انگیزی را برای مقابله با داده ها در اختیار ما قرار داده است. این ابزارها فقط باید برای مقابله با پیچیدگیهایی که دادههای مکانی شامل میشوند گسترش یابند و این همان چیزی است که پایگاه داده مکانی است.
GIS و پایگاه های داده
همیشه اینطور بوده است. هنگامی که جک دانگرموند Arc/INFO را در اواخر دهه 1970 ایجاد کرد، به یک پایگاه داده موجود به نام INFO مجوز داد و قابلیت های فضایی را به آن اضافه کرد (قسمت قوس). بعداً وقتی ESRI نسخه PC Arc/Info را توسعه داد، از پایگاه داده موجود دیگری برای پلتفرم رایانه شخصی به نام dBase III برای ذخیره داده های ویژگی استفاده کرد. هنگامی که ArcView منتشر شد و آنها به یک ساختار ذخیره سازی داده ساده تری نیاز داشتند، به shapefile رسیدند که همچنین از ساختارهای فایل dBase III برای ذخیره داده های ویژگی استفاده می کرد. زمانی که ArcGIS 8.0 منتشر شد، ESRI مفهوم یک پایگاه جغرافیایی را در دو حالت معرفی کرد. پایگاه های جغرافیایی شخصی بر روی ساختار فایل .mdb دسترسی مایکروسافت و پایگاه های جغرافیایی سازمانی بر روی پایگاه های داده موجود در سطح سازمانی مانند SQLServer و Oracle ساخته شده اند. تا قبل از ArcGIS 9 نبود. 0 که ESRI اولین مکانیزم ذخیره سازی داده را که از ابتدا توسعه داده بود، یعنی File Geodatabase، منتشر کرد تا جایگزین پایگاه داده جغرافیایی شخصی شود که مشمول محدودیت های اندازه فایل و مشکلات عملکرد بود. فایلهای GDB بسیار فشرده و سریع بودند، اما به ویرایش تک کاربره محدود میشدند و دسترسی به SQL نداشتند.
GIS همیشه به معنای واقعی کلمه از روز اول ادغام فناوری پایگاه داده موجود با برخی نرم افزارهای تخصصی برای مقابله با پیچیدگی های داده های مکانی بوده است. فناوری پایگاه داده در چند دهه گذشته بسیار خوب شده است. فناوری اصلی ذخیره سازی و بازیابی داده ها با استفاده از پرس و جوهای SQL اساساً تغییر نکرده است. من احتمالاً می توانستم دقیقاً همان پرس و جوهای SQL را که در اواسط دهه 80 می نوشتم در پایگاه داده های امروزی با تغییرات بسیار اندک اجرا کنم. چیزی که تغییر کرده این است که پایگاه دادههای سازمانی مدرن آنقدر سریع هستند که میتوانند به معنای واقعی کلمه میلیونها کاربر همزمان را مدیریت کنند (فکر کنید فیسبوک یا Amazon.com)، از هر نقطهای در جهان قابل دسترسی هستند، آنقدر قوی هستند که وقتی کسی شکست میخورد اغلب اخبار شبانه را میسازد. ، و باید به اندازه کافی ایمن باشد تا بتواند در برابر تلاش های هکری که توسط دولت به خوبی سازماندهی شده است، ایستادگی کند. شرکتهای پایگاه داده میلیونها دلار را صرف ریختن جزئیات دقیق برای بهینهسازی نمایهسازی و پردازش پرسوجو میکنند و چند ثانیه زمان پرسوجو را کاهش میدهند و میلیونها دلار دیگر را برای اطمینان از از بین رفتن هیچ دادهای ذخیرهشده در سیستمهایشان خرج میکنند. خیلی خیلی نرم افزار خوبیه در واقع آنقدر خوب است که تقریباً غیرقابل تصور است که هر شرکت GIS، حتی شرکتی به بزرگی ESRI، بتواند در آنها پیشرفت کند.
در یک دنیای ایده آل، به نظر من، نرم افزار GIS عالی بر اساس فناوری پایگاه داده موجود است. بخش GIS تا حد زیادی حول نمایش و کارتوگرافی (خروجی های بصری) و ویرایش (ورودی های بصری) می چرخد. جنبه بصری توسط پایگاه های داده فضایی که واقعاً بر روی ذخیره سازی و بازیابی داده متمرکز هستند و اغلب هیچ رابط کاربری خاصی ندارند به خوبی مدیریت نمی شود. در عوض آنها به سادگی دستورات SQL را که از یک کلاینت به آنها ارسال می شود پردازش می کنند و نتایجی را که سپس توسط مشتری تفسیر می شوند، برمی گرداند. همچنین در یک دنیای عالی، آموزش GIS با یک پایه خوب در فناوری پایگاه داده، نظریه RDBMS و SQL آغاز می شود. مانند همه رشته ها، قبل از اینکه بتوانید بدوید، باید راه بروید و پیاده روی در اصطلاح GIS یک پایه محکم در علم داده است. جنبه های فضایی را می توان و باید بعداً اضافه کرد،
به طور خلاصه، یک پایگاه داده فضایی مزایای زیر را ارائه می دهد.
- سرعت
- امنیت
- ویرایش چند کاربره
- دسترسی از چندین مشتری
- پرس و جوهای SQL
سرعت
همانطور که قبلاً اشاره کردم، شرکت های پایگاه داده مانند اوراکل، آی بی ام و مایکروسافت سالانه میلیون ها دلار در بهینه سازی بازیابی و امنیت داده ها سرمایه گذاری می کنند. رقابت شدیدی بین این شرکتها وجود دارد و میلیاردها دلار در خطر است و آنها توانایی سرمایهگذاری منابعی را دارند که هیچ یک از شرکتهای GIS، حتی شرکتی به بزرگی ESRI نمیتوانند امیدوار به رقابت با آن باشند. آنها می توانند برخی از بهترین دانشمندان کامپیوتر جهان را استخدام کنند تا عمیقاً در نظریه نمایه سازی برای صرفه جویی در ثانیه ها از یک پرس و جو یا ایجاد الگوریتم هایی برای تقسیم وظایف بین چندین پردازنده یا حتی چندین رایانه برای بهبود عملکرد، استفاده کنند.
پایگاههای اطلاعاتی سطح سازمانی معمولاً با رابط کاربری زیاد مواجه نمیشوند، اما از طریق پرسوجوهای SQL قابل دسترسی هستند، و بنابراین سرعت و امنیت امتیاز اصلی فروش آنها است. به همین دلیل، می توانید شرط بندی کنید که آنها از آخرین ذره ظرفیت رایانه شما به کارآمدترین شکل ممکن استفاده می کنند. هسته CPU در حالی که تقریباً هر رایانه ای که در دهه گذشته فروخته شده است 64 بیتی و با چندین هسته بوده است
امنیت
چندین جنبه برای امنیت وجود دارد. همه رایانه ها ممکن است از کار بیفتند و همه نرم افزارها دارای اشکالاتی هستند که می تواند منجر به خرابی و از دست دادن داده ها شود. بنابراین، باید اقداماتی برای به حداقل رساندن احتمال تأثیرگذاری این مسائل بر یکپارچگی داده های شما انجام شود. مشکلات سخت افزاری معمولاً با پشتیبان گیری مکرر و با استفاده از تکرار حل می شود. Replication به این معنی است که داده ها چندین بار در چندین درایو دیسک نوشته می شوند و گاهی اوقات در چندین رایانه در مکان های مختلف به طوری که اگر یک مشکل سخت افزاری رخ دهد یا نوعی فاجعه منجر به از دست رفتن یک درایو یا رایانه یا حتی یک شهر شود، از این تکرارها میتوانند وارد شوند و اغلب بدون نیاز به توقف برنامه، به دادههای شما دسترسی داشته باشند.
جنبه دیگر امنیت داده ها شامل به حداقل رساندن احتمال خطاهای انسانی است. پیشگیری کامل از اینها تقریباً غیرممکن است، اما اقداماتی وجود دارد که می توان برای کاهش این پتانسیل انجام داد. پایگاههای اطلاعاتی در سطح سازمانی اجازه میدهند تا کنترل دقیقی بر آنچه افراد بهصورت جداگانه از طریق اعطای مجوزها به آنها دسترسی دارند، داشته باشند. هر کاربر باید با یک نام و رمز عبور وارد پایگاه داده شود و این تعیین می کند که چه نوع تغییراتی مجاز به انجام آن هستند. در بسیاری از پایگاه های داده، مجوزها را می توان تا سطح فیلد فردی اعطا کرد. به این ترتیب کاربران می توانند از مشاهده، تغییر یا حذف اطلاعاتی که نباید به آنها دسترسی داشته باشند جلوگیری شود.
تریگرها همچنین می توانند در اکثر سیستم های پایگاه داده استفاده شوند. تریگرها توابع سفارشی هستند که در پاسخ به یک رویداد پایگاه داده اجرا می شوند. به عنوان مثال، هنگامی که یک لانه قرار دارد، یک بافر در اطراف یک لانه شکارچی می تواند به طور خودکار ایجاد شود و اندازه بافر ممکن است به گونه بستگی داشته باشد. این باعث صرفه جویی در وقت کاربر و همچنین کاهش خطای انسانی می شود. تریگرها همچنین میتوانند اعتبارسنجی را انجام دهند تا مطمئن شوند که یک مقدار در محدوده مشخصی قرار میگیرد یا با تمام حروف بزرگ وارد میشود و غیره. انجام این کار در سطح پایگاه داده تضمین میکند که همه دادهها سازگار هستند و هیچ راهی برای ورودیهای نامعتبر وجود ندارد. به وقوع پیوستن.
تراکنش ها روش دیگری برای اطمینان از یکپارچگی داده ها هستند. تراکنش ها گروهی از دستورات SQL هستند که با هم به صورت گروهی اجرا می شوند، به گونه ای که اگر هر یک از دستورات شکست بخورد، کل گروه به عقب بازگردانده می شود. این امر باعث میشود که هیچ نیمه اندازهگیری در پایگاه داده وجود نداشته باشد، به عنوان مثال اگر یک بافر به طور خودکار در پاسخ به ورود به یک لانه ایجاد شود، اما قبل از کپی شدن همه دادههای فیلد، چیزی با شکست مواجه شود. اگر همه مراحل در یک تراکنش گروه بندی شده باشند، در صورتی که هر یک از مراحل زیر اجرا نشود، بافر حذف می شود. یک پایگاه داده به درستی راهاندازی شده میتواند راه درازی برای جلوگیری از تأثیر خطای انسانی بر یکپارچگی دادههای شما داشته باشد، اما همانطور که یک مرد خردمند زمانی گفت: «شما میتوانید هر چیزی را گول بزنید، اما نمیتوانید احمقانه چیزی را اثبات کنید».
آخرین بخش امنیت داده ها جلوگیری از حملات مخرب به داده های شما است. ممکن است فکر کنید که اگر دادههای شما چیزی نیست که توجه زیادی را به خود جلب کند، این مشکلی برای شرکت شما نیست، اما تعجب آور است که افراد زیادی در آنجا هستند و هر چیزی را که میتوانند پیدا کنند بررسی میکنند. گاهی اوقات این فقط کنجکاوی است، گاهی اوقات ممکن است فقط ایجاد هرج و مرج به هر شکلی باشد، گاهی اوقات استفاده از رایانه یا شبکه شما به عنوان پله ای برای سیستم کامپیوتری دیگران است، گاهی اوقات آنها سعی می کنند اطلاعات شما را باج بگیرند و باج گیری کنند. پول از شما با این حال، برخی از شرکتها با دادههایی سروکار دارند که در دستان اشتباه ارزشمند هستند. آنها تلاشهای هماهنگی را انجام میدهند، گاهی اوقات توسط گروههای ماهر و سازمانیافته هکرهایی که سعی در نفوذ به دادههای آنها دارند. صرف نظر از این، همیشه بهترین کار این است که اقدامات معقولی برای ایمن سازی اطلاعات خود انجام دهید. نفوذ دادهها به شرکتهای بزرگ اغلب اخبار ملی میکند و هیچ شرکت پایگاهدادهای نمیخواهد بفهمد که این ضعف در نرمافزار پایگاه دادهشان است که مقصر بوده است. چنین رویدادی می تواند میلیاردها ضرر از دست دادن درآمد یک شرکت را به همراه داشته باشد و بنابراین شرکت های پایگاه داده انگیزه بالایی دارند تا سیستم های خود را ایمن کنند.
ویرایش چند کاربره
بیشتر دوران حرفهای من در شرکتهای کوچک اما رو به رشد مشاوره محیطی سپری شد. حتی در این شرکتهای کوچک، که حتی روی GIS تمرکز نمیکردند، من زمانهای زیادی را صرف این کردم که سرم را به دیوار بکوبم و سعی کردم مسائل مربوط به ویرایش چند کاربره را در GIS تجاری که اساساً یک سیستم تک کاربره بود، حل کنم. بالا رفتن از نردبان به یک پایگاه جغرافیایی سازمانی چند کاربره در یک GIS تجاری مستلزم صرف هزینه بیشتر از کل ارزش قراردادهایی بود که روی آن کار میکردم و بنابراین به من گفته شد که «راهی برای عملی کردن آن پیدا کنم». اگر آن زمان آنچه را که اکنون می دانم می دانستم، می توانستم ظرف چند روز به یک راه حل منبع باز تغییر دهم، اما دید عقب 20-20 است.
مانند بسیاری از مردم، من در این ذهنیت گیر کرده بودم که “فضایی خاص است” و هر راه حلی باید از ESRI ارائه شود، و ESRI راه حل هایی در دسترس داشت، اما هیچ راهی وجود نداشت که شرکت من بتواند آنها را بپردازد. حتی اگر راه حل هایی برای دسترسی محدود به ویرایش چند کاربره وجود داشت، ESRI علاقه کمی به اجرای آنها نشان داد. حتی بدتر از آن، سیستم قفل آنها از دسترسی به ویرایش برای هر کسی غیر از اولین شخصی که نه فقط یک فایل یا لایه، بلکه کل فهرست یا پایگاه داده جغرافیایی را باز می کند، جلوگیری می کند. این قفل صرف نظر از اینکه آنها واقعاً در حالت ویرایش بودند یا نه اتفاق افتاد. در نتیجه، زمان زیادی برای خروج کل شرکت از ArcGIS تلف شد تا یک نفر بتواند نقشه ای را که نیاز به ویرایش دارد باز کند.
از سوی دیگر، QGIS در ابتدا به عنوان مشتری برای داده های ذخیره شده در PostGIS (یک پسوند فضایی برای پایگاه داده PostgreSQL) توسعه داده شد، بنابراین قابلیت ویرایش چند کاربره را در هسته اصلی خود دارد. همچنین می تواند مشتری داده های فضایی ذخیره شده در SQLServer و Oracle باشد. در همه این موارد، پایگاه داده همه چیز مربوط به ذخیره سازی داده را مدیریت می کند، که در آن بسیار خوب است، در حالی که QGIS بر روی آنچه که در آن خوب است، یعنی ویرایش و نمایش داده های مکانی تمرکز می کند. و این دقیقاً همان چیزی است که به نظر من باید باشد.
دسترسی از چندین مشتری
پایگاه داده های سازمانی معمولاً مستقل از هر رابط کاربری وجود دارد. آنها صرفاً بر ذخیره و بازیابی داده ها به کارآمدترین ابزار ممکن متمرکز هستند. نرم افزار کلاینت معمولاً از طریق پرس و جوی SQL به داده ها دسترسی پیدا می کند. این داده ها می توانند توسط انواع مختلفی از مشتریان در مکان های مختلف به طور همزمان قابل دسترسی باشند. کلاینت ها ممکن است نرم افزار GIS دسکتاپ کامل مانند ArcGIS یا QGIS یا ترکیبی از این دو باشند. QGIS و ArcGIS هر دو می توانند در بسیاری از موارد به طور همزمان به یک داده دسترسی داشته باشند، اما مراقب باشید زیرا معمول است که داده ها فقط می توانند در یکی یا دیگری ویرایش شوند، بنابراین باید به دقت فکر کنید که چه کسی به چه کسی ارائه می شود. نرم افزار اگر آنها را میکس کنید. مشتری دیگر ممکن است صفحه گسترده ای باشد که فقط داده های جدولی را برای گنجاندن در یک گزارش یا یک برنامه آماری برای تجزیه و تحلیل رسمی تر می کشد.داشبورد وب امنی که در اختیار آنها قرار می گیرد.
همه افراد به مجموعه ای از داده ها از مکان های مختلف و چندین نوع نرم افزار دسترسی دارند، اما هر یک فقط ابزارهای خاصی را در اختیار دارند و هر کدام می توانند مجوزهای خاصی به آنها اعطا شود. این قدرت و نوید یک پایگاه داده فضایی است و چیزی که همه چیز را ممکن می کند، یک فناوری 40 ساله به نام SQL یا زبان پرس و جو ساخت یافته است.
SQL
SQL برای مدت طولانی در زمینه کامپیوتر وجود داشته است. زمانی که در اوایل دهه 80 در دبیرستان بودم، در حال نوشتن پرس و جوهای SQL در پایگاه داده Informix به عنوان یک کار نیمه وقت بعد از مدرسه بودم. شگفتانگیز است که فناوری رایانه در 34 سال گذشته چقدر تغییر کرده است، اما SQL تا حد زیادی ثابت مانده است. من مطمئن هستم که برخی از همان جستجوهای SQL که در یک ترمینال گنگ با صفحه نمایش تک رنگ سبز 9 اینچی تایپ کردم و در نوار کاست ذخیره کردم، امروز اجرا می شوند اگر آنها را از یک دستگاه تلفن همراه در بالای کوه از طریق یک جستجوی ajax ارسال کنم. به یک وب سرور و دلیل اینکه SQL امتحان خود را پس داده است این است که در کاری که قرار است انجام دهد بسیار بسیار خوب است.
هدف اصلی SQL پرس و جو از پایگاه داده برای بازیابی اطلاعات مورد نیاز است. مطمئناً، میتواند کارهای زیادی مانند تعریف ساختار پایگاه داده، مدیریت دادهها از طریق دستورات INSERT، UPDATE، و DELETE و مدیریت کاربران با اختصاص نقشها و اعطای مجوز انجام دهد. دستور SQL SELECT، با این حال، جواهر تاج است. برای پرس و جو از پایگاه داده برای به دست آوردن اطلاعات مورد نیاز شما استفاده می شود و افرادی که با SQL خوب هستند می توانند دقیقاً اطلاعات مورد نیاز خود را خیلی سریع دریافت کنند.
ساختار اصلی یک کوئری SQL SELECT بسیار ساده است. با کلمات کلیدی SELECT شروع می شود، سپس لیستی از فیلدهای موجود در جدول پایگاه داده که کاربر به آنها علاقه مند است، به دنبال آن کلمه کلیدی FROM و نام جدول در پایگاه داده قرار می گیرد. استاندارد این است که کلمات کلیدی با حروف بزرگ نوشته می شوند، در حالی که نام فیلدها و نام جدول ها همه با حروف کوچک هستند. برای مثال عبارت SQL زیر نام، نام خانوادگی، تولد، سن، شهر و ایالت را از جدول مشتریان در پایگاه داده برمی گرداند.
نام، نام، تاریخ تولد، سن، شهر، ایالت را از مشتریان انتخاب کنید
شما همچنین می توانید یک عبارت WHERE برای فیلتر کردن زیرمجموعه ای از داده ها اضافه کنید، به عنوان مثال:
WHERE state=’NY’
و همچنین می توانید یک عبارت ORDER BY را اضافه کنید تا به عنوان مثال، داده ها به ترتیب خاصی مرتب شوند
ترتیب بر اساس شهر، نام، نام
و در حالی که ساختار اصلی بسیار ساده است، همه چیز می تواند شروع به پیچیده شدن کند. ممکن است بخواهید در یک فیلد خاص گروه بندی کنید تا جمع های فرعی برای آن فیلد خلاصه شود. این به عبارت GROUP BY نیاز دارد. همچنین ممکن است بخواهید با استفاده از عبارت JOIN به دو یا چند جدول بپیوندید تا آنها را در یک فیلد مشترک به هم متصل کنید. برای مثال، میتوانید ویژگی لانه عقاب را به همه نتایج نظرسنجی آن بپیوندید. اگر سوالات فرعی و توابع پنجره و غیره را اضافه کنید، همه چیز می تواند خیلی سریع پیچیده شود، و این قبل از این است که ما وارد هر چیزی حتی از راه دور فضایی شویم.
یک نکته مهم این است که یک پرس و جوی SQL، مهم نیست چقدر پیچیده است، به سادگی متن است. عبارت توسط مشتری به پایگاه داده ارسال می شود، پایگاه داده پرس و جو را در سرور پردازش می کند و مجموعه ای از داده ها را به مشتری برمی گرداند. این به مشتری بستگی دارد که بداند چگونه داده ها را به سرور ارسال کند و چگونه نتایج را پردازش کند. یک برنامه GIS ممکن است داده های نقطه ای را روی نقشه نمایش دهد، در حالی که یک صفحه وب ممکن است جدولی از نتایج را نمایش دهد. SQL مبتنی بر متن به این معنی است که شما می توانید کل یک پرس و جو را در یک پایگاه داده ذخیره کنید یا آن را در یک ایمیل ارسال کنید، و کار با آنها در سراسر اینترنت نیز بسیار آسان است. یک صفحه وب می تواند یک دستور SQL را از طریق یک درخواست AJAX به پایگاه داده ارسال کند که می تواند در سمت سرور بررسی شود و نتایج را به صفحه وب برگرداند.
بسیاری از برنامه های پایگاه داده شخصی سنتی مانند مایکروسافت اکسس تلاش می کنند تا کاربر را از نوشتن پرس و جوهای SQL با ارائه رابط های کاربری گرافیکی حذف کنند، اما هر پرس و جوی را که می توانید در رابط کاربری آن ایجاد کنید، می توانید در نمای SQL نیز مشاهده کنید تا SQL پشت پرس و جو را مشاهده کنید. ArcGIS این کار را نیز انجام می دهد، آنها رابط کاربری گرافیکی خود را “انتخاب با ویژگی ها” می نامند و شما احتمالاً از آن استفاده کرده اید.

اما می توانید در ناحیه دایره ای قرمز رنگ مشاهده کنید که تنها کاری که انجام می دهید ایجاد یک دستور SQL SELECT است. این رابط های کاربری گرافیکی هیچ ایرادی ندارند، آنها می توانند ابزارهای عالی برای یادگیری SQL باشند و همچنین می توانند برخی از پرس و جوها را سرعت بخشند، اما کاربر باید بفهمد که واقعاً در زیر سرپوش چه می گذرد.
پایگاه داده های فضایی
امیدواریم اگر تا اینجا خوانده باشید، به مزایای سیستم مدیریت پایگاه داده رابطه ای سرور مشتری در سطح سازمانی پی برده باشید. اما فعال کردن فضایی پایگاه داده به چه معناست؟ حداقل به این معنی است که شما توانایی ذخیره هندسه در پایگاه داده را دارید. به طور کلی، مختصات واقعی که نقاط، خطوط و چند ضلعی ها را تشکیل می دهند در قالب باینری در یک ستون در پایگاه داده ذخیره می شوند. شما نمی توانید این اطلاعات را مستقیما بخوانید زیرا باینری است، اما همانطور که در ادامه خواهیم دید، اگر بخواهید می توانید آن را به شکل قابل خواندن توسط انسان تبدیل کنید. این بدان معناست که نرمافزار کلاینت که برای ویرایش و/یا نمایش دادهها از پایگاه داده استفاده میشود، باید نحوه تبدیل دادههای باینری را به مختصاتی که میتواند برای این منظور استفاده کند، درک کند. از نظر مفهومی، این تفاوت چندانی با نحوه ذخیره سازی داده ها در shapefile ندارد.
اکثر پایگاه های داده مدرن این توانایی را دارند که هندسه را به عنوان یک ستون در یک پایگاه داده در کنار ویژگی های ویژگی ها ذخیره کنند. بسیاری نیز شامل مجموعه ای از توابع فضایی برای برخورد با داده های مکانی هستند، اما کیفیت آنها می تواند به طور قابل توجهی متفاوت باشد. پایگاه داده های تجاری مانند Oracle، DB2 و SQLServer اغلب پسوندهای فضایی اختصاصی خود را دارند که اجازه می دهد تا داده های مکانی در پایگاه داده آنها گنجانده شود. پایگاه داده های منبع باز مانند PostgreSQL و حتی پایگاه داده مبتنی بر فایل SQLite پسوندهای فضایی برای آنها به عنوان پروژه های منبع باز اضافی (PostGIS و SpatiaLite) دارند. علاوه بر این ESRI دارای پسوند فضایی اختصاصی خود به نام ArcSDE است که می تواند در بالای هر دو پایگاه داده تجاری ذکر شده در بالا و همچنین PostgreSQL کار کند.
این توابع فضایی شامل ابزارهایی برای تبدیل بین سیستم های مختصات، اندازه گیری (فاصله و مساحت)، آزمایش روابط (همپوشانی ها، لمس ها، و غیره) و ایجاد هندسه های جدید (بافر، تقاطع، تفاوت و غیره) می باشد.
استفاده از پایگاه داده فضایی
ما ثابت کردهایم که نرمافزار پایگاه داده سازمانی فوقالعاده است و میتوان آنها را به صورت مکانی فعال کرد تا دادههای مکانی را ذخیره کند و معمولاً شامل برخی عملکردهای ویژه برای مقابله با پیچیدگیهای دادههای مکانی است. اما واقعاً چگونه می توان از آنها استفاده کرد؟ مثال زیر را در نظر بگیرید که در آن ما مجموعه ای از داده های لانه عقاب را داریم که به لانه های فعال (سبز) و غیرفعال (نارنجی) طبقه بندی شده اند.
اگر بخواهیم در نرم افزار دسکتاپ GIS یک لایه حاوی بافرها در اطراف لانه های فعال ایجاد کنیم، باید ابتدا لانه های فعال را انتخاب کرده و سپس یک ابزار geoprocessing را اجرا کنیم تا لایه دوم چند ضلعی های بافر ایجاد کنیم که فایل دیگری روی دیسک ایجاد می کند. با یک پایگاه داده به صورت فضایی فعال میتوانیم با استفاده از تابع ST_Buffer با دستور SQL زیر، لایهای را بر اساس یک پرس و جوی SQL ایجاد کنیم.
SELECT nest_id, status, st_buffer(geometry, 500) FROM bald_eagle_nests WHERE status=’ACTIVE NEST’;
تابع st_buffer یک هندسه ورودی و یک فاصله بافر را می گیرد، در این مورد 500 متر (زیرا داده ها در مختصات UTM ذخیره می شوند)، و هندسه چند ضلعی نشان دهنده یک بافر در اطراف نقطه را برمی گرداند.
تا اینجا، نرم افزار دسکتاپ استاندارد در مقایسه با آن افتضاح به نظر نمی رسد. احتمالاً می توانید در اولین بار تقریباً به همان سرعت نتایج خود را دریافت کنید. اما اگر بخواهید لایه دومی را نیز بخواهید که بافر کوچکتری را در اطراف لانههای غیرفعال نشان دهد، چطور؟ با نرم افزار دسکتاپ GIS باید دوباره همان مجموعه مراحل را طی کنید، اما با SQL فقط می توانید تابع بافر و عبارت Where را ویرایش کنید و دوباره آن را اجرا کنید.
SELECT nest_id, status, st_buffer(geometry, 250) FROM bald_eagle_nests WHERE status=’INACTIVE NEST’;
اما اگر یکی از کارکنان میدانی شما گزارش دهد که یکی از لانه های غیرفعال فعال شده است، چه؟ در نرمافزار دسکتاپ، باید همه مراحل را دوباره طی کنید، هر بار فایلهای جدید ایجاد کنید، فایلهای قدیمی را حذف کنید، مطمئن شوید که همه نقشهها دادههای جدید را منعکس میکنند، و غیره. با این حال، با SQL، فقط میتوانید اجرا کنید. بدون نیاز به ایجاد فایلهای جدید بر روی دیسک، مجدداً با بازخوانی نمای نقشه، پرسوجو کنید. در واقع، با یک پایگاه داده سازمانی، پرسنل میدانی شما می توانند وضعیت آشیانه را از یک دستگاه تلفن همراه در میدانی که داده ها را در پایگاه داده در زمان واقعی به روز می کند، تغییر دهند. سپس هنگامی که درخواست خود را مجدداً اجرا کردید، حتی قبل از اینکه پرسنل میدانی شما به دفتر بازگردند، بدون نیاز به انجام کاری و بدون نیاز به ایجاد یک سری فایل های میانی در رایانه شما، آن تغییرات را منعکس می کند.
حالا بیایید یک مثال کمی پیچیده تر را در نظر بگیریم. در نظر بگیرید که مشتری دارید که در حال ساخت خطوط لوله در این منطقه است و آنها باید بالای خطوط لوله در فاصله معینی از لانه های عقاب فعال باشند تا بتوانند از ایجاد مزاحمت برای عقاب ها جلوگیری کنند. اما زمان بهار است و عقاب ها لانه های جدید می سازند و لانه های قدیمی را رها می کنند و مشتری شما مشغول ساخت خطوط لوله جدید و تکمیل لوله های قدیمی است. شما تعدادی کارمند صحرایی دارید که دائماً لانه های عقاب را زیر نظر دارند و سایر کارکنان میدانی که در حال بررسی مسیرهای جدید خط لوله هستند و داده ها دائماً در حال تغییر هستند. این یک محیط بسیار پویا است و مشتری شما به اطلاعات دقیق در زمان واقعی نیاز دارد. در پارادایم قدیمی دسکتاپ GIS، کارکنان میدانی شما باید به دفتر بازگردند و تغییرات خود را وارد کنند.
در پارادایم جدید پایگاه داده فضایی، می توانید یک رابط وب به مشتری خود ارائه دهید که دقیقاً نشان می دهد کدام خطوط لوله نزدیک به لانه عقاب هستند. آنها می توانند رابط وب را باز کنند و اطلاعات مورد نیاز خود را در زمان واقعی داشته باشند، زیرا داده ها توسط کارکنان میدانی شما به روز می شود. در واقع، برای این مورد خاص، نیازی نیست که کسی حتی دوره GIS دسکتاپ را باز کند. پرس و جوی SQL زیر این اطلاعات را ارائه می دهد.
e.nest_id، e.status، p.project، p.type، ST_Distance(e.geometry، p.geometry) به عنوان dist، p.geometry FROM linear_projects به عنوان p LEFT JOIN bald_eagle_nest به عنوان e ON ST_DWithin, p.geomet .geometry، 500) WHERE e.status=’ACTIVE NEST’ AND p.type=’Pipeline’ ORDER BY p.project, dist
این پرس و جو به جدول bald_eagle_nest (با نام مستعار e) به جدول linear_projects (با نام مستعار p) می پیوندد. از آنجایی که ما با دو جدول به هم پیوسته سروکار داریم، باید نام (یا مستعار) جدول را به همه نامهای فیلد اضافه کنیم.
همچنین توجه داشته باشید که ما از تابع ST_Distance برای محاسبه فاصله بین هر دو هندسه استفاده می کنیم و جداول به هم متصل می شوند، نه بر اساس یک میدان مشترک که ندارند، بلکه بر اساس یک رابطه فضایی. در این مورد، رابطه فضایی توسط تابع ST_DWithin تعیین می شود که اگر دو هندسه در فاصله مشخص شده از یکدیگر باشند، مقدار true را برمی گرداند. خروجی این پرس و جو می تواند جدولی باشد که خطوط لوله ای را که در حال حاضر تحت تأثیر لانه عقاب فعال قرار گرفته اند فهرست می کند.
یا خروجی را می توان روی نقشه مشاهده کرد. در این مورد، آنها با رنگ قرمز در QGIS نشان داده شده اند، اما به همین راحتی می توان از راه دور از طریق یک داشبورد وب امن مشاهده کرد.
واضح است که این فقط نوک کوه یخ در مورد آنچه که با پایگاه های داده فعال فضایی امکان پذیر است به میان می آید. امیدوارم این پست حداقل تفکر شما را تحریک کند. اگر میخواهید یاد بگیرید که چگونه میتوانید امروز، کار با پایگاههای داده با قابلیت فضایی رایگان در QGIS با SpatiaLite را شروع کنید، لطفاً به قسمت دوم این پست بروید .
3 نظرات