فایل KMZ چیست؟
یک فایل KMZ شامل یک فایل KML اصلی و صفر یا چند فایل پشتیبانی است که با استفاده از یک ابزار Zip در یک واحد بسته بندی شده اند که بایگانی نامیده می شود. سپس فایل KMZ را می توان به عنوان یک موجودیت واحد ذخیره و ایمیل کرد. یک NetworkLink می تواند یک فایل KMZ را از یک وب سرور واکشی کند. هنگامی که فایل KMZ از حالت فشرده خارج میشود، فایل kml . اصلی و فایلهای پشتیبان آن به فرمتهای اصلی و ساختار دایرکتوری، با نام فایلها و پسوندهای اصلی خود جدا میشوند. فرمت Zip علاوه بر اینکه یک فرمت بایگانی است، فشرده نیز می شود، بنابراین یک آرشیو می تواند تنها شامل یک فایل KML بزرگ باشد. بسته به محتوای فایل KML، این فرآیند معمولاً به فشرده سازی 10:1 منجر می شود. فایل KML 10 کیلوبایتی شما را می توان با یک فایل KMZ 1 کیلوبایتی ارائه کرد.
Google Earth و Google Maps می توانند فایل های KML و KMZ را مستقیماً بخوانند و می توانند فایل ها را به عنوان فایل های KMZ ذخیره کنند. به طور پیش فرض، فایل اصلی KML doc.kml نام دارد.
توجه: برای وضوح، این صفحه به فایل اصلی KML در بایگانی KMZ به عنوان doc.kml اشاره میکند . این فایل اصلی KML میتواند هر نامی داشته باشد، تا زمانی که به .kml ختم میشود، و تا زمانی که فقط یک فایل kml . وجود دارد.
اگر فایل doc.kml شما بزرگتر از 10 کیلوبایت است، یا اگر فایلهای doc.kml به فایلهای دیگر (تصاویر، فایلهای صوتی، مدلها، بافتها) ارجاع دارند، باید یک فایل KMZ ایجاد کنید.
ساختار دایرکتوری توصیه شده
این بخش چند توصیه ساده برای سازندگان فایل های KML/KMZ ارائه می دهد. مثال مورد استفاده در این بخش از وب سایت جیمی بافت است که از قالب KML برای نمایش تورهای کنسرت برنامه ریزی شده و نکات برجسته مرتبط در Google Earth استفاده می کند.
فایل KMZ حاوی این تور را دانلود کنید . (با اجازه استفاده می شود.)
توجه: Google Earth 6.0 هنگام حل و فصل ارجاعات نسبی در یک فایل KMZ به شدت مجموعه دستورالعمل های زیر را اجرا می کند (به خصوص مورد 4 را در لیست زیر ببینید). نسخه های قبلی Google Earth در نحوه حل و فصل چنین ارجاعات نسبی سخت گیری کمتری داشتند. در نتیجه، برخی از مراجع نسبی که در Google Earth 5.2 و نسخههای قبلی کار میکردند، ممکن است اکنون نیاز به ویرایش داشته باشند تا با نسخههای 6.0 و بالاتر کار کنند.
هنگام ایجاد فایل های KMZ این دستورالعمل ها را دنبال کنید:
- پوشه ای ایجاد کنید که حاوی محتویات فایل KMZ شما باشد. یک نام توصیفی به آن بدهید (مثلاً buffetthawaiitour ).
- فایل پیشفرض KML ( doc.kml یا هر نامی که میخواهید به آن بدهید) را در سطح بالای این پوشه قرار دهید. فقط یک فایل .kml را شامل شود. (وقتی Google Earth یک فایل KMZ را باز میکند، فایل را اسکن میکند و به دنبال اولین فایل .kml در این لیست میگردد. تمام فایلهای kml . بعدی را، در صورت وجود، در بایگانی نادیده میگیرد. اگر بایگانی حاوی چندین فایل .kml باشد، شما نمی توان مطمئن بود که کدام یک ابتدا پیدا می شود، بنابراین باید فقط یکی را وارد کنید.)
- یک یا چند زیرپوشه را در پوشه اصلی قرار دهید تا تصاویر، مدلها، بافتها، فایلهای صوتی یا سایر منابع ارجاعشده در فایل doc.kml را جمعآوری کنید. پیچیدگی این ساختار دایرکتوری به تعداد فایل های پشتیبانی کننده و ترجیحات شما برای سازمان بستگی دارد.
- از مراجع نسبی استفاده کنید. برای جزئیات بیشتر به مراجع به فایل های خارجی مراجعه کنید. همه مسیرهای نسبی در داخل پوشه پایه توضیح داده شده در بالا در مورد 1 شروع می شوند. به عنوان مثال، اگر یک فایل KMZ vacationJournal.kmz روی دسکتاپ باشد و فایل doc.kml آن به فایل myFavoritePlace.jpg اشاره دارد که در دسکتاپ نیز وجود دارد، <href> در فایل
../myFavoritePlace.jpg
است. - از پسوند .kmz برای هیچ یک از زیرپوشه های موجود در فایل KMZ استفاده نکنید. پسوند .kmz برای نام خود آرشیو رزرو شده است.
- عنصر <a href> یک <description> (و همچنین <img src> در <description>)
- <Icon> (به عنوان فرزند <IconStyle> , <GroundOverlay> , <ScreenOverlay> , <PhotoOverlay> )
- <ItemIcon>
- <پیوند>
- <gx:SoundCue>
- <targetHref> و <sourceHref> در <Alias>
به عنوان مثال، در اینجا ساختار فایل فایل KMZ برای تور جیمی بافت آمده است:
از آنجایی که تنها پنج فایل پشتیبانی وجود دارد، همه آنها در یک زیرپوشه فایل در پوشه اصلی جمع آوری می شوند. اگر فایل را در Google Earth بارگیری کنید و سپس آن را در یک مرورگر متنی کپی و جایگذاری کنید، خواهید دید که همه عناصر <href> از ارجاعات نسبی به این فایل های پشتیبانی استفاده می کنند (که نشان دهنده نمادها، پوشش صفحه و صدا هستند. فایل برای تور).
در اینجا کد KML برای یکی از مراجع نماد آمده است:
<IconStyle> <scale>1.1</scale> <Icon> <href>files/icon_surfing.png</href> </Icon> </IconStyle>
در اینجا کد KML برای ارجاع به فایل صوتی آمده است:
<gx:SoundCue> <href>files/Margaritaville.mp3</href> </gx:SoundCue>
ارجاع به فایل های خارجی
فایل doc.kml معمولاً حاوی تعدادی پیوند به فایلهای دیگر است - تصاویر، نمادها، مدلها، بافتها و فایلهای صوتی. ارجاعات به این فایل ها در ویژگی href (یا گاهی اوقات، عنصر <href>) موجود است که در عناصر KML زیر یافت می شود:
این پیوندهای خارجی می توانند مرجع مطلق یا نسبی باشند، همانطور که در بخش زیر توضیح داده شده است. آنها میتوانند به فایلهای داخل یک فایل KMZ یا فایلهای موجود در سایر فایلهای KMZ یا ذخیرهشده در جای دیگری در وب مراجعه کنند. به استثنای عنصر <sourceHref> در <Model>، مراجع نسبی همیشه در رابطه با فایل doc.kml حل میشوند ، همانطور که در بخش Resolving Relative References توضیح داده شد.
مراجع مطلق در مقابل نسبی
مراجع مطلق حاوی URL کامل فایل پیوند شده است. آنها برای فایل های ارسال شده در سرور مرکزی مفید هستند و بدون ابهام هستند. با این حال، اگر از ارجاع مطلق به فایلهای محلی استفاده کنید، هنگامی که فایلها به یک سیستم جدید منتقل میشوند، پیوندها خراب میشوند. مراجع نسبی از این مشکل جلوگیری می کنند.
در اینجا مثالی از ارجاع مطلق به یک فایل ذخیره شده در سرور مرکزی آورده شده است:
<Icon> <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href> </Icon>
حل و فصل مراجع نسبی
به طور کلی، مراجع نسبی در رابطه با فایل doc.kml حل می شوند. هر URL نسبی با دایرکتوری حاوی این فایل، که ریشه فایل KMZ در نظر گرفته می شود، حل می شود. در مثال تور هاوایی، URL پایه مشابه زیر است (بسته به جایی که فایل KMZ را دانلود می کنید):
buffetthawaiitour.kmz
اگر میخواهید به فایلی که در یک فایل KMZ دیگر قرار دارد مراجعه کنید (به عنوان مثال، به images/jimmyphoto.jpg موجود در margaritavillealbum.kmz ، از نماد ".." برای بالا رفتن یک سطح در ساختار دایرکتوری استفاده میکنید. شما را از فایل KMZ فعلی ( buffetthawaiitour.kmz ) خارج می کند:
<href>../margaritavillealbum.kmz/images/jimmyphoto.jpg"</href>
توجه: قوانین حل و فصل ارجاعات نسبی در بایگانی KMZ بر اساس استاندارد RFC 3986 بخش 5 برای حل و فصل URL های وب است. URL پایه با محل فایل doc.kml تعیین می شود و همه URL های نسبی در رابطه با آن URL پایه حل می شوند.
استثنا: <sourceHref> در <Model>
عنصر <Model> حاوی یک عنصر <Link> است که یک فایل COLLADA را برای بارگیری در Google Earth مشخص می کند. فایل های COLLADA اشیاء سه بعدی را مشخص می کنند و پسوند فایل .dae دارند. عنصر <Model> همچنین حاوی یک عنصر <Alias> است که حاوی یک نقشه بین <targetHref> (فایل بافتی که باید توسط Google Earth واکشی شود) و <sourceHref> (مسیری که برای فایل بافت در COLLADA مشخص شده است. فایل dae ). اگر عنصر <sourceHref> حاوی یک مسیر نسبی باشد، Google Earth این مسیر را نسبت به فایل .dae که به آن ارجاع می دهد تعبیر می کند (نه نسبت به فایل doc.kml مانند سایر موارد). مثلا:
<Model> . . . <Link> <href>MackyBldg.kmz/files/CU Macky.dae</href> </Link> <ResourceMap> <Alias> <sourceHref>../files/StairsnoCulling.jpg</sourceHref> <targetHref>../files/StairsnoCulling.jpg</targetHref> </Alias> <Alias> <sourceHref>../files/sideturretnoCulling.jpg</sourceHref> <targetHref>../files/sideturretnoCulling.jpg</targetHref> </Alias> . . . </Model>
ایجاد بایگانی KMZ
از Windows Explorer یا Mac Finder برای ایجاد یک آرشیو Zip استفاده کنید. محتویات پوشه ای را که حاوی فایل doc.kml و منابع مرتبط است انتخاب کنید و گزینه ای مانند WinZip > Add to Zip file ... را انتخاب کنید. کتابخانه Java JAR همچنین دارای یک کتابخانه Zip برای ایجاد و استخراج برنامه نویسی Zip است. آرشیو، و لینوکس دارای نسخه های خط فرمان zip و unzip است.
توجه: هنگام ایجاد آرشیو Zip، حتما محتویات پوشه حاوی فایل doc.kml را انتخاب کنید، نه خود پوشه را.
پس از ایجاد بایگانی، پسوند فایل .zip را به .kmz تغییر دهید. برای استخراج فایل ها از بایگانی، پسوند فایل .kmz را به .zip برگردانید و از ابزار Zip برای باز کردن آرشیو استفاده کنید.
بایگانی های Google Earth و KMZ
استفاده از عنصر <iframe>
در بالونهای KML <description>، بیشتر عناصر HTML در Google Earth درست همانطور که در مرورگرهای وب استاندارد با آنها رفتار میشود، رفتار میشود. با این حال، یک <iframe> در یک بالون توضیحات به عنوان HTML مستقیم در نظر گرفته میشود، به این معنی که ویژگیهای خاص KML شناسایی نمیشوند. به عنوان مثال، یک <iframe> نمی تواند منابع KMZ را نمایش دهد و پیوندهای لنگر محلی، مانند <a href="#my feature;flyto">
شناسایی نمی شوند. عنصر <src> در عنصر <iframe> نمیتواند به یک فایل محلی روی دیسک اشاره کند و همچنین نمیتواند به فایلی در داخل یک فایل KMZ اشاره کند. باید به یک URL در اینترنت اشاره کند که یک مرورگر می تواند از آن بازدید کند.