کار با مناطق
مناطق یک ویژگی جدید و قدرتمند KML است که به شما امکان میدهد مجموعه دادههای بسیار بزرگی را بدون کاهش عملکرد به Google Earth اضافه کنید. داده ها تنها زمانی بارگیری و ترسیم می شوند که در دید کاربر قرار گیرند و بخش خاصی از صفحه را اشغال کنند. با استفاده از Regions، میتوانید سطوح جداگانهای از جزئیات را برای دادهها ارائه کنید، به طوری که جزئیات دقیق تنها زمانی بارگذاری میشوند که دادهها بخشی از صفحه را پر کنند که به اندازه کافی بزرگ باشد تا جزئیات قابل مشاهده باشند.
توجه: در KML، برخی از کلاس ها از یک کلاس "والد" مشتق شده اند. کلاس های مشتق شده "child" همه عناصر کلاس والد خود را به ارث می برند و برخی از عناصر خاص خود را اضافه می کنند. (این یک تکنیک رایج سیستم های شی گرا است.) برای راحتی کار، این بخش به جای لیست کردن تمام کلاس های فرزند مشتق شده، به کلاس والد اشاره می کند. مثلا:
- اصطلاح Feature به هر عنصر KML اشاره دارد که از Feature مشتق شده باشد: Document، Folder، GroundOverlay، NetworkLink، Placemark، و ScreenOverlay.
- هندسه به هر عنصر هندسی در KML اشاره دارد: Point، Polygon، LinearRing، LineString، Model، MultiGeometry.
- Overlay به عناصر مشتق شده از Overlay اشاره دارد: GroundOverlay و Screen Overlay.
برای نموداری که وراثت را در عناصر KML نشان می دهد، به مرجع KML مراجعه کنید.
مفاهیم کلیدی
هر ویژگی می تواند شامل یک منطقه باشد. یک منطقه روی دید هندسه Placemark یا تصویر Overlay تأثیر می گذارد. مناطق هر دو رفتار حذف و سطح جزئیات هندسه یا پوشش تحت تأثیر را تعریف می کنند. مناطق از طریق سلسله مراتب KML به ارث می رسند و بر روی دید ویژگی هایی که در سلسله مراتب پایین تر تعریف شده اند تأثیر می گذارند.
این بخش مفاهیم کلیدی زیر را که برای درک مناطق ضروری هستند شرح می دهد:
یک منطقه دارای یک <LatLonAltBox> است که یک کادر محدود برای داده های شما تعریف می کند. جعبه مرزی حجمی است که مجموعه ای از اشیا یا نقاط داده را در بر می گیرد. مشابه <LatLonBox> در یک GroundOverlay، <LatLonAltBox> در یک منطقه دارای مرزهای شمالی، جنوبی، شرقی و غربی است. اگر دادههای موجود در منطقه سهبعدی است، یا در ارتفاع دو بعدی است، <LatLonAltBox> منطقه نیز باید حداقل ارتفاع، <minAltitude>، و حداکثر ارتفاع، <maxAltitude> را شامل شود.
اشیاء مرتبط با این کادر محدود زمانی ترسیم می شوند که (1) منطقه در نمای ظاهر شود و (2) اندازه نمایش داده شده روی صفحه <LatLonAltBox> در محدوده پیکسل مشخص شده برای آن منطقه قرار گیرد، همانطور که در سطح جزئیات (LOD) توضیح داده شده است. هنگامی که هر دوی این شرایط برآورده می شود، گفته می شود که منطقه "فعال" است.
سطح جزئیات (LOD)
دومین مفهوم مهم مربوط به مناطق، سطح جزئیات یا به اختصار LOD است. از آنجایی که صفحه کامپیوتر فضای محدودی دارد، کارآمدترین کار این است که موارد را طوری تنظیم کنید که مقادیر زیادی داده تنها زمانی بارگذاری شوند که پیکسل های کافی برای نمایش داده ها به اندازه کافی وجود داشته باشد. هنگامی که منطقه بخش نسبتاً کوچکی از صفحه را اشغال می کند (شاید به این دلیل که کاربر از فاصله دور آن را مشاهده می کند، یا یک منطقه صاف است که به صورت مایل مشاهده می شود)، مکانیسم LOD به شما (نویسنده KML) اجازه می دهد تا یک مورد را مشخص کنید. مجموعه داده با وضوح پایین تر به جای داده های با وضوح کامل. این مجموعه داده با وضوح پایین سریعتر بارگیری می شود، و از آنجایی که به هر حال بخش کوچکی از صفحه را اشغال می کند، کاربر نمی تواند تفاوت را تشخیص دهد.
در یک منطقه، عناصر <minLodPixels> و <maxLodPixels> به شما این امکان را می دهند که یک ناحیه از صفحه نمایش را (به پیکسل مربع) مشخص کنید. وقتی دادههای شما روی صفحه نمایش داده میشوند، باید ناحیهای از صفحه را اشغال کنند که بزرگتر از <minLodPixels> و کمتر از <maxLodPixels> باشد تا قابل مشاهده باشند. زمانی که اندازه منطقه پیش بینی شده از این محدوده خارج شود، دیگر قابل مشاهده نیست و منطقه غیرفعال می شود.
در مورد خاصی که میخواهید دادهها به اندازه بینهایت فعال باشند، −1 (پیشفرض) را برای <maxLodPixels> مشخص کنید.
مثال 1: منطقه برای پوشش زمین
ابتدا، بیایید به یک مثال ساده نگاه کنیم که یک منطقه برای پوشش دو بعدی در سطح زمین می سازد. این مثال از یک پوشش زمینی حاوی دادههای تاریخی استفاده میکند که بخشی از Mountain View، کالیفرنیا را در سال 1991 نشان میدهد. وقتی کاربر روی منطقه زوم میکند، پوشش قابل مشاهده میشود. در اینجا به نظر می رسد که همپوشانی برای اولین بار قابل مشاهده است (فایل نمونه همچنین شامل یک LineString سفید برای برجسته کردن همپوشانی بهتر است):
در این مثال، <minLodPixels> 128 است، به این معنی که GroundOverlay زمانی نمایان می شود که 128 پیکسل مربع روی صفحه را اشغال کند. (مثال از مقدار پیشفرض -1 برای <maxLodPixels> استفاده میکند، به این معنی که وقتی کاربر در این زاویه بزرگنمایی میکند، قابل مشاهده خواهد بود.) تصویر مورد استفاده برای این پوشش 256 پیکسل مربع مربع است.
وقتی کاربر روی آن بزرگنمایی میکند، تصویر به شکل زیر است:
و در اینجا تصویر کج شده دقیقاً قبل از اینکه نامرئی شود به نظر می رسد زیرا فضای صفحه نمایش کمتری نسبت به مقدار <minLodPixels> مصرف می کند:
<LatLonAltBox> برای این داده نیازی به شامل عناصر <minAltitude> و <maxAltitude> ندارد زیرا داده ها مسطح هستند و در سطح زمین قرار دارند. همانطور که در فایل KML زیر نشان داده شده است، کادر محدود برای دادهها در منطقه <LatLonAltBox> با مرزهای پوشش زمین <LatLonBox> یکسان است:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Flat Region</name>
<Region>
<LatLonAltBox>
<north>37.430419921875</north>
<south>37.41943359375</south>
<east>-122.080078125</east>
<west>-122.091064453125</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
</Lod>
</Region>
<GroundOverlay>
<name>Mountain View DOQQ</name>
<Icon>
<href>files/image.JPEG</href>
</Icon>
<LatLonBox>
<north>37.430419921875</north>
<south>37.41943359375</south>
<east>-122.080078125</east>
<west>-122.091064453125</west>
</LatLonBox>
</GroundOverlay>
<Document>
</kml>
همچنین، در فایل KML، توجه کنید که منطقه خواهر و برادر تصویر (یا هندسه) است که روی دید آن تأثیر می گذارد.
اکنون که وقت دارید فایل KML را بررسی کنید، روی پیوند زیر کلیک کنید تا پوشش در Google Earth بارگیری شود. سپس با نماهای مختلف آزمایش کنید و بسته به اینکه منطقه به چه مقدار از سطح صفحه نیاز دارد، زمانی که منطقه در معرض دید و خارج از دید قرار می گیرد، تماشا کنید. توجه داشته باشید که اگر نما را به اندازه کافی کج کنید یا اگر کمی کوچکنمایی کنید، روکش ناپدید میشود زیرا فضای صفحه نمایش بسیار کمی را اشغال میکند تا نیاز <minLodPixels> را برآورده کند.
مشاهده نمونه در Google Earth (historicOverlay.kmz)
ارتفاع
مثال 2: منطقه برای یک مدل سه بعدی
مثال زیر نحوه ساخت منطقه ای را نشان می دهد که شامل اشیاء سه بعدی در سطح زمین است. <LatLonAltBox> برای این منطقه دارای <maxAltitude> 300 متر است زیرا این ارتفاع ساختمان است. احتمالاً این ساختمان ها را به عنوان مجموعه سازمان ملل در شهر نیویورک می شناسید.
توجه به این نکته مهم است که مرزهای منطقه <LatLonAltBox> لزوماً دقیقاً با مرزهای طول و عرض جغرافیایی مدل مطابقت ندارند. مختصات مدل نسبت به مبدا محلی خود است، که ممکن است از موقعیت واقعی مدل بر روی زمین جبران شود.
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>3D Region on ground</name>
<Placemark>
<name>United Nations Headquarters</name>
<visibility>0</visibility>
<Region>
<Lod>
<minLodPixels>128</minLodPixels>
</Lod>
<LatLonAltBox>
<north>40.750683130314</north>
<south>40.748162385230</south>
<east>-73.966608428427</east>
<west>-73.969476624071</west>
<minAltitude>0</minAltitude>
<maxAltitude>300</maxAltitude>
<altitudeMode>absolute</altitudeMode>
</LatLonAltBox>
</Region>
<Model>
<altitudeMode>absolute</altitudeMode>
<Location>
<longitude>-73.967763927199</longitude>
<latitude>40.749458312255</latitude>
<altitude>0.406173708576</altitude>
</Location>
<Link>
<href>models/un.dae</href>
</Link>
</Model>
</Placemark>
</Document>
</kml>
برای بارگیری فایل در Google Earth روی لینک زیر کلیک کنید. مجدداً با نماهای مختلف آزمایش کنید تا ببینید چه زمانی ساختمان ها قابل رویت می شوند و چه زمانی از دید حذف می شوند.
مشاهده نمونه در Google Earth (unitedNations.kmz)
مثال 3: منطقه برای پوشش دو بعدی در ارتفاع
این مثال نشان می دهد که چگونه می توانید یک پوشش دو بعدی برای نمایش در بالای سطح زمین در ارتفاع مشخصی اضافه کنید. این تکنیک برای داده هایی که جبهه آب و هوا و الگوهای ترافیک هوایی را نشان می دهد مفید است. در اینجا، مثال یک پوشش کوچک ابر را در ارتفاع 100000 متری از سطح دریا نشان می دهد.
<LatLonAltBox> منطقه مقدار 100000 متر را برای هر دو عنصر <minAltitude> و <maxAltitude> مشخص می کند. (مقدار برای هر دو عنصر یکسان است، زیرا Overlay 2D است و ضخامت ندارد.) <altitudeMode> مطلق است، به این معنی که این مقدار نسبت به سطح دریا است.
توجه داشته باشید که مقدار <altitude> GroundOverlay نیز 100000 است (یعنی با مقدار ارتفاع کادر محدوده منطقه مطابقت دارد)، و <altitudeMode> GroundOverlay با مقدار تعیین شده برای <altitudeMode> منطقه مطابقت دارد.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Flat Region at altitude</name>
<GroundOverlay>
<name>Cloud overlay</name>
<Region>
<LatLonAltBox>
<north>33.75</north>
<south>22.5</south>
<east>-45</east>
<west>-56.25</west>
<minAltitude>100000</minAltitude>
<maxAltitude>100000</maxAltitude>
<altitudeMode>absolute</altitudeMode>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
</Lod>
</Region>
<Icon>
<href>files/image.PNG</href>
</Icon>
<altitude>100000</altitude>
<altitudeMode>absolute</altitudeMode>
<LatLonBox>
<north>33.75</north>
<south>22.5</south>
<east>-45</east>
<west>-56.25</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>
مشاهده نمونه در Google Earth (cloudRegion.kmz)
میزان محو شدن
همچنین میتوانید یک محدوده محو شدن را برای یک منطقه تعیین کنید، که به یک شی اجازه میدهد تا بهخوبی از شفاف به مات و دوباره برگردد. Google Earth از maxFadeExtent برای تعیین سطح شیب دار از کاملاً شفاف تا کاملاً مات در زمانی که منطقه در حداکثر اندازه قابل مشاهده است استفاده می کند و از minFadeExtent برای تعیین سطح شیب دار محو شدن زمانی که منطقه در حداقل اندازه قابل مشاهده است استفاده می کند. محدوده های محو اختیاری هستند، اما از جلوه "پاپ" بین LineStrings یا Polygons با وضوح های مختلف جلوگیری می کنند. محو شدن از نظر کارایی بسیار گران است و نباید با تصویرسازی استفاده شود.
توجه: محدوده محو شدن برای همه اشیا به جز نمادهای مکاننما اعمال میشود. این نمادها زمانی ترسیم می شوند که محدوده محو شدن بیشتر از 0.5 باشد.
مثال زیر نشان می دهد که چگونه وسعت محو شدن روی LineString تأثیر می گذارد.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Region in Placemark LineString</name>
<description>
The LineString corners mark the extent
of the Region LatLonAltBox.
The LineString minFadeExtent (at greatest range)
is 1/4 of the maxFadeExtent (at closest range)..
</description>
<Placemark>
<name>Region LineString</name>
<LineString>
<coordinates>
22,50,0
28,50,0
28,45,0
22,45,0
22,50,0
</coordinates>
</LineString>
<Region>
<LatLonAltBox>
<north>50</north>
<south>45</south>
<east>28</east>
<west>22</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
<minFadeExtent>128</minFadeExtent>
<maxFadeExtent>512</maxFadeExtent>
</Lod>
</Region>
</Placemark>
</Document>
</kml>
مشاهده نمونه در Google Earth (fadeLineString.kml)
مناطق تودرتو
یکی از کاربردهای رایج مناطق، تودرتو کردن آنها است، با مناطق بزرگتر با وضوح درشت تر، و کوچکتر، در داخل مناطق با سطوح به طور فزاینده ای جزئیات مرتبط هستند. در شکل زیر، هر منطقه دارای مجموعه ای از محدودیت های LOD است که اندازه صفحه نمایش پیش بینی شده منطقه را بر حسب پیکسل مشخص می کند که برای فعال بودن منطقه مرتبط لازم است. با نزدیکتر شدن دیدگاه کاربر، مناطق با سطح جزئیات دقیقتر (LOD) فعال میشوند، زیرا منطقه فضای بیشتری از صفحه را اشغال میکند. مناطق با LOD ریزتر جایگزین مناطق بارگذاری شده قبلی با LOD های درشت تر می شوند.
با فعال شدن مناطق تو در تو متوالی می توانند
- جمع آوری داده های مرتبط با هر منطقه (مانند مثال Super-Overlay که در زیر توضیح داده شده است)
- داده های منطقه بارگیری شده قبلی را با داده های جدید جایگزین کنید (همانطور که در شکل قبل نشان داده شده است)
یک <LatLonAltBox> در منطقه فرزند باید به طور کامل در <LatLonAltBox> منطقه والد آن باشد. مناطق از طریق سلسله مراتب Folder و NetworkLink به ارث می رسند. مناطق تعریف شده به صورت محلی بر مناطقی که در سلسله مراتب پوشه بالاتر تعریف شده اند اولویت دارند. مثال زیر نشان می دهد که چگونه محدوده محلی یک منطقه بر منطقه ای که در سلسله مراتب بالاتر تعریف شده است، غلبه می کند. در این مثال، نشان مکان "ukraineRegion" منطقه را از سند اصلی خود به ارث می برد. پوشه "romaniaFolder" منطقه خود را مشخص می کند که توسط Placemark "romaniaRegion" استفاده می شود. برای مثالهای بیشتر از نحوه استفاده از مناطق در NetworkLinks برای حداکثر کارایی، بخش بعدی را در بارگیری هوشمند پیوندهای شبکه مبتنی بر منطقه مشاهده کنید.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Nested Regions</name>
<Region>
<LatLonAltBox>
<north>56.25</north>
<south>45</south>
<east>33.75</east>
<west>22.5</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
</Lod>
</Region>
<Placemark>
<name>ukraineRegion</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
22.5,45,0
33.75,45,0
33.75,56.25,0
22.5,56.25,0
22.5,45,0
</coordinates>
</LineString>
</Placemark>
<Folder>
<name>romaniaFolder</name>
<Region>
<LatLonAltBox>
<north>50.625</north>
<south>45</south>
<east>28.125</east>
<west>22.5</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
</Lod>
</Region>
<Placemark>
<name>romaniaRegion</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
22.5,45,0
28.125,45,0
28.125,50.625,0
22.5,50.625,0
22.5,45,0
</coordinates>
</LineString>
</Placemark>
</Folder>
</Document>
</kml>
بارگیری "هوشمند" پیوندهای شبکه مبتنی بر منطقه
NetworkLink مبتنی بر منطقه که در مثال قبل نشان داده شده است، کارآمدترین راه برای انتشار مجموعه داده بسیار بزرگ در Google Earth است. با استفاده از Regions در ارتباط با NetworkLinks، میتوانید سلسله مراتبی از نشانگرها ایجاد کنید که هر کدام به یک Sub-Region خاص اشاره میکنند. <viewRefreshMode> ، همانطور که در فایل KML زیر نشان داده شده است، دارای یک گزینه onRegion است که مشخص می کند داده های منطقه فقط زمانی که منطقه فعال است بارگیری شود. اگر مناطق تو در تو را با سطوح مختلف جزئیات ارائه کنید، مقدار بیشتری از داده تنها زمانی بارگیری می شود که دیدگاه کاربر بار بعدی را فعال کند. بخش زیر در مورد Super-Overlays یک مثال مفصل ارائه می دهد.
قسمت 1: فایل والد
برای اجرای این مثال، قسمت اول را طبق معمول ذخیره کنید. قسمت دوم را با عنوان romaniaRegion.kml ذخیره کنید تا NetworkLink بتواند منطقه را با فعال شدن بارگیری کند.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>Nested Regions</name>
<Region>
<LatLonAltBox>
<north>56.25</north>
<south>45</south>
<east>33.75</east>
<west>22.5</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
</Lod>
</Region>
<Placemark>
<name>ukraineRegion</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
22.5,45,0
33.75,45,0
33.75,56.25,0
22.5,56.25,0
22.5,45,0
</coordinates>
</LineString>
</Placemark>
<NetworkLink>
<name>romania NetworkLink</name>
<Region>
<LatLonAltBox>
<north>50.625</north>
<south>45</south>
<east>28.125</east>
<west>22.5</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
</Lod>
</Region>
<Link>
<href>romaniaRegion.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
</Document>
</kml>
بخش 2: فایل NetworkLink مبتنی بر منطقه
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>romania Document</name>
<Region>
<LatLonAltBox>
<north>50.625</north>
<south>45</south>
<east>28.125</east>
<west>22.5</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>1024</maxLodPixels>
</Lod>
</Region>
<Placemark>
<name>romaniaRegion</name>
<LineString>
<tessellate>1</tessellate>
<coordinates>
22.5,45,0
28.125,45,0
28.125,50.625,0
22.5,50.625,0
22.5,45,0
</coordinates>
</LineString>
</Placemark>
</Document>
</kml>
سوپر روکش ها
س : چگونه می توانم یک تصویر 47 مگابایتی را با جهان به اشتراک بگذارم؟
A : یک تکه در یک زمان.
س : اگر همه تلاش کنند این کار را انجام دهند چه اتفاقی می افتد؟
پاسخ: اگر از NetworkLinks مبتنی بر منطقه استفاده می کنید و سطوح مختلفی از جزئیات را برای تصاویر خود همانطور که در این آموزش توضیح داده شده ارائه می دهید، مشکلی نیست!
این بخش نحوه ایجاد یک "سوپر همپوشانی" را توضیح می دهد - سلسله مراتبی از مناطق و پیوندهای شبکه که می تواند برای ارائه کارآمد مجموعه بزرگی از تصاویر استفاده شود. کاشیهایی با وضوح مناسب با نمایان شدن بخشهایی از ناحیه تصویر بارگذاری میشوند و کاشیهای با وضوح بالاتر با نزدیک شدن به نقطه دید بارگذاری میشوند. تلاش برای نمایش یک تصویر 7008 در 6720 پیکسل بر روی صفحه نمایش 1024 در 768، هدر دادن تلاش است. علاوه بر این، اگر کاربر مایل ها بالاتر از سطح زمین باشد، همه آن داده ها ممکن است در تعداد انگشت شماری پیکسل جمع شوند و عملکرد ضعیفی داشته باشد. پوششهای فوقالعاده، مانند نمونه ما که یک DOQQ 1991 از Mountain View، کالیفرنیا را نشان میدهد، به شما امکان میدهد از NetworkLinks و توانایی آنها برای تعیین (1) اینکه آیا یک منطقه مشخص در دید است و (2) آیا اندازه پیشبینیشده آن مناسب است یا خیر، استفاده کنید. به دیدگاه فعلی اگر منطقه "فعال" باشد (هر دو شرط برقرار است)، NetworkLink داده های مرتبط با منطقه را بارگیری می کند. اگر منطقه غیرفعال باشد، هیچ داده ای بارگیری نمی شود. اگر تصویر اصلی را به سلسله مراتبی از تصاویر با افزایش سطوح جزئیات تقسیم کنید، Google Earth میتواند تصاویری را که به بهترین وجه با نمای فعلی مطابقت دارد بارگیری کند.
برای مشاهده نحوه استفاده از این سلسله مراتب تصویر، این فایل نمونه را در Google Earth بارگیری کنید و با بزرگنمایی و کوچکنمایی در ناحیه مورد نظر آزمایش کنید: Mountain View Historial DOQQ .
| مثالی از استفاده از پیوندهای شبکه مبتنی بر منطقه برای بارگذاری کارآمد یک مجموعه داده بسیار بزرگ. تصویر اصلی 7008 در 6720 پیکسل است. نمای مایل نشان داده شده در اینجا فقط پنج کاشی کوچک را برای نمایش این تصویر بارگیری می کند. (رشتههای خطوط سفید برای برجسته کردن مرزهای کاشی اضافه شدهاند.) این برنامه ارائه تصاویر تاریخی برای شهر Mountain View را نشان میدهد (یک DOQQ 1991). |
آماده سازی داده های خود برای یک Super-Overlay
در نمونه ابر همپوشانی، تصویر اصلی Mountain View به صدها لایه GroundOverlay کوچک تقسیم میشود. این روکش ها یا کاشی ها در یک سلسله مراتب پنج سطحی مرتب شده اند. به عنوان مثال، بحث در اینجا از یک سلسله مراتب ساده سه سطحی و مجموعه ای از 21 همپوشانی استفاده می کند، اما اصول درگیر یکسان است. توجه داشته باشید که این تنها یک رویکرد برای ایجاد سلسله مراتبی از پیوندهای شبکه مبتنی بر منطقه است و راههای دیگری نیز برای پیادهسازی این مکانیسم وجود دارد.
برای ایجاد یک پوشش فوق العاده، باید
- تصاویر را با تقسیم کردن آن به تکه های قابل مدیریت آماده کنید (256 در 256 پیکسل توصیه می شود) و
- فایلهای KML را ایجاد کنید که مناطق، پیوندها، پیوندهای شبکه، و در این مورد، فایلهای حاوی GroundOverlays را تنظیم میکنند.
تصویرسازی را آماده کنید
یک اندازه استاندارد برای کاشیهای خود انتخاب کنید، که تصاویر تقسیمبندی شده (با وضوحهای متفاوت) هستند که Google Earth با فعال شدن مناطق مرتبط با آنها بارگیری میکند. به عنوان مثال، ما از پیکسلهای 256 در 256 برای کاشیهای خود استفاده میکنیم، که به اندازه کافی کوچک است که قابل مدیریت باشد.
- با تصویر اصلی و با وضوح کامل شروع کنید. آن را به n کاشی تقسیم کنید و سپس هر یک از آن کاشی ها را به n کاشی تقسیم کنید.
به تقسیم بندی ادامه دهید تا زمانی که کاشی هایی با اندازه معین (در مثال ما، 256 در 256 پیکسل) داشته باشید.
بیایید فرض کنیم تصویر اصلی ما 1024 در 1024 پیکسل است.
سلسله مراتب زیر وقتی به دست می آید که آن را تقسیم کنیم.
- هر کاشی در سلسله مراتب را به اندازه استانداردی که انتخاب کرده اید (مثلاً 256 در 256 پیکسل) دوباره نمونه کنید.
این کاشیهای نمونهبرداری مجدد جزئیات کمتری خواهند داشت، اما با مناطقی که بیشتر فعال هستند مرتبط خواهند بود
دیدگاه های دور، بنابراین از دست دادن جزئیات برای کاربر نامحسوس خواهد بود.
نمودار زیر نشان می دهد که چگونه دیدگاه و تعریف مناطق تودرتو تعیین می کند که کدام کاشی ها واقعاً بارگذاری شده اند. سه سطح از جزئیات برای این نمونه تصویر بزرگ ارائه شده است. هنگامی که کاربر از بیشترین فاصله به منطقه نگاه می کند، Google Earth نمای بند انگشتی را نمایش می دهد. این نمای روی کل LatLonAltBox آن کشیده شده است (اما از آنجایی که اندازه پیش بینی شده کوچک است - 256 پیکسل مربع - هیچ از دست دادن واقعی اطلاعات بصری وجود ندارد). وقتی کاربر روی صحنه زوم می کند، منطقه به چهار منطقه تقسیم می شود. هر یک از این چهار "کاشی" به اندازه تصویر بند انگشتی است اما تصاویر دقیق تری را ارائه می دهد.
اگر کاربر به زوم کردن روی منطقه ادامه دهد، بسته به میزان نزدیکی کاربر به آنها، بخش هایی از تصاویر با وضوح کامل مشاهده می شود. نواحی دور، تصاویر با جزئیات کمتری را که ابتدا بارگذاری شده بود، حفظ می کنند. در مثال Mountain View DOQQ ، "Boxes" را فعال کنید و Placemarks A و B را بررسی کنید، که از LineStrings در اطراف مناطق استفاده می کنند و چندین سطح از سلسله مراتب را در یک زمان نشان می دهند.
توجه داشته باشید که نمونه از مقادیر یکسانی برای minLodPixels و maxLodPixels برای همه مناطق (در تمام سطوح سلسله مراتب) استفاده می کند. این LatLonAltBox است که تعیین می کند کدام سطح از سلسله مراتب باید بارگذاری شود، و کدام کاشی(های) در منطقه.
فایل های KML را آماده کنید
برای هر تصویر، یک فایل KML آماده کنید که همپوشانی زمین را با یک منطقه و یک NetworkLink مرتبط می کند. هر فایل KML در این مجموعه دارای عناصر زیر است:
- یک منطقه (با LatLonAltBox، minLodPixels، و maxLodPixels تا Google Earth بتواند تعیین کند که منطقه در هر زمان معین فعال است یا خیر)
- مجموعه ای از پیوندهای شبکه به فایل های فرزند (کاشی های سطح بعدی سلسله مراتب)
- پوشش زمین برای این منطقه
این نمونه فایل KML سطح بالا را برای مثال Mountain View DOQQ نشان می دهد. برای maxLodPixels، -1 را مشخص می کند که به معنای خاص "فعال تا بی نهایت اندازه" است. بدون این مشخصات، کل سلسله مراتب ممکن است هرگز راه اندازی نشود.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLink>
<name>SuperOverlay: MV DOQQ</name>
<Region>
<LatLonAltBox>
<north>37.44140625</north>
<south>37.265625</south>
<east>-121.9921875</east>
<west>-122.16796875</west>
</LatLonAltBox>
<Lod>
<minLodPixels>128</minLodPixels>
<maxLodPixels>-1</maxLodPixels>
</Lod>
</Region>
<Link>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/mv-070501/1.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
</kml>
فایل زیر یک منطقه را در مثال Mountain View DOQQ نشان می دهد ( 179.kml ). این فایل حاوی پنج تگ href است: چهار به چهار فایل KML در سطح بعدی سلسله مراتب تصویر اشاره دارد، و یکی به فایل تصویری که برای GroundOverlay برای این کاشی استفاده شده است اشاره دارد.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.430419921875</north><south>37.41943359375</south>
<east>-122.091064453125</east><west>-122.10205078125</west>
</LatLonAltBox>
</Region>
<NetworkLink>
<name>001120</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.430419921875</north><south>37.4249267578125</south>
<east>-122.0965576171875</east><west>-122.10205078125</west>
</LatLonAltBox>
</Region>
<Link>
<href>180.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<NetworkLink>
<name>001121</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.430419921875</north><south>37.4249267578125</south>
<east>-122.091064453125</east><west>-122.0965576171875</west>
</LatLonAltBox>
</Region>
<Link>
<href>185.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<NetworkLink>
<name>001122</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.4249267578125</north><south>37.41943359375</south>
<east>-122.0965576171875</east><west>-122.10205078125</west>
</LatLonAltBox>
</Region>
<Link>
<href>190.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<NetworkLink>
<name>001123</name>
<Region>
<Lod>
<minLodPixels>128</minLodPixels><maxLodPixels>-1</maxLodPixels>
</Lod>
<LatLonAltBox>
<north>37.4249267578125</north><south>37.41943359375</south>
<east>-122.091064453125</east><west>-122.0965576171875</west>
</LatLonAltBox>
</Region>
<Link>
<href>195.kml</href>
<viewRefreshMode>onRegion</viewRefreshMode>
</Link>
</NetworkLink>
<GroundOverlay>
<drawOrder>5</drawOrder>
<Icon>
<href>179.JPEG</href>
</Icon>
<LatLonBox>
<north>37.430419921875</north><south>37.41943359375</south>
<east>-122.091064453125</east><west>-122.10205078125</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>
نمایش اشیاء سه بعدی
در KML 2.1، میتوانید مدلهای سهبعدی - مانند ساختمانها، پلها، بناهای تاریخی و مجسمهها را در قالب فایل تبادلی COLLADA وارد کنید. مدلها بهطور مستقل از Google Earth در فضای مختصات خود با استفاده از برنامههایی مانند SketchUp ، 3D Studio Max، Softimage XSI یا Maya تعریف میشوند. هنگامی که یک مدل سه بعدی به Google Earth وارد می شود، ترجمه، چرخانده و مقیاس بندی می شود تا در سیستم مختصات زمین قرار گیرد. مدلهایی که قبلاً در Google Earth بارگذاری شدهاند را میتوان با استفاده از عنصر <Update>، یکی دیگر از ویژگیهای جدید KML 2.1، تغییر مکان داد و اندازه آن را تغییر داد.
نمونه مدل
یک مدل در Google Earth مانند هر شی هندسی دیگری (نقطه، رشته خط یا چندضلعی) استفاده می شود. در اینجا یک مثال ساده از یک فایل KML است که یک مدل بافت دار را وارد می کند.
مرجع <Link> به مدل می تواند یک مشخصات فایل مطلق یا نسبی یا یک URL باشد.
برای مشاهده این مدل، فایل MackyBldg.kmz را بارگذاری کنید، که یک بایگانی است که شامل تمام فایلهای بافت و پوشش لازم و همچنین این فایل doc.kml حاوی مدل است:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Placemark>
<name>SketchUp Model of Macky Auditorium</name>
<description>University of Colorado, Boulder; model created by Noël Nemcik.</description>
<LookAt>
<longitude>-105.2727379358738</longitude>
<latitude>40.01000594412381</latitude>
<altitude>0</altitude>
<range>127.2393107680517</range>
<tilt>65.74454495876547</tilt>
<heading>-27.70337734057933</heading>
</LookAt>
<Model id="model_4">
<altitudeMode>relativeToGround</altitudeMode>
<Location>
<longitude>-105.272774533734</longitude>
<latitude>40.009993372683</latitude>
<altitude>0</altitude>
</Location>
<Orientation>
<heading>0</heading>
<tilt>0</tilt>
<roll>0</roll>
</Orientation>
<Scale>
<x>1</x>
<y>1</y>
<z>1</z>
</Scale>
<Link>
<href>files/CU Macky.dae</href>
</Link>
</Model>
</Placemark>
</kml>
مدل از نظر جغرافیایی با مشخصات جغرافیایی، طول جغرافیایی و ارتفاع عنصر مکان قرار می گیرد. این مثال از مقادیر پیشفرض برای عناصر Orientation و Scale استفاده میکند که برای کامل بودن در اینجا گنجانده شدهاند.
عنصر Orientation چرخش های مدل را حول محورهای x ( شیب )، y ( رول ) و z ( عنوان ) مشخص می کند. محور y به سمت شمال و موازی با خطوط طول جغرافیایی است و محور x به سمت شرق و موازی با خطوط عرض جغرافیایی است. چرخش ها بر حسب درجه مشخص می شوند و چرخش های مثبت همانطور که در نمودار زیر نشان داده شده است.
ایجاد یک آرشیو kmz
بایگانی KMZ مجموعه ای از فایل هایی است که برای ایجاد یک ارائه KML استفاده می شود. این بایگانی شامل تمام فایلهای محلی است که در فایل kml . به آنها ارجاع داده شده است، مانند تصاویر، بافتها و مدلها. بایگانی KMZ یک بسته مستقل است که نیازی به میزبانی در سرور شبکه ندارد و به راحتی می توان آن را ایمیل کرد و به عنوان یک واحد ذخیره کرد. Google Earth میتواند فایلهای .kml و .kmz را مستقیماً بخواند.
فایل doc.kml و فایل های محلی که به آن ارجاع می دهد با استفاده از فرمت فایل ZIP در یک آرشیو فشرده می شوند. بسیاری از برنامه ها می توانند این فرمت را تولید کنند. WinZip در سیستمهای ویندوز، Stuffit در سیستمهای مکینتاش، و zip در سیستمهای لینوکس یا مکینتاش، برنامههای محبوبی هستند که میتوانند فرمت ZIP را بخوانند و بنویسند. همچنین میتوانید با استفاده از Windows Explorer یا Mac Finder مستقیماً با آرشیوهای فشرده کار کنید.
پس از ایجاد فایل zip ، پسوند فایل را به . کیلومترز .
بایگانی KMZ حاوی مدل کامل بافت دار برای ساختمان مکی شامل این فایل ها است:
- doc.kml - فایل KML نشان داده شده در بالا، که مدل COLLADA (.dae) را وارد کرده و در Google Earth قرار می دهد. این فایل را در فهرست اصلی فایل KMZ (ZIP) قرار دهید.
- textures.txt - برای نگاشت مجدد مسیرهای بافت در فایل مدل (در اینجا CU Macky.dae) به مسیرهای داخل فایل KMZ استفاده می شود. این فایل را در فهرست اصلی فایل KMZ (ZIP) قرار دهید. هر بافتی که در CU Macky .dae ارجاع داده می شود یک خط در textures.txt به شکل زیر دارد:
<kmz_file_path> <COLLADA_file_path> [<KML_ID_of_model>]
<kmz_file_path> مسیر نسبی در بایگانی KMZ به جایی است که بافت در آن قرار دارد. این مسیر نسبت به CU Macky.dae است که در پوشه فایل/ در آرشیو KMZ قرار دارد. از آنجایی که بافت ها در پوشه files/ ذخیره می شوند، <kmz_file_path> باید با ../files/ شروع شود.
<COLLADA_file_path> نام فایل بافت دقیقاً همانطوری است که در CU Macky .dae نشان داده شده است.
[KML_ID] شناسه KML مدلی است که از این بافت استفاده میکند. بافت ها را می توان توسط چندین مدل استفاده کرد. این پارامتر اختیاری است.
در اینجا گزیده ای از فایل textures.txt مثال آمده است:
<../files/CU-Macky---Center-StairsnoCulling.jpg> <CU-Macky---Center-StairsnoCulling.jpg> <model_4>
<../files/CU-Macky-4sideturretnoCulling.jpg> <CU-Macky-4sideturretnoCulling.jpg> <model_4>
<../files/CU-Macky-Back-NorthnoCulling.jpg> <CU-Macky-Back-NorthnoCulling.jpg> <model_4>
- files/ directory - حاوی فایلهای COLLADA است که هندسه، بافتها و متریال مدل را تعریف میکنند. در مثال ساختمان مکی، این دایرکتوری حاوی فایل COLLADA (CU Macky.dae) و همچنین فایلهای متعددی است که حاوی تصاویر JPEG مورد استفاده برای تکسچر ساختمان ( CU-Macky-BrickwallnoCulling.jpg، CU-Macky--Center-StairsnoCulling) است. .jpg، CU_Macky-EastdetaildoornoCulling.jpg ، و غیره).
این مثال یک راه برای ساختار فایل ها در یک بایگانی KMZ را نشان می دهد. در واقع، میتوانید فایلها را در هر ساختاری که به نظر شما منطقی به نظر میرسد مرتب کنید، درست همانطور که فایلها را در پوشهها یا فهرستهای موجود در رایانه خود سازماندهی میکنید. به عنوان مثال، قرار دادن تمام تصاویر در یک فهرست تصاویر/ دایرکتوری ممکن است مفید باشد. ارجاعات نسبی (مانند فایل های ارجاع شده در عنصر <href> که در NetworkLink، Link، Overlay/Icon و Model استفاده می شود) نسبت به فایل doc.kml مشخص شده اند. اگر یک دایرکتوری Images اضافه کنید، مشخصات <href> برای تصاویر شما خواهد بود: images/myBrickTexture.jpg ، images/myMountainOverlay.png ، و غیره).
به روز رسانی داده های بارگذاری شده از طریق پیوندهای شبکه
برای تغییر تدریجی داده های بارگذاری شده روی NetworkLink، از عنصر Update استفاده کنید که فرزند NetworkLinkControl است. بهروزرسانی میتواند حاوی هر تعداد عنصر تغییر، ایجاد و حذف باشد که به ترتیب پردازش میشوند.
شکل زیر توالی وقایع را نشان می دهد.
- یک NetworkLink فایل KML "اصلی" را در Google Earth بارگیری می کند. عنصری که بعداً بهروزرسانی میشود، باید زمانی که برای اولین بار مشخص شد، یک شناسه صریح تعریف شده باشد. شناسه ها باید در یک فایل مشخص منحصر به فرد باشند.
- NetworkLink دیگری یک فایل KML دوم را بارگیری میکند که حاوی بهروزرسانیها (هر ترکیبی از تغییر، ایجاد، و حذف) شی (های) KML است که قبلاً بارگذاری شدهاند. فایل بهروزرسانی شامل دو مرجع برای شناسایی دادههای اصلی KML است:
- برای تعیین مکان اشیاء در Google Earth، عنصر Update از عنصر targetHref برای شناسایی فایل اصلی استفاده میکند که شیء(های) مورد اصلاح را تعریف کرده است. برای شناسایی شی(های) مورد اصلاح یا محفظه اشیاء جدید، عناصر Change، Create و Delete حاوی ویژگی targetId هستند که به شناسه آن اشیاء ارجاع می دهد.
تغییر مثال
مثال زیر مجموعه ای از فایل های داده های NetworkLinks و KML نمونه را نشان می دهد. برای اجرای نمونه:
- فایل Point-load.kml را در Google Earth بارگیری کنید. این فایل حاوی NetworkLink است که فایل داده اصلی را بارگیری می کند که حاوی دو نقطه ( Point.kml ) است.
- فایل Update-load.kml را در Google Earth بارگیری کنید. این فایل حاوی NetworkLink دوم است که فایل حاوی اطلاعات Update (نام جدیدی برای point123 ) را بارگیری می کند.
فایل اول حاوی NetworkLink است که فایل داده را بارگذاری می کند که شامل دو نقطه است. مکانهایی که حاوی این نقاط هستند دارای شناسههایی هستند که به آنها اختصاص داده شده است. فایل سوم حاوی NetworkLink دیگری است که فایل Update را اضافه می کند. عنصر Change نام Placemark را برای point123 تغییر میدهد .
در اینجا چهار فایل استفاده شده در این مثال آورده شده است. ابتدا، این فایل Point-load.kml است که حاوی NetworkLink است که فایل داده اصلی را بارگیری می کند ( Point.kml ).
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLink>
<name>Loads Point.kml</name>
<Link>
<href>http://developers.google.com/kml/documentation/Point.kml</href>
</Link>
</NetworkLink>
</kml>
در اینجا فایل Point.kml است که حاوی داده های اصلی (دو نقطه) است. نقطه با شناسه "point123" نقطه ای است که ما آن را اصلاح خواهیم کرد.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<Placemark id="pm123">
<name>point123</name>
<Point>
<coordinates>-95.44,40.42,0</coordinates>
</Point>
</Placemark>
<Placemark id="pm456">
<name>point456</name>
<Point>
<coordinates>-95.43,40.42,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
بعد دومین فایل NetworkLink ( Update-load.kml ) است. این فایل فایلی را که حاوی اطلاعات Update است بارگیری می کند.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLink>
<name>Update</name>
<Link>
<href>http://developers.google.com/kml/documentation/NetworkLinkControl-Update.kml</href></Link>
</NetworkLink>
</kml>
و در نهایت، اینجا فایل KML (NetworkLinkControl-Update.kml ) است که حاوی اطلاعات Update است:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<NetworkLinkControl>
<Update>
<targetHref>http://developers.google.com/kml/documentation/Point.kml</targetHref>
<Change>
<Placemark targetId="pm123">
<name>Name changed by Update Change</name>
<!-- coordinates remain the same -->
</Placemark>
</Change>
</Update>
</NetworkLinkControl>
</kml>
انقضاء
بهطور پیشفرض، دادهها فقط یک بار توسط Links در Google Earth بارگیری میشوند. برای جلوگیری از کهنه شدن دادههای KML، میتوانید برای هر دادهای که توسط عنصر <href> بارگیری میشود (در یک عنصر پیوند یا نماد) یک refreshMode از oneExpire تعیین کنید. به طور پیش فرض، هدر انقضای HTTP زمان انقضا را مشخص می کند. همچنین اکنون می توانید زمان انقضا را در KML NetworkLinkControl مشخص کنید. زمان بهعنوان یک dateTime XML بیان میشود (به طرح XML بخش 2: انواع دادهها نسخه دوم مراجعه کنید). اگر هر دو هدر HTTP و زمان انقضای KML مشخص شده باشند، زمان انقضای KML اولویت دارد.
مثال 1: انقضا با استفاده از زمان انقضای سرور HTTP
این مثال فقط برای توضیح است. یک GroundOverlay با نمادی را نشان می دهد که حالت رفرش را روی oneExpire تنظیم می کند. از آنجایی که هیچ زمان انقضای KML تنظیم نشده است، این مثال از زمان انقضای سرور HTTP استفاده می کند.
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>refreshMode onExpire</name>
<Snippet maxLines="10">
Image automatically reloads according to http
server expiration.
</Snippet>
<GroundOverlay>
<Icon>
<href>http://www.someserver.com/image.jpeg</href>
<refreshMode>onExpire</refreshMode>
</Icon>
<LatLonBox>
<!-- from edit session in earth -->
<!-- The roof of a building in the Presidio -->
<north>37.80385180177469</north>
<east>-122.4558710620651</east>
<south>37.80337403503347</south>
<west>-122.4564295653771</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>
مثال زیر یک علامت مکان را در مختصات انتخابی تصادفی ارائه می دهد. این مثال شامل پیوندی با حالت refreshmode onExpire است . در این مورد، تاریخ/زمان انقضا (در یک اسکریپت پایتون) با استفاده از عنصر جدید KML <expires> مشخص می شود. این زمان انقضای KML بر هر زمانی که ممکن است در هدرهای HTTP مشخص شده باشد اولویت دارد.