لایهی سرویس نقشه dynamic-موسسه چشم انداز-آموزش کاربردی GIS و RS
یک تصویر از نقشه ایجاد میکند و به اپلیکیشن یک تصویر برمیگرداند. این نوع از سرویس نقشه ممکن است از یک یا چند لایهی اطلاعاتی درست شده باشد. به عنوان مثال سرویس نقشهی demographics نشان داده شده در تصویر زیر از 9 لایه ی متفاوت درست شده است که اطلاعات جمعیتی را در سطوح مختلف جغرافیایی نمایش میدهد.
لایههای سرویس نقشه dynamic از لایههای سرویس نقشه Tiled متنوع تر هستند. در سرویس نقشه dynamic قابلیت دیدن لایههای موجود در سرویس را کنترل میکنید، اینکه کدام لایه نمایش داده شود و بالعکس. میتوانید اطلاعات موقتی برای هر لایه تعیین کنید و یا اینکه ویژگیهایی را برای نمایش معانی یک لایه تعیین کنید. به عنوان مثال در سرویس نقشهی demographics که در تصویر بالا میبینید، میتوانید لایهی Census Block Group را برای نمایش در اپلیکیشن انتخاب کنید و دیگر لایهها را نمایش ندهید. این امکان را سرویس نقشهی Tiled ندارد.
لایههای سرویس نقشه Tiled
این نوع لایهها به کاشیهای یک تصویر که از قبل ایجاد شدهاند، ارجاع دارد. برای فهم این سرویس، شبکهای از سطر و ستونها را در نظر بگیرید که روی سطح نقشه قرار گرفته است. از سطر و ستون های حاصل از شبکه، سلول هایی با اندازهی یکسان قرار دارند. هر سلول مقداری از نقشه را در بر دارد. مقدار نقشهای که در هر سلول قرار میگیرد، یک tile (کاشی) نام دارد. هر کدام از این tile ها به عنوان یک فایل تصویر روی سرور ذخیره میشوند و در صورت نیاز بازیابی میشوند. تعداد کاشیها یا همان tileها وابسته به مقیاس نقشه و محدوده قابل نمایش نقشه(extent) است. نتیجهی نهایی مجموعهای از tile ها است. زمانی که نقشه در اپلیکیشن نمایش داده میشود بصورت یکپارچه ظاهر میشود در حالی که از تعداد زیادی tile تشکیل شده است.
لایهی نقشه کاشی شده اغلب به عنوان نقشهی مبنا استفاده میشود که شامل نقشههای imagery، street و topographic است. هم چنین برای لایههای دادهای که اغلب تغییری نمیکنند، از این نوع لایه استفاده میشود. سپس لایههای عملیاتی روی نقشه مبنای tiled پوشش داده میشوند. لایههای عملیاتی، غالباً لایههای dynamic هستند.
استفاده از کلاسهای لایه
با استفاده از کلاس layer میتوانید به لایههای سرویس نقشه ارجاع دهید. کلاس Layer، سازنده ندارد. این کلاس ویژگیها، متدها و رویدادهایی را تعریف میکند که از کلاس layer ارث بری میکنند. لایهی سرویس نقشه dynamic، لایهی سرویس نقشه dynamic و لایهی Graphics از کلاس layer ارث بری میکنند. لایهی سرویس نقشه dynamic و لایهی سرویس نقشه Tiled مانند کلاس پایه عمل میکنند. کلاس پایه بدین معنی است که نمیتوانیم به طور خاص یک شی از این کلاسها در اپلیکیشن ایجاد کنیم. بخش سوم را به لایهی گرافیک و گرافیکها اختصاص داده ایم.
همانطور که قبلاً گفتیم لایههای سرویس نقشهای Tiled به تصاویر کاشی شده اشاره میکنند که این تصاویر (کاشیها) با هم تشکیل یک تصویر را میدهند که اغلب برای نمایش نقشه های مبنا از این نوع سرویس استفاده می کنیم.
ArcGIS Server برای ارجاع به سرویس نقشهای Tiled از کلاس ArcGISTiledMapServiceLayer استفاده میکند. از آنجا که این نوع کلاس بر روی مجموعهای از نقشههای کاشی شده کار میکند، کارآئی را بهبود میدهد. سازنده مربوط به کلاس ArcGISTiledMapServiceLayer، اشاره گر به سرویس نقشه را گرفته و به شما امکان تخصیص یک ID به سرویس نقشه را میدهد و قابلیت نمایش و شفافیت را کنترل میکند. در قطعه کد زیر به سازنده کلاس ArcGISTiledMapServiceLayer دقت کنید. این سازنده پارامتری دارد که به سرویس نقشه ارجاع میکند. متد addLayer() متغیری را میپذیرد که این متغیر به لایهی سرویس نقشهای Tiled ارجاع دارد.
var basemap = new ArcGISTiledMapServiceLayer(“https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer”);
map.addLayer(basemap);
ArcGISTiledMapServiceLayer برای نمایش سریع نقشهی کاشی شده استفاده میشود. هم چنین میتوانید سطحی نمایش دادهها را کنترل کنید و مثلاً برای مواقعی است که میخواهید یک لایهی سرویس نقشهای Tiled را نمایش دهید و کاربر اپلیکیشن وقتی بزرگ نمایی سطح 0 تا 6 را انجام دهد شهرهای بین ایالتی و بزرگراهها را ببیند و اگربزرگ نمائی بیشتر از سطح 6 انجام دهد آنگاه ArcGISTiledMapService توضیحات و اطلاعات بیشتر و جزئیتری را نمایش دهد. هم چنین میتوانید میزان وضوح و شفافیت هر لایهای که به نقشه اضافه میشود را کنترل کنید.
ArcGIS Server برای ارجاع به لایههای سرویس نقشه Dynamic از کلاس ArcGISDynamicMapServiceLayer استفاده میکند.
این کلاس یک اشاره گر به سرویس نقشه را میگیرد و امکان تخصیص یک ID به سرویس نقشه را میدهد. وضوح نقشه و گزینهای که مربوط به نمایش یا عدم نمایش لایه با مقادیر true یا false صورت میپذیرد را نیز میتوانید تعیین کنید. این سرویس لایهی داده واحد را نمایش میدهد. این لایههای واحد با پذیرفتن مقدار true یا false میتوانند در سرویس نقشه نمایش داده شوند یا نشوند. با متد setVisibleLayers() لایههای مورد نظر جهت نمایش را تعیین کنید.
ایجاد یک نمونه از کلاس ArcGISDynamicMapServiceLayer بسیار شبیه ArcGISTiledMapServiceLayer است. قطعه کد زیر را ببینید:
var operationalLayer = new ArcGISDynamicMapServiceLayer(“https://
sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_
Population_World/MapServer”,{“opacity”:0.5});
map.addLayer(operationalLayer);
خطوط کد سیاه پررنگ موجود در قطعه کد زیر را در Sandbox اضافه کنید.
<script>
var map;
require([“esri/map”, “esri/layers/ArcGISDynamicMapServiceLayer”,
“dojo/domReady!”], function(Map, ArcGISDynamicMapServiceLayer) {
map = new Map(“mapDiv”, {
basemap: “topo”,
center: [-122.45,37.75], // long, lat
zoom: 5,
sliderStyle: “small”
});
var operationalLayer = new ArcGISDynamicMapServiceLayer(“https://
sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_
Population_World/MapServer”,{“opacity”:0.5});
map.addLayer(operationalLayer);
});
</script>
بعد از اجرای کد تصویر زیر را میبینید.
با ایجاد یک نمونه از کلاس ArcGISDynamicMapServiceLayer میتوانید نقشههایی ایجاد کنید که دادهها را نمایش دهند و نیز امکان جستجوی دادههای موجود در لایهها، خروجی گرفتن از نقشهها در قالب یک تصویر و کنترل وضوح پس زمینه را دارید.
اضافه کردن لایهها به نقشه
متد addLayer() یک نمونه از کلاس ArcGISDynamicMapServiceLayer یا ArcGISTiledMapServiceLayer را میگیرد. در کد زیر یک نمونه از کلاس ArcGISDynamicMapServiceLayer ایجاد کردیم که به URL سرویس اشاره میکند. سپس یک نمونهی جدید از لایه را به متد Map.addLayer() فرستادیم. لایههایی که روی نقشه نمایش داده میشوند با این متد تعیین میشوند.
var operationalLayer = new ArcGISDynamicMapServiceLayer(“https://
sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_
Population_World/MapServer”);
map.addLayer(operationalLayer);
برگرفته از کتاب تولید و طراحی اپلیکیشن های Web GIS و Mobile GIS با استفاده از ArcGIS API for JavaScript
نویسنده: دکتر محمد بافقی زاده
نشر: انتشارات اکادمیک