بهینه سازی نمایش داده های برداری
یکی از حالتهای بهینه سازی، بهینه سازی نمایش داده های برداری با مقیاس کوچک است، (حالتی که قرار است در آن تمام داده های برداری فراخوانی شده و در مقیاس کوچک نمایش داده شوند).
در سیستمهای مدیریت پایگاه داده مکانی، تابع ویژه ای برای تسریع در این حالت معرفی نگردیده است. همانطور که در مقاله قبل با عنوان ” بهینه سازی ذخیره و بازیابی داده های رستری” اشاره گردید، در چنین حالتی، شاخص گذاری مکانی کاملاً بی اثر می ماند. شکل زیر مدت زمان مورد نیاز جهت نمایش یک نمونه از داده های مکانی برداری را که شامل یازده لایه با حجم 980 مگابایت بوده است نشان میدهد. همانگونه که ملاحظه میگردد در مقیاس 1:11,000,000 که همه عوارض در محدوده نمایش قرار میگیرند و شاخص گذاری مکانی بی تاثیر میشود، مدت زمان 80 ثانیه زمان لازم بوده است تا داده مذکور به نمایش درآید. همین نقشه در مقیاس 1:100,000 که تنها بعضی از عوارض نقشه در محدوده نمایش قرار میگیرند و شاخص گذاری مکانی کاملاً موثر میباشد، در مدت یک ثانیه آماده میشود.
در روش پیشنهادی این مقاله، با استفاده از ساده سازی عوارض موجود در نقشه، سطوح مختلفی از نقشه های سبک و سبکتر تولید شده، ذخیره میگردندو مشابه با روش هرم تصویری، در بزرگنمایی های مختلف از آنها استفاده میشود. . شکل زیر نمونه ای از این ساده سازی را نمایش میدهد که در آن تعدادی از رئوس مناسب یک رشته خطی در چهار سطح مختلف حذف گردیده و مجموعه ساده تر، با حجم کمتر را بوجود آورده اند.
داده های هریک از این سطوح، برای نمایش در محدوده ای از مقیاس، مناسب خواهند بود. با وجود آنکه روشهای بسیار متعددی برای ساده سازی نقشه ها وجود دارند، که لازم است در هر مورد روش مناسب همان مورد را انتخاب نمود، ولی بعضی از روشها رایجتر از بقیه شده اند.
يکي از بهترين راههاي انجام ساده سازي، الگوريتم داگلاس پوکر است. در اين الگوريتم، از يک محدوده تقریب عرضي، که به نسبت مقياس نقشه يا داده نهايي و تعداد نقاط آن تعيين ميشود، به ساده سازي اقدام ميشود.
تابع SDO_UTIL.SIMPLIFY در اوراکل نیز با این روش عمل میکند. در ArcGIS نیز اغلب از توابع Simplify Line, Simplify Polygon برای این منظور استفاده میشود.
در مرحله اول با در نظر گرفتن مقدار Offset اقدام به حذف vertexها میشود. هر لایه اطلاعاتی تا حدی میتواند عمل حذف را بپذیرد و بعد از آن، تغییردادن مقدار Offset اثری در نتیجه نهایی نمیگذارد. در نهایت، اکثر رشته های خطی تنها دارای دو راس ابتدا و انتها شده اند، و ادامه حذف رئوس باعث حذف خود رشته خواهد شد.
در مرحله دوم با ادغام رشته هایی که رئوس ابتدایی آنها با رئوس انتهایی دیگری نزدیکتر از مقدار حداقل تعریف شده باشد، رشته ی خطی جدیدی بوجود می آید که امکان حذف مجدد رئوس در آن فراهم میگردد. برای این عمل، از تابع Dissolve استفاده میگردد. در شکل زیر تصویری از هر دو مرحله را خواهید دید. تصویر بالاتر حالتی را نشان میدهد که حذف vertex انجام شده و در تصویر پایین تر خطوطی که حذف vertex شده بودند با یکدیگر Dissolve شده اند.
با توجه به حجم داده های نمونه، عموماً تعداد چهار یا پنج سطح ساده سازی برای اطلاعات لایه ها، کافی و مناسب میباشد. برای ساده سازی بعضی از لایه های خطی بسیار سنگین (مثل آبریز و منحنی میزان)، میتوان با برنامه نویسی یک نوع ساده سازی با الگوریتم داگلاس پوکر را نیز انجام داد. این برنامه میتواند عملیات ساده سازی و Dissolve را همزمان انجام دهد و بدون آنکه ظاهر تصویر تغییر کند، رئوس اضافی به درستی حذف شده و حجم لایه ها نیز کاهش پیدا کند. جدول زیردو نمونه از لایه ها را همراه با سه سطح ساده سازی و محدوده نمایشی هریک نشان میدهد.
شکل زیر مقایسه ای بین زمان پاسخگویی به ارائه نقشه نمونه در بزرگنمایی های مختلف، در دوحالت هرم نقشه ای و بدون هرم نقشه ای را نشان میدهد. همانطور که ملاحظه میگردد در حالتی که داده ها با معماری هرم نقشه ای آرایش پیدا کردند تقریباً در تمام بزرگنمایی ها مدت زمان پاسخگویی یکنواخت بوده و در حدود 4 ثانیه می باشد. ولی در حالت بدون ساختار هرم نقشه ای، بخصوص در مقیاس کوچک، مدت زمان پاسخگویی طولانی تر شده و به بیش از 80ثانیه میرسد.
هنگامیکه برای هر لایه، تعداد 4 لایه جنبی دیگر به عنوان ساده سازی شده آن لایه برای نمایش در محدوده های بزرگنمایی مختلف تعریف میشوند، از دید کاربر کمی پیچیدگی بوجود می آید. مثلا کاربر یک لایه را خاموش میکند ولی متوجه میشود در بزرگنمایی های بخصوصی باز روشن میماند و لازم است لایه ساده سازی شده مربوط به آن محدوده را نیز خاموش کند. همین مشکل هنگام روشن کردن لایه ها نیز مشاهده میگردد. برای این منظور در نرم افزارهای کاربردی مانند ژئوسرور امکاناتی با عنوان Group Layers پیش بینی شده است. با این امکان میتوان لایه اصلی و تمام لایه های ساده سازی شده مربوطه آنرا همراه با تعاریف محدوده نمایش داده و نحوه نمایش آنها در یک گروه لایه را تعریف نمود. این مجموعه از دید کاربر مشابه با یک لایه منفرد معمولی میگردد که به راحتی قابل بهره برداری است.
از جناب آقای دکتر علی مدد برای تدوین این مقاله و در اختیار قرار دادن آن کمال تشکر را داریم. برای ایشان آرزوی سربلندی و طول عمر داریم و امیدواریم مانند قبل فعال و پویا باشند.