מדריך KML 2.1

המדריך הזה נועד להכיר את התכונות החדשות והמתקדמות שנמצאות ב-KML 2.1. אם אתה מעוניין בסיור מהיר, התחל על ידי לחיצה על הקישורים כדי להציג את הדוגמאות ב-Google Earth. לקבלת מידע נוסף על רכיבי KML החדשים, התעמק בטקסט ולמד את הנתונים כדי להבין כיצד תכונות אלה מוסיפות גמישות וכוח לגרסה החדשה הזו של Google Earth. אנחנו מצפים בקוצר רוח לראות את המצגות והסיורים החדשניים שאתם יוצרים עם הכלים האלה.

פרטים נוספים על הרכיבים שמוזכרים כאן זמינים בחומר העזר בנושא KML 2.1 וב-KML 2.1 Schema.

הדגשים של KML 2.1

  • אזורים - אזורים מאפשרים לבצע התנהגות מדוקדקת וברמת פירוט גבוהה, כך שתוכלו לחדד את אופן הצגת הנתונים ב-Google Earth. בשימוש עם ה-NetworkLinks, אזורים מאפשרים הזרמה של מערכי נתונים גדולים מאוד, עם טעינה "חכמה" של נתונים ברמות שונות של רזולוציה (ראו את הקטע על שכבות-על עליונות). ניתן גם לדמות את השכבות של Google Earth באמצעות אזורים.
  • מודלים תלת-ממדיים עם מרקם -ניתן ליצור מודלים תלת-ממדיים של אובייקטים תלת-ממדיים באופן טבעי, בתוך שטח הקואורדינטות שלהם, ולאחר מכן לייצא אותם כקובצי COLLADATM ולאחר מכן לייבא אותם אל Google Earth ולהציב אותם על פני כדור הארץ.
  • עדכונים מצטבריםעכשיו תוכלו לעדכן בצורה מצטברת נתונים ש-NetworkLinks העלו – שינוי, הוספה ומחיקה של נתוני KML שנטענות בעבר אל Google Earth.
  • תאריך/שעת תפוגה – אתם יכולים לציין תאריך ושעה לרענון הנתונים כדי שהמטמון יושמט והנתונים יישארו עדכניים.
  • תיקיות לחצני בחירה – כדי לאפשר למשתמש לבחור פריט אחד בלבד בכל פעם בתיקייה, יש להשתמש ברכיב ListStyle החדש כדי לציין תיקיית רדיו.

דוגמאות מגניבות

כדאי לראות את המפרט!

לפניכם כמה מהרכיבים החדשים העיקריים שתכירו ב-KML 2.1:

עבודה עם אזורים

אזורים הם תכונת KML חדשה ועוצמתית שמאפשרת להוסיף מערכי נתונים גדולים מאוד ל-Google Earth מבלי לפגוע בביצועים. הנתונים נטענים ומוצגים רק כשהם נמצאים בתצוגה של המשתמש ותפוסים חלק מסוים במסך. בעזרת 'אזורים' אפשר לספק רמות פירוט נפרדות של הנתונים, כך שהפרטים הקטנים ייטענו רק כשהנתונים ימלאו חלק מהמסך מספיק גדול כדי שניתן יהיה לראות אותו.

הערה: ב-KML, חלק מהכיתות נגזרות משיעור "הורה". סיווגי הצאצאים היורשים יורשים את כל הרכיבים של כיתת ההורה שלהם ומוסיפים כמה רכיבים ספציפיים משלהם. (זוהי טכניקה נפוצה של מערכות מוכוונות אובייקטים.) מטעמי נוחות, הקטע הזה מתייחס לסיווג ההורה במקום לפרט את כל הסיווגים הצאצאים של הילדים. למשל:

  • המונח תכונה מתייחס לכל רכיב KML שנגזר מתכונה: מסמך, תיקייה, שכבת-על, NetworkLink , Placemark ו-ScreenLayer.
  • גיאומטריה מתייחסת לכל רכיב גיאומטרי ב-KML: נקודה, מצולע, לינארית, קו מחרוזת, דגם, גיאומטריה מרובת-ממדים.
  • שכבת-על מתייחסת לרכיבים שנגזרים משכבת-העל: שכבת-על של קרקע ושכבת-על במסך.

בחומר העזר בנושא KML ניתן לראות תרשים שמציג את הירושה בתוך רכיבי KML.

מושגים מרכזיים

כל תכונה יכולה להכיל אזור. אזור משפיע על החשיפה של הגיאומטריה של סמן או על תמונה של שכבת-על. האזורים מגדירים התנהגות גם של מדידה וגם של רמת הפירוט של הגיאומטריה או שכבת-העל שהושפעו. אזורים עוברים בירושה דרך היררכיית ה-KML ומשפיעים על החשיפה של תכונות שהוגדרו נמוך יותר בהיררכיה.

בקטע הזה מתוארים המושגים המרכזיים הבאים, הנחוצים להבנת אזורים:

תיבת סגירה

באזור מסוים יש <LatLonAltBox> שמגדיר תיבה תוחמת של הנתונים. תיבה תוחמת היא נפח שמכיל קבוצה של אובייקטים או נקודות על הגרף. בדומה ל-<LatLonBox> ב-GroundLayer, ל-<LatLonAltBox> באזור מסוים יש גבולות של צפון, דרום, מזרח ומערב. אם הנתונים של האזור הם תלת-ממדיים, או שהם דו-ממדיים בגובה, ה-<LatLonAltBox> של האזור צריך לכלול גם גובה מינימלי, <minAltitude>, וגובה מקסימלי, <maxAltitude>.

אובייקטים המשויכים לתיבה התוחמת הזו משורטטים כאשר (1) האזור מוצג בתצוגה ו-(2) הגודל הצפוי של <LatLonAltBox> שנמצא בטווח הפיקסלים שצוין עבור אזור זה, כמתואר ברמת הפירוט (LOD) . אם שני התנאים האלה מתקיימים, אומרים שהאזור פעיל.

רמת הפירוט (LOD)

הקונספט החשוב השני שקשור ל'אזורים' הוא רמת הפרטים, או LOD בקיצור. מאחר שמסך מחשב מכיל כמות מוגבלת של שטח, עדיף להגדיר אותם כך שכמויות גדולות של נתונים ייטענו רק כשיש מספיק פיקסלים להצגת הנתונים באופן הולם. כאשר האזור תופס חלק קטן יחסית של המסך (אולי כי המשתמש צופה בו ממרחק גדול, או שהוא מוצג בצורה שטוחה באופן מעורפל), מנגנון LOD מאפשר לך (מחבר ה-KML) לציין מערך נתונים עם רזולוציה נמוכה יותר שיוחלף בנתונים ברזולוציה מלאה. מערך הנתונים הזה ברזולוציה נמוכה יותר נטען מהר יותר, ומכיוון שהוא תופס חלק קטן מהמסך, יכול להיות שהמשתמשים לא יכולים להבחין בהבדלים.

באזור מסוים, הרכיבים <minLodPixels> ו-<maxLodPixels> מאפשרים לציין אזור במסך (בפיקסלים מרובעים). כשהנתונים שלכם צפויים להופיע במסך, הם צריכים להיות באזור של מסך גדול מ-<minLodPixels> וקטן מ-<maxLodPixels> כדי שהוא יהיה גלוי. ברגע שהגודל הצפוי של האזור חורג ממגבלות אלה, הוא כבר לא יהיה זמין והאזור יהפוך ללא פעיל.

במקרה המיוחד, שבו רוצים שהנתונים יהיו פעילים באופן אינסופי, צריך לציין -1 (ברירת המחדל) עבור <maxLodPixels>.

דוגמה 1: אזור של שכבת-על של קרקע

תחילה נתבונן בדוגמה פשוטה שיוצרת אזור לשכבת-על דו-ממדית בגובה פני הקרקע. בדוגמה הזו נעשה שימוש בשכבת-על של אדמה המכילה נתונים היסטוריים שמראים חלק מאונטיין ויו בקליפורניה בשנת 1991. כשהמשתמש מתקרב לאזור, שכבת-העל הופכת לגלויה. כך נראית שכבת-העל כאשר היא מוצגת בפעם הראשונה (הקובץ לדוגמה כולל גם שורת מחרוזת לבנה כדי להבליט את שכבת-העל):

צילום מסך שבו מוצגות שכבות-על בשחור-לבן

בדוגמה הזו, המאפיין <minLodPixels> הוא 128, ומשמעות הדבר היא ש-GroundLayer מקבל תצוגה כאשר הוא תופס 128 פיקסלים רבועים במסך. (בדוגמה, נעשה שימוש בערך ברירת המחדל של -1 עבור <maxLodPixels>, כלומר הוא ימשיך להופיע כשהמשתמש מתקרב בזווית זו). התמונה שמשמשת בשכבת-העל הזו היא 256 פיקסלים בריבוע.

כך נראית התמונה כאשר המשתמש משנה את מרחק התצוגה:

כך נראית התמונה ההטיה ממש לפני שהיא הופכת לבלתי נראית כי היא צורכת פחות שטח מסך מהערך <minLodPixels>:

ה-<LatLonAltBox> עבור נתונים אלה אינו צריך לכלול את האלמנטים <minAltitude> ו-<maxAltitude> כי הנתונים שטוחים ומוצגים בגובה פני הקרקע. התיבה התוחמת של הנתונים ב-<LatLonAltBox> של האזור זהה לגבולות של <LatLonBox> של שכבת-העל של הקרקע, כפי שמוצג בקובץ ה-KML שבהמשך:

<?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 (היסטוריה שכבת-על היסטורית.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: אזור לשכבת-על דו-ממדית בגובה

דוגמה זו מראה איך מוסיפים שכבת-על דו-ממדית שתוצג מעל לפני השטח של כדור הארץ בגובה מסוים. הטכניקה הזו שימושית עבור נתונים המציגים חזיתות מזג אוויר ודפוסי תנועה אווירית. בדוגמה הזו מוצג כיסוי ענן קטן בגובה של 100,000 מטר מעל פני הים.

תג <LatLonAltBox> של האזור מציין ערך של 100,000 מטרים עבור רכיבי <minAltitude> ו-<maxAltitude>. (הערך זהה לשני האלמנטים, מכיוון ששכבת-העל היא דו-ממדית ואין לה עובי.) ה-<heightMode> הוא מוחלט, כלומר הערך הזה יחסי לגובה פני הים.

שימו לב לכך שערך ה-<height> של GroundLayer הוא גם 100,000 (כלומר, הוא תואם לערך הגבה של התיבה התוחמת את האזור), ו-<heightMode> של GroundLayer תואם לערך שצוין עבור <heightMode> של האזור.

<?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 משתמשת בחיישן הזה כדי לקבוע אם יש עמעום ביחס לגודל המינימלי הגלוי. טווחי עמעום הם אופציונליים, אך הם מונעים את אפקט ה"פופ" בין מחרוזות או מצולעים ברזולוציות שונות. עמעום הוא יקר מאוד מבחינת ביצועים ואין להשתמש בו בתמונות.

הערה: הטווח 'להפוך לשקוף בהדרגה' לכל האובייקטים מלבד סמלים של סמנים. הסמלים האלה מצוירים כשטווח העמעום גדול מ-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 גס.

כאשר אזורים מקושטים הופכים לפעילים, הם יכולים להפוך לפעילים

  • צבירת נתונים המשויכים לכל אזור (כמו בדוגמה שכבת-על שמתוארת בהמשך)
  • החלפת הנתונים של האזור שנטען בעבר בנתונים חדשים (כפי שמוצג באיור הקודם)

יש לכלול <LatLonAltBox> באזור צאצא באופן מלא בתוך <LatLonAltBox> של האזור ברמה העליונה. אזורים עוברים בירושה דרך ההיררכיה של התיקייה ושל NetworkLink. אזורים שמוגדרים באופן מקומי מקבלים עדיפות על פני אזורים שמוגדרים יותר גבוה בהיררכיית התיקיות. הדוגמה הבאה ממחישה איך ההיקף המקומי של אזור מסוים מבטל את ההגדרה של אזור מסוים במיקום גבוה יותר בהיררכיה. בדוגמה הזו, הסמן "ukraineRegion" יורש את האזור מהמסמך ההורה שלו. התיקייה 'romaniaFolder' מציינת 'אזור' משלה, המשמש את הסמן "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, ניתן ליצור היררכיה של מצביעים, שכל אחד מהם מפנה לאזור משנה ספציפי. ב-<viewRefreshMode>, כפי שמוצג בקובץ ה-KML הבא, יש אפשרות onRegion, המציינת לטעון את נתוני האזור רק כשהאזור פעיל. אם מגדירים אזורים מקוננים עם רמות פירוט מרובות, כמויות גדולות יותר של נתונים ייטענו רק כשנקודת המבט של המשתמש תפעיל את הטעינה הבאה. הקטע הבא בנושא שכבות-על מתקדמות מספק דוגמה מפורטת.

חלק 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>
<?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>

שכבות-על עליונות

ש: איך אפשר לשתף תמונה בגודל 47MB עם העולם?
A: פריט אחד בכל פעם.

ש: מה קורה אם כולם מנסים לעשות זאת?
ת: אם אתם משתמשים ב-NetworkLinks המבוססים על אזור ומציינים רמות רבות של פירוט בתמונות כפי שמתואר במדריך הזה – אין בעיה!

בסעיף זה נסביר איך ליצור "שכבת-על-על" – היררכיה של אזורים וקישורי רשת שאפשר להשתמש בהם כדי להציג ביעילות כמות גדולה של תמונות. האריחים ברזולוציה המתאימה נטענים כשחלקים של אזור התמונה נראים, כאשר משבצות ברזולוציה גבוהה יותר נטענים ככל שנקודת המבט קרובה. זה בזבוז של מאמץ לנסות להציג תמונה בגודל 7008 על 6720 פיקסלים במסך בגודל 1024 על 768. בנוסף, אם המשתמש נמצא קילומטרים רבים יותר מפני השטח של כדור הארץ, כל הנתונים האלה מכווצים במספר פיקסלים והביצועים לא טובים. שכבות-על עליונות, כמו הדוגמה שלנו, המציגה DOQQ משנת 1991 של מאונטיין וויו, קליפורניה, מאפשרות לכם להשתמש ב-NetworkLinks וביכולתם לקבוע (1) אם אזור נתון נמצא בטווח ו-(2) אם הגודל הצפוי שלו מתאים לנקודת המבט הנוכחית. אם האזור "פעיל" (שני התנאים מתקיימים), NetworkLink טוען את הנתונים שמשויכים לאזור. אם האזור לא פעיל, לא ייטענו נתונים. אם תבצע חלוקת משנה של התמונה המקורית להיררכיה של תמונות בעלות רמות פירוט הולכות וגדלות, Google Earth יוכל לטעון את התמונות המתאימות ביותר לתצוגה הנוכחית.

כדי לראות איך משתמשים בהיררכיית התמונות, טוענים את הקובץ לדוגמה ב-Google Earth ועורכים ניסויים על ידי שינוי מרחק התצוגה באזור הרצוי: Mountain View Historial DOQQ.

 

דוגמה לשימוש בקישורי רשת מבוססי אזור כדי לטעון ביעילות מערך נתונים גדול מאוד. גודל התמונה המקורית הוא 7008 על 6720 פיקסלים. התצוגה האלכסונית המוצגת כאן טוענת רק חמש משבצות קטנות כדי לייצג את התמונה הזו. (נוספו מחרוזות לבנות לבנות כדי להדגיש את גבולות האריחים). האפליקציה הזו מציגה תמונות היסטוריות של העיר מאונטיין וויו (DOQQ משנת 1991).

הכנת הנתונים שלך לשכבת-על מתקדמת

בשכבת-העל לדוגמה, התמונה המקורית של Mountain View מחולקת למאות שכבות-על קטנות. שכבות-העל האלה, או האריחים, מסודרות בהיררכיה של חמש רמות. לצורך דוגמה, הדיון כאן משתמש בהיררכיה פשוטה של שלוש רמות ובקבוצה של 21 שכבות על, אך העקרונות שבהם מדובר הם זהים. שימו לב שזוהי רק אחת מהגישות ליצירת היררכיה של קישורי רשת מבוססי-אזור, ושקיימות דרכים אחרות ליישם את המנגנון הזה.

כדי ליצור שכבת-על מתקדמת, צריך:

  1. אפשר להכין את התמונות על ידי חלוקת משנה למקטעים ניתנים לניהול (מומלץ להשתמש בגודל של 256 על 256 פיקסלים), וגם
  2. יוצרים את קובצי ה-KML שמגדירים את האזורים, הקישורים, קישורי הרשת ובמקרה הזה, את הקבצים שמכילים את GroundLayers.

הכנה של התמונות

תוכלו לבחור גודל סטנדרטי של המשבצות – תמונות מחולקות לקבוצות משנה (ברזולוציות שונות) ש-Google Earth יטען כשהאזורים שלהן יהיו פעילים. לדוגמה, נשתמש ב-256 על 256 פיקסלים עבור המשבצות, שהוא גודל קטן מספיק לניהול.

  1. מומלץ להתחיל עם התמונה המקורית ברזולוציה מלאה. חלקו את המשבצות האלה ל-n משבצות, ולאחר מכן חלקו כל אחת מהמשבצות האלה למשבצות n.
    יש להמשיך בחלוקת משנה עד שיהיו לכם משבצות בגודל נתון (בדוגמה שלנו, 256 על 256 פיקסלים).

    נניח שהתמונה המקורית שלנו היא 1,024 על 1,024 פיקסלים.
    ההיררכיה הבאה תוביל לחלוקת המשנה שלנו.
  2.  

     

  3. לדגום כל משבצת בהיררכיה לגודל הרגיל שבחרתם (לדוגמה, 256 על 256 פיקסלים).
    כרטיסי הדגימה שנדגמו מחדש יכללו פחות פרטים, אבל הם ישויכו לאזורים הפעילים
    מנקודות מבט מרוחקות יותר, כך שהמשתמש לא יוכל להבחין בפרטים האלה.

 


התרשים הבא מראה איך נקודת המבט וההגדרות של אזורים מקננים קובעים אילו אריחים ייטענו בפועל. שלוש רמות של פרטים מסופקות עבור תמונה גדולה זו לדוגמה. כשהמשתמש מביט באזור מהמרחק הגדול ביותר, Google Earth מציג את התמונה הממוזערת. תצוגה זו נמתחת לאורך LatLonAltBox כולו (אך מכיוון שהגודל הצפוי הוא קטן - 256 פיקסלים רבועים - אין אובדן ממשי של מידע ויזואלי). כשהמשתמש מתקרב לתצוגה, האזור מחולק לארבעה אזורים. הגודל של כל אחד מארבעת ה'משבצות' האלו זהה לזה של התמונה הממוזערת, אבל הוא מספק תמונות מפורטות יותר.

אם המשתמש ממשיך להתקרב באזור, חלקים מהתמונות ברזולוציה מלאה מוצגים בהתאם למרחק שבו המשתמש עובר אליהם. באזורים במרחק נשמרים התמונות המפורטות פחות שהועלו קודם. בדוגמה של Mountain View DOQQ, מפעילים את האפשרות "Boxs" ומסמנים את הסמנים A ואת B, המשתמשים ב-LineString מסביב לאזורים ומציגים את הרמות השונות בהיררכיה בו-זמנית.

שימו לב שבדוגמה הזו נעשה שימוש באותם ערכים עבור minLodPixels ו-maxLodPixels בכל האזורים (בכל הרמות). ה-LatLonAltBox קובעת את רמת ההיררכיה שיש לטעון ואילו משבצות בתוך האזור.

הכנה של קובצי ה-KML

לכל תמונה, הכן קובץ KML שמשייך את שכבת-העל של הקרקע ל-Region ול-NetworkLink. כל קובץ KML בקבוצה זו מכיל את הרכיבים הבאים:

  • אזור (עם LatLonAltBox , minLodPixels ו-maxLodPixels כדי ש-Google Earth יוכל לקבוע אם האזור פעיל בכל זמן נתון)
  • קבוצה של NetworkLinks לקובצי הצאצא (המשבצות ברמה הבאה בהיררכיה)
  • שכבת-העל של קרקע עבור אזור זה

בדוגמה הזו מופיע קובץ ה-KML ברמה העליונה עבור דוגמה ל-DOQQ של Mountain View. ב-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>

הקובץ הבא מציג 'אזור' בדוגמה של DOQQ Mountain View (179.KML). קובץ זה מכיל חמישה תגי href: ארבעה מתייחסים לארבעת קובצי ה-KML ברמה הבאה של היררכיית התמונות, ואחד מתייחס לקובץ התמונה המשמש עבור שכבת-העל של אריח זה.

<?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, הוא מתורגם, מסתובב וקנה המידה שלו מותאם למערכת הקואורדינטות של Earth. ניתן כבר למקם מחדש מודלים שכבר נטענו ל-Google Earth באמצעות הרכיב <Update>, תכונה חדשה נוספת ב-KML 2.1.

מודל לדוגמה

מודל משמש ב-Google Earth בדיוק כמו כל אובייקט גיאומטרי אחר (נקודה, מחרוזת פוליגון). הנה דוגמה פשוטה של קובץ KML שמייבא מודל עם מרקם.

האזכור של <קישור> למודל יכול להיות מפרט קובץ מוחלט או יחסי, או כתובת אתר.

כדי להציג את המודל הזה יש לטעון את הקובץ 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>

המודל ממוקם גיאוגרפית לפי מפרטי קווי הרוחב, קו האורך והגובה של רכיב המיקום. בדוגמה הזו נעשה שימוש בערכי ברירת המחדל לרכיבים מסוג 'כיוון' ו'שינוי קנה מידה', הכלולים כאן כדי להשלים את ההגדרה.

רכיב הכיוון מציין סיבובים של המודל סביב הצירים x (tilt), y (roll) ו-z (headline). ציר y מפנה לצפון ומקביל לקווים של קווי אורך, וציר ה-x פונה מזרחה ומקביל לקווי רוחב. הסיבובים מצוינים במעלות, עם סיבובים חיוביים כפי שמתואר בתרשים הבא.

יצירת ארכיון .kmz

ארכיון KMZ הוא אוסף של קבצים ששימשו ליצירת מצגת KML אחת. הארכיון הזה כולל את כל הקבצים המקומיים שיש אליהם הפניה בקובץ .xlsx, כמו תמונות, מרקמים ודגמים. ארכיון KMZ הוא חבילה עצמאית שאינה חייבת להתארח בשרת רשת, וניתן לשלוח אותה בקלות לארכיון ולאחסן אותה כיחידה אחת. Google Earth יכול לקרוא קובצי .KML ו-.kmz ישירות.

הקובץ doc.KML והקבצים המקומיים שהוא מפנה אליהם נדחסים לארכיון באמצעות פורמט קובץ ה-ZIP. אפליקציות רבות יכולות להפיק את הפורמט הזה. WinZip במערכות Windows , Stuffit במערכות Macintosh ו-Zip במערכות Linux או Macintosh הן אפליקציות פופולריות שניתן לקרוא ולכתוב בפורמט ה-ZIP. אפשר גם להשתמש בארכיונים דחוסים באמצעות Windows Explorer או Mac Finder ישירות.

לאחר יצירת קובץ ה- .zip משנים את סיומת הקובץ ל- .kmz.

ארכיון ה-KMZ המכיל את המודל עם המרקם המלא של בניין מאקי כולל את הקבצים הבאים:

  • doc.KML – קובץ ה-KML שמוצג למעלה, שמייבא את מודל ה-COLLADA (.dae) ומציב אותו ב-Google Earth. מציבים את הקובץ הזה בספריית הבסיס של קובץ ה-KMZ.
  • textures.txt – משמש למיפוי מחדש של נתיבי מרקם בקובץ המודל (כאן, CU Macky.dae) לנתיבים בתוך קובץ ה-KMZ. מציבים את הקובץ הזה בספריית הבסיס של קובץ ה-KMZ. לכל מרקם שמוזכר ב-CU Macky .dae יש שורה אחת ב-textures.txt מהטופס:
<kmz_file_path> <COLLADA_file_path> [<KML_ID_of_model>]

<kmz_file_path> הוא הנתיב היחסי בארכיון KMZ המקום שבו נמצא המרקם. הנתיב הזה הוא יחסי ל-CU Macky.dae, שנמצא בספרייה files/ בארכיון 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>
  • קבצים/ספרייה – מכילה את קובצי ה-COLLADA שמגדירים את הגיאומטריה, המרקמים והחומר של המודל. בדוגמה של ה-Macky Build, ספרייה זו מכילה את קובץ ה-COLLADA (CU Macky.dae) וכן את הקבצים הרבים המכילים את תמונות ה-JPEG המשמשות ליצירת מרקם של המבנה (CU-Macky-BrickwallnoCulling.jpg, CU-Macky-Center

דוגמה זו ממחישה דרך אחת לבניית הקבצים בארכיון KMZ. למעשה, תוכלו לארגן את הקבצים בכל מבנה שנראה לכם הגיוני, בדיוק כפי שאתם מארגנים את הקבצים בתיקיות או בספריות במחשב. לדוגמה, ייתכן שתרצו להציב את כל התמונות בספרייה תמונות/. הפניות יחסיות (כגון הקבצים ברכיב <href> שנעשה בהם שימוש ב-NetworkLink, קישור, שכבת-על/סמל ומודל) יצוינו באופן יחסי לקובץ doc.KML. אם כוללים ספריית תמונות, מפרט ה-<href> של התמונות יהיה: images/myBrickTexture.jpg, images/myMountainLayer.png, וכן הלאה).

כדי לשנות נתונים שנוספו באמצעות NetworkLink, יש להשתמש ברכיב העדכון, שהוא צאצא של NetworkLinkControl. העדכון יכול להכיל כל מספר של אלמנטים מסוג 'שינוי', 'יצירה' ו'מחיקה', שמעובדים לפי הסדר.

האיור הבא ממחיש את רצף האירועים.

  1. NetworkLink טוען את קובץ ה-KML "המקורי" ב-Google Earth. רכיב שיעודכן במועד מאוחר יותר צריך להיות מוגדר עם id מפורש כאשר הוא צוין לראשונה. המזהים חייבים להיות ייחודיים בתוך קובץ נתון.
  2. NetworkLink טוען מחדש קובץ KML שני שמכיל את העדכונים (כל שילוב של 'שינוי', 'יצירה' ו'מחיקה') לאובייקטים של KML שכבר נטענו. קובץ העדכון מכיל שתי הפניות לזיהוי נתוני KML המקוריים:
  3. כדי לאתר את האובייקטים ב-Google Earth, הרכיב Update משתמש ברכיב targetHref כדי לזהות את הקובץ המקורי שהגדיר את האובייקטים שיש לשנות. כדי לזהות את האובייקטים שרוצים לשנות או את המאגר של אובייקטים חדשים, הרכיבים 'שינוי', 'יצירה' ו'מחיקה' מכילים מאפיין targetId שמפנה למזהים של האובייקטים האלה.

דוגמה לשינוי

הדוגמה הבאה מציגה קבוצה של קובצי NetworkLinks וקובצי KML לדוגמה. כדי להפעיל את הדוגמה:

  1. טוענים את הקובץ Point-load.KML ב-Google Earth. הקובץ הזה מכיל את ה-NetworkLink שטוען את קובץ הנתונים המקורי, שמכיל שתי נקודות (Point.KML).
  2. טוענים את הקובץ Update-load.KML ב-Google Earth. הקובץ הזה מכיל את הקישור השני ב-NetworkLink, שטוען את הקובץ שמכיל את נתוני העדכון (שם חדש ל-point123).

הקובץ הראשון מכיל את ה-NetworkLink שטוען את קובץ הנתונים, שמכיל שתי נקודות. לסמנים שמכילים את הנקודות האלה מוקצים מזהים. הקובץ השלישי מכיל NetworkLink אחר, שמוסיף את קובץ ה-Update. הרכיב 'שינוי' משנה את שם הסמן ל-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). הקובץ הזה טוען את הקובץ שמכיל את פרטי העדכון.

<?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) שמכיל את פרטי העדכון:

<?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>

תפוגה

כברירת מחדל, נתונים נטענים רק פעם אחת על ידי קישורים ל-Google Earth. כדי למנוע התיישנות של נתוני KML, ניתן לציין refreshMode ב-onExpire לכל הנתונים שנטענים על ידי רכיב <href> (ברכיב קישור או רכיב סמל). כברירת מחדל, כותרות התפוגה של ה-HTTP מציינות את מועד התפוגה. אפשר גם לציין זמן פקיעת תוקף ב-KML NetworkLinkControl. השעה מבוטאת כתאריך XML. (ראו סכימת XML חלק 2: סוגי נתונים מהדורה שנייה). אם צוינו כותרות HTTP וזמני תפוגה של KML, זמן התפוגה של KML מקבל עדיפות.

דוגמה 1: תפוגה באמצעות זמן התפוגה של שרת HTTP

זוהי דוגמה בלבד. הוא מציג שכבת-על עם סמל שמגדיר refreshMode ל-onExpire. מכיוון שלא הוגדר זמן תפוגה של 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>

דוגמה 2: דוגמה עם זמן תפוגה של KML

הדוגמה הבאה מספקת סמן בקואורדינטות שנבחרו באופן אקראי. בדוגמה הזו מופיע קישור עם refreshMode: onExpire. במקרה כזה, התאריך/שעה של התפוגה מוגדרים (בסקריפט של Python) באמצעות רכיב ה-KML החדש <expires>. מועד התפוגה של ה-KML מקבל עדיפות על פני כל פרק זמן שהיה מוגדר בכותרות ה-HTTP.

הנה קישור Network KML המכיל את הקישור עם האלמנטים <href> ו-<refreshMode>:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<NetworkLink>
<Link>
<href>http://dev.someserver.com/cgi-bin/expires.py</href>
<refreshMode>onExpire</refreshMode>
</Link>
</NetworkLink>
</Document>
</kml>

זה הסקריפט של Python שמגדיר זמן תפוגה [now + 11 שניות] ומרענן את הקואורדינטות של הסמן:

#!/usr/bin/python

import random
import time
lat = random.random() * 180. - 90.
lon = random.random() * 360. - 180.
now = time.time()
future = time.gmtime(now + 11)
y = future[0]
mo = future[1]
d = future[2]
h = future[3]
mi = future[4]
s = future[5]
iso8601 = '%04d-%02d-%02dT%02d:%02d:%02dZ' % (y,mo,d,h,mi,s)
print 'Content-type: application/vnd.google-earth.kml+xml'
print
print '<?xml version=\"1.0\" encoding=\"UTF-8\"?>'
print '<kml xmlns=\"http://earth.google.com/kml/2.1\">'
# must be child of <kml>
print '<NetworkLinkControl>'
print '<expires>%s</expires>' % iso8601
print '</NetworkLinkControl>'
print '<Placemark>'
print '<name>placemark expires %s</name>' % iso8601
print '<Point>'
print '<coordinates>%f,%f,0</coordinates>' % (lon,lat)
print '</Point>'
print '</Placemark>'
print '</kml>'

תיקיות עם פריטים בסגנון רדיו

עכשיו אפשר ליצור תיקיות עם פריטים בסגנון רדיו באמצעות הרכיב ListStyle, ולציין רשימהListItemType של radioFolder. הדוגמה הבאה ממחישה את השימוש הזה ברכיב החדש של סגנון הרשימה.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>ListStyle radiofolder</name>
<Folder>
<name>radioFolder Folder</name>
<Style>
<ListStyle>
<listItemType>radioFolder</listItemType>
</ListStyle>

</Style>
<Placemark>
<name>north</name>
<Point>
<coordinates>-114,41.79,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>south</name>
<Point>
<coordinates>-114,41.78,0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml>

כך מוצגת החלונית 'מקומות' בתיקייה 'צאצאים' שלה: