Hướng dẫn về KML 2.1

Hướng dẫn này được thiết kế để làm quen với các tính năng mới thú vị có trong KML 2.1. Nếu bạn quan tâm đến một chuyến tham quan nhanh, hãy bắt đầu bằng cách nhấp vào các đường liên kết để xem các mẫu trong Google Earth. Nếu bạn muốn biết thêm thông tin chi tiết về các phần tử KML mới, hãy đi sâu vào văn bản và nghiên cứu các số liệu để hiểu cách các tính năng này bổ sung tính linh hoạt và sức mạnh cho bản phát hành mới này của Google Earth. Chúng tôi rất mong muốn được thấy các bản trình bày và những chuyến tham quan đổi mới mà bạn tạo ra bằng các công cụ này.

Vui lòng xem Tài liệu tham khảo KML 2.1Giản đồ KML 2.1 để biết thông tin chi tiết về các phần tử được thảo luận tại đây.

Điểm nổi bật của KML 2.1

  • Khu vực - Khu vực cung cấp hành vi chọn lọc và mức độ chi tiết cho phép bạn tinh chỉnh cách dữ liệu của bạn được trình bày trong Google Earth. Khi được sử dụng với Networklinks, các khu vực cho phép truyền trực tuyến các tập dữ liệu rất lớn, với tính năng tải dữ liệu "thông minh" ở nhiều cấp độ phân giải (xem phần trên Siêu lớp phủ). Bạn cũng có thể mô phỏng các lớp của Google Earth bằng cách sử dụng Khu vực.
  • Mô hình 3D có kết cấu – Các đối tượng 3D có thể được mô hình hóa tự nhiên trong không gian toạ độ của riêng chúng và được xuất ra tệp noindexTM, sau đó được nhập vào Google Earth và đặt trên bề mặt Trái Đất.
  • Cập nhật gia tăngBây giờ, bạn có thể cập nhật tăng dần dữ liệu được tải bằng Networklinks — thay đổi, thêm và xoá dữ liệu KML đã được tải trước đây vào Google Earth.
  • Ngày/giờ hết hạn – Bạn có thể chỉ định ngày giờ để làm mới dữ liệu và bộ nhớ đệm được xoá sạch và dữ liệu vẫn còn cập nhật.
  • Thư mục nút chọn – Để cho phép người dùng chỉ chọn một mục trong một thư mục tại một thời điểm, hãy sử dụng phần tử ListStyle mới để chỉ định một thư mục radio.

Mẫu chất lượng cao

Hãy xem thông số kỹ thuật!

Dưới đây là một số phần tử chính mới bạn sẽ được giới thiệu trong KML 2.1:

Làm việc với các khu vực

Khu vực là một tính năng KML mới, mạnh mẽ, cho phép bạn thêm các tập dữ liệu rất lớn vào Google Earth mà không làm giảm hiệu suất. Dữ liệu chỉ được tải và vẽ khi nằm trong chế độ xem của người dùng và chiếm một phần nhất định trên màn hình. Khi sử dụng Khu vực, bạn có thể cung cấp các mức chi tiết riêng cho dữ liệu đó để chi tiết chỉ được tải khi dữ liệu lấp đầy một phần màn hình đủ lớn để chi tiết có thể hiển thị.

Lưu ý: Trong KML, một số lớp có nguồn gốc từ một lớp "mẹ". Các lớp "con" dẫn xuất kế thừa tất cả các phần tử của lớp mẹ và thêm một số phần tử cụ thể của riêng mình. (Đây là một kỹ thuật phổ biến của các hệ thống hướng đối tượng). Để thuận tiện, phần này đề cập đến lớp mẹ thay vì liệt kê tất cả các lớp con dẫn xuất. Ví dụ:

  • Thuật ngữ Tính năng chỉ bất kỳ phần tử KML nào có nguồn gốc từ Tính năng: Tài liệu, Thư mục, GroundOverlay, NetworkLink, Timestamp và ScreenOverlay.
  • Hình học đề cập đến bất kỳ phần tử hình học nào trong KML: Điểm, Đa giác, Tuyến tính, Chuỗi, Mô hình, Đa địa lý.
  • Lớp phủ đề cập đến các phần tử bắt nguồn từ Lớp phủ: Lớp phủ mặt đất và Lớp phủ màn hình.

Vui lòng xem Tài liệu tham khảo KML để biết sơ đồ thể hiện tính kế thừa trong các phần tử KML.

Khái niệm chính

Mọi tính năng đều có thể chứa một Khu vực. Vùng ảnh hưởng đến khả năng hiển thị hình học của Dấu vị trí hoặc hình ảnh của Lớp phủ. Các khu vực xác định cả hành vi chọn lọc và mức độ chi tiết của hình học hoặc lớp phủ bị ảnh hưởng. Các khu vực được kế thừa thông qua hệ thống phân cấp KML và ảnh hưởng đến khả năng hiển thị của các Tính năng được xác định thấp hơn trong hệ thống phân cấp.

Phần này mô tả các khái niệm chính sau đây cần thiết để tìm hiểu về Vùng:

Hộp giới hạn

Vùng có <LatLonAltBox> xác định hộp giới hạn cho dữ liệu của bạn. Hộp giới hạn là một ổ đĩa chứa một tập hợp các đối tượng hoặc điểm dữ liệu. Tương tự như <LatLonBox> trong Lớp phủ mặt đất, <LatLonAltBox> trong Khu vực có các ranh giới Bắc, Nam, Đông và Tây. Nếu dữ liệu nằm trong Vùng là 3D hoặc là 2D ở độ cao thì <LatLonAltBox> của Vùng đó cũng cần phải bao gồm độ cao tối thiểu, <minElevation> và độ cao tối đa là <maxElevation>.

Các đối tượng liên kết với hộp giới hạn này được vẽ khi (1) Khu vực nằm trong khung nhìn và (2) kích thước màn hình dự kiến của <LatLonAltBox> nằm trong phạm vi pixel được chỉ định cho Khu vực đó, như mô tả trong Cấp chi tiết (LOD) . Khi đáp ứng cả hai điều kiện này, Khu vực này được cho là "đang hoạt động".

Cấp chi tiết (LOD)

Khái niệm quan trọng thứ hai liên quan đến Khu vực là khái niệm Cấp chi tiết, viết tắt là LOD. Vì màn hình máy tính có dung lượng hạn chế nên việc thiết lập mọi thứ sẽ hiệu quả nhất để một lượng lớn dữ liệu chỉ được tải khi có đủ pixel để hiển thị đầy đủ dữ liệu. Khi Vùng chiếm một phần tương đối nhỏ của màn hình (có thể là do người dùng xem nội dung đó từ một khoảng cách rất lớn hoặc là một vùng phẳng được xem theo phương cắt), cơ chế LOD cho phép bạn (tác giả KML) chỉ định một tập dữ liệu có độ phân giải thấp hơn để được thay thế cho dữ liệu có độ phân giải đầy đủ. Tập dữ liệu có độ phân giải thấp hơn tải nhanh hơn và vì nó chiếm một phần nhỏ màn hình, nên người dùng không thể nhận biết sự khác biệt.

Trong một Khu vực, các phần tử <minLodPixels> và <maxLodPixels> cho phép bạn chỉ định một khu vực trên màn hình (tính bằng pixel vuông). Khi được chiếu lên màn hình, dữ liệu của bạn phải chiếm một khu vực màn hình lớn hơn <minLodPixels> và nhỏ hơn <maxLodPixels> để có thể hiển thị. Khi kích thước dự kiến của Khu vực vượt quá các giới hạn này, nó sẽ không còn hiển thị và Khu vực đó chuyển sang trạng thái không hoạt động.

Trong trường hợp đặc biệt mà bạn muốn dữ liệu hoạt động đến kích thước vô hạn, hãy chỉ định kích thước -1 (mặc định) cho <maxLodPixels>.

Ví dụ 1: Khu vực cho lớp phủ mặt đất

Trước tiên, hãy xem ví dụ đơn giản để xây dựng Khu vực cho lớp phủ 2D ở cấp mặt đất. Ví dụ này sử dụng lớp phủ mặt đất có chứa dữ liệu trong quá khứ cho thấy một phần Mountain View, California, vào năm 1991. Khi người dùng phóng to khu vực đó, lớp phủ sẽ hiển thị. Đây là giao diện của lớp phủ khi hiển thị lần đầu tiên (tệp ví dụ cũng bao gồm một Chuỗi dòng màu trắng để làm cho lớp phủ nổi bật hơn):

Ảnh chụp màn hình cho thấy lớp phủ đen trắng xuất hiện

Trong ví dụ này, <minLodPixels> là 128, có nghĩa là GroundOverlays hiển thị khi chiếm 128 pixel vuông trên màn hình. (Ví dụ này sử dụng giá trị mặc định là -1 cho <maxLodPixels>, nghĩa là giá trị này sẽ vẫn hiển thị khi người dùng phóng to ở góc này.) Hình ảnh dùng cho lớp phủ này có kích thước 256 pixel vuông.

Hình ảnh trông như thế này khi người dùng phóng to trên đó:

Và dưới đây là giao diện của hình ảnh nghiêng ngay trước khi hình ảnh nghiêng vì không chiếm nhiều không gian màn hình hơn giá trị <minLodPixels>:

<LatLonAltBox> cho dữ liệu này không cần bao gồm các phần tử <minElevation> và <maxElevation> vì dữ liệu ở dạng phẳng và ở mặt đất. Hộp giới hạn cho dữ liệu trong <LatLonAltBox> của Vùng giống với ranh giới của <LatLonBox> của lớp phủ mặt đất, như minh họa trong tệp KML bên dưới:

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

Ngoài ra, trong tệp KML, hãy lưu ý rằng Khu vực là anh chị em của hình ảnh (hoặc hình học) mà khu vực đó ảnh hưởng đến.

Bây giờ, bạn đã có thời gian kiểm tra tệp KML, hãy nhấp vào đường liên kết sau để tải lớp phủ vào Google Earth. Sau đó, thử nghiệm các góc nhìn khác nhau và quan sát thời điểm Khu vực xuất hiện và nằm ngoài màn hình, tuỳ thuộc vào diện tích màn hình mà khu vực đó yêu cầu. Lưu ý rằng nếu bạn nghiêng chế độ xem đủ xa hoặc nếu bạn thu nhỏ khá nhiều, lớp phủ sẽ biến mất vì chiếm quá ít không gian màn hình để đáp ứng yêu cầu <minLodPixels>.

Xem ví dụ trong Google Earth (historyoricOverlay.SRC)

Độ cao

Ví dụ 2: Khu vực cho Mô hình 3D

Ví dụ sau đây cho thấy cách xây dựng Vùng chứa các đối tượng 3D ở mặt đất. <LatLonAltBox> cho Vùng này chứa <maxElevation> là 300 mét vì đó là chiều cao của toà nhà. Bạn có thể sẽ nhận ra những toà nhà này là khu phức hợp của Liên Hợp Quốc ở Thành phố New York.

Điều quan trọng cần lưu ý là ranh giới của <LatLonAltBox> trong khu vực không nhất thiết phải khớp chính xác với kinh độ và ranh giới vĩ độ của Mô hình. Toạ độ của Mô hình tương ứng với vị trí ban đầu của nó, có thể được bù trừ từ vị trí thực tế của Mô hình trên Trái đất.

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

Nhấp vào liên kết sau để tải tệp vào Google Earth. Một lần nữa, thử nghiệm các quan điểm khác nhau để xem khi nào các toà nhà có thể nhìn thấy và khi nào các toà nhà bị xoá bỏ khỏi tầm nhìn.

Xem ví dụ trong Google Earth (unitedNations.SRC)

Ví dụ 3: Vùng cho lớp phủ 2D ở độ cao

Ví dụ này cho thấy cách bạn thêm lớp phủ 2D để hiển thị phía trên bề mặt Trái đất ở độ cao được chỉ định. Kỹ thuật này hữu ích đối với dữ liệu hiển thị mặt tiền thời tiết và các quy luật không khí. Ở đây, ví dụ cho thấy một lớp phủ đám mây nhỏ ở độ cao 100.000 mét so với mực nước biển.

<LatLonAltBox> của Khu vực chỉ định giá trị là 100.000 mét cho cả phần tử <minElevation> và <maxElevation>. (Giá trị giống nhau cho cả hai phần tử, vì Lớp phủ là 2D và không có độ dày.) <ElevationMode> là tuyệt đối, tức là giá trị này tương đối so với mực nước biển.

Lưu ý rằng giá trị <elevation> của GroundOverlay cũng là 100.000 (nghĩa là giá trị này khớp với giá trị độ cao của hộp giới hạn của Vùng) và <elevationMode> của GroundOverlay khớp với giá trị được chỉ định cho <ElevationMode> của Vùng.

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

Xem ví dụ trong Google Earth (cloudRegion.SRC)

Độ mở rộng mờ

Bạn cũng có thể chỉ định phạm vi làm mờ cho một Vùng, cho phép một đối tượng chuyển đổi nhẹ nhàng từ trong suốt sang mờ và quay lại. Phạm vi làm mờ là không bắt buộc, nhưng chúng ngăn hiệu ứng "pop" giữa các Chuỗi hoặc Đa giác có độ phân giải khác nhau. Hiệu ứng mờ rất tốn kém về mặt hiệu suất và không nên dùng với hình ảnh.

Lưu ý: Phạm vi làm mờ áp dụng cho mọi đối tượng, ngoại trừ biểu tượng dấu vị trí. Các biểu tượng này được vẽ khi phạm vi làm mờ lớn hơn 0,5.

 

Ví dụ sau minh họa cách mức độ mờ dần ảnh hưởng đến 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>

Xem ví dụ trong Google Earth (fadeLineString.SSH)

Khu vực lồng ghép

Cách sử dụng Khu vực phổ biến là lồng những Khu vực đó với Khu vực lớn hơn liên quan đến độ phân giải thô hơn, và Khu vực nhỏ hơn, liên quan đến mức độ chi tiết ngày càng tốt. Trong hình sau, mỗi Khu vực có một tập hợp các giới hạn LOD chỉ định kích thước màn hình dự kiến của Khu vực tính bằng pixel cần thiết để Khu vực liên kết hoạt động. Khi điểm nhìn của người dùng di chuyển gần hơn, Khu vực có mức độ chi tiết tốt hơn (LOD) sẽ hoạt động do Khu vực này chiếm nhiều không gian màn hình hơn. Những khu vực có LOD ổn định hơn sẽ thay thế Khu vực được tải trước đó bằng LOD thô hơn.

Khi các Vùng lồng nhau kế tiếp hoạt động, chúng có thể

  • Tích luỹ dữ liệu liên kết với từng Khu vực (như trong ví dụ về Siêu lớp phủ mô tả bên dưới)
  • Thay thế dữ liệu của Khu vực đã tải trước đó bằng dữ liệu mới (như minh hoạ trong hình trước)

<LatLonAltBox> trong Vùng con phải được chứa hoàn toàn trong <LatLonAltBox> của Vùng gốc. Các khu vực được kế thừa thông qua hệ thống phân cấp Thư mục và NetworkLink. Những khu vực đã xác định trên thiết bị sẽ được ưu tiên hơn so với những Khu vực đã xác định cao hơn trong Hệ thống phân cấp thư mục. Ví dụ sau minh họa cách phạm vi cục bộ của một Vùng ghi đè một Vùng được xác định cao hơn trong hệ thống phân cấp. Trong ví dụ này, dấu vị trí "ukraineRegion" kế thừa Khu vực từ Tài liệu gốc. Thư mục "romaniaFolder" chỉ định khu vực riêng, được Dấu vị trí "romaniaRegion" sử dụng. Xem phần tiếp theo về "Tải lên thông minh" các đường liên kết mạng dựa trên khu vực để biết thêm ví dụ về cách sử dụng Khu vực trong các Đường liên kết mạng để đạt được hiệu quả tối đa.

<?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 dựa trên khu vực hiển thị trong ví dụ trước là cách hiệu quả nhất để xuất bản một tập dữ liệu rất lớn trong Google Earth. Khi sử dụng Khu vực kết hợp với Networklinks, bạn có thể tạo hệ thống phân cấp con trỏ, mỗi con trỏ trỏ đến một khu vực phụ cụ thể. <viewRefreshMode>, như minh hoạ trong tệp KML sau đây, có tuỳ chọn onRegion để chỉ tải dữ liệu Khu vực chỉ khi Khu vực đang hoạt động. Nếu bạn cung cấp các Vùng lồng nhau với nhiều cấp độ chi tiết, thì lượng dữ liệu lớn hơn chỉ được tải khi điểm nhìn của người dùng kích hoạt lần tải tiếp theo. Phần sau đây về Siêu lớp phủ cung cấp một ví dụ chi tiết.

Phần 1: Tệp gốc

Để chạy ví dụ này, hãy lưu phần đầu tiên như bình thường. Lưu phần thứ hai dưới dạng romaniaRegion.SSH để NetworkLink sẽ tải khu vực khi nó bắt đầu hoạt động.

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

Siêu lớp phủ

Hỏi: Làm cách nào để chia sẻ hình ảnh 47 MB với cả thế giới?
Câu trả lời: Mỗi lần một câu.

Hỏi: Điều gì sẽ xảy ra nếu mọi người đều cố gắng thực hiện việc này?
Đáp: Nếu bạn sử dụng NetworkLink dựa trên khu vực và cung cấp nhiều cấp độ chi tiết cho hình ảnh như được mô tả trong hướng dẫn này, thì không sao cả!

Phần này mô tả cách tạo "siêu lớp phủ" – hệ thống phân cấp Vùng và Liên kết mạng có thể dùng để phân phát hiệu quả một tập hợp hình ảnh lớn. Các ô có độ phân giải thích hợp được tải khi các phần của vùng hình ảnh xuất hiện, trong khi các ô có độ phân giải cao hơn được tải khi điểm quan sát ở gần. Bạn sẽ lãng phí nỗ lực hiển thị hình ảnh 7008 x 6720 pixel trên màn hình 1024 x 768. Hơn nữa, nếu người dùng ở cách xa bề mặt trái đất hàng dặm, thì tất cả dữ liệu đó có thể bị xâm nhập vào một vài pixel và hiệu suất bị mờ. Siêu lớp phủ, chẳng hạn như mẫu của chúng tôi cho thấy DOQQ năm 1991 của Mountain View, California, cho phép bạn tận dụng các Networklinks và khả năng của chúng để xác định (1) liệu một Khu vực nhất định có nằm trong tầm nhìn hay không và (2) liệu kích thước dự kiến của khu vực đó có phù hợp với quan điểm hiện tại hay không. Nếu Khu vực là "đang hoạt động" (cả hai điều kiện đều được đáp ứng), NetworkLink tải dữ liệu được liên kết với Khu vực đó. Nếu Khu vực không hoạt động, sẽ không có dữ liệu nào được tải. Nếu bạn chia nhỏ hình ảnh gốc thành một hệ phân cấp hình ảnh có mức độ chi tiết cao hơn, Google Earth có thể tải hình ảnh phù hợp nhất với chế độ xem hiện tại.

Để xem cách phân cấp hình ảnh này được sử dụng, hãy tải tệp mẫu này vào Google Earth và thử nghiệm bằng cách phóng to và thu nhỏ khu vực quan tâm: Mountain View Historial DOQQ.

 

Ví dụ về cách sử dụng đường liên kết mạng theo khu vực để tải một tập dữ liệu rất lớn một cách hiệu quả. Hình ảnh gốc có kích thước 7008 x 6720 pixel. Chế độ xem xiên xuất hiện ở đây chỉ tải 5 ô nhỏ để đại diện cho hình ảnh này. (Các chuỗi đường màu trắng đã được thêm vào để làm nổi bật ranh giới ô.) Ứng dụng này hiển thị hình ảnh lịch sử của thành phố Mountain View (DOQQ năm 1991).

Chuẩn bị dữ liệu của bạn để có Siêu lớp phủ

Trong siêu lớp phủ mẫu, hình ảnh ban đầu của Mountain View được chia thành hàng trăm GroundOverlays nhỏ. Những lớp phủ này (hay còn gọi là các ô) được sắp xếp theo hệ thống phân cấp năm cấp. Ví dụ: thảo luận ở đây sử dụng hệ phân cấp đơn giản gồm ba cấp và một tập hợp gồm 21 lớp phủ, nhưng các nguyên tắc liên quan đều giống nhau. Lưu ý rằng đây chỉ là một cách để tạo hệ phân cấp các đường liên kết mạng theo khu vực, đồng thời có nhiều cách khác để triển khai cơ chế này.

Để tạo siêu lớp phủ, bạn cần

  1. Chuẩn bị hình ảnh bằng cách chia nhỏ hình ảnh thành các phần có thể quản lý được (nên chọn 256 x 256 pixel) và
  2. Tạo các tệp KML thiết lập Area, Links, Network Links và trong trường hợp này là các tệp chứa GroundOverlays.

Chuẩn bị hình ảnh

Chọn một kích thước chuẩn cho thẻ thông tin của bạn, đó là hình ảnh được chia nhỏ (có độ phân giải khác nhau) mà Google Earth sẽ tải khi các Khu vực liên kết của các hình ảnh đó bắt đầu hoạt động. Ví dụ: chúng tôi sẽ sử dụng kích thước 256 x 256 pixel cho các thẻ thông tin của mình, kích thước đủ nhỏ để có thể quản lý được.

  1. Bắt đầu với hình ảnh gốc, có độ phân giải đầy đủ. Chia nhỏ thành n ô, sau đó chia nhỏ từng ô đó thành n ô.
    Tiếp tục chia nhỏ cho đến khi bạn có các ô có kích thước nhất định (trong ví dụ của chúng tôi là 256 x 256 pixel).

    Giả sử hình ảnh gốc của chúng tôi là 1024 x 1024 pixel.
    Hệ thống phân cấp sau sẽ dẫn đến kết quả khi chúng tôi chia nhỏ chủ đề này.
  2.  

     

  3. Lấy mẫu lại từng ô trong hệ thống phân cấp sang kích thước chuẩn mà bạn đã chọn (ví dụ: 256 x 256 pixel).
    Những ô đã lấy mẫu này sẽ có ít thông tin chi tiết hơn, nhưng sẽ liên kết với Khu vực đang hoạt động ở nhiều
    điểm nhìn xa hơn, do đó người dùng không nhận biết được chi tiết.

 


Sơ đồ dưới đây cho thấy cách điểm nhìn và định nghĩa của các Vùng lồng nhau xác định ô nào thực sự được tải. Ba mức độ chi tiết được cung cấp cho mẫu hình ảnh lớn này. Khi người dùng xem Khu vực từ khoảng cách lớn nhất, Google Earth sẽ hiển thị chế độ xem hình thu nhỏ. Chế độ xem này được kéo dài trên toàn bộ LatLonAltBox (nhưng vì kích thước dự kiến nhỏ — 256 pixel vuông — nên không thực sự mất thông tin hình ảnh). Khi người dùng phóng to cảnh, Khu vực đó được chia thành bốn Khu vực. Mỗi thẻ trong số bốn "ô" này có cùng kích thước với hình thu nhỏ nhưng cung cấp hình ảnh chi tiết hơn.

Nếu người dùng tiếp tục phóng to khu vực, các phần của hình ảnh có độ phân giải đầy đủ sẽ hiển thị, tùy thuộc vào khoảng cách của người dùng di chuyển đến đó. Các khu vực ở xa sẽ giữ lại hình ảnh ít chi tiết hơn đã được tải trước tiên. Trong ví dụ về Mountain View DOQQ, hãy bật "Boxes" và xem Dấu vị trí AB, trong đó sử dụng LineStrings xung quanh các Vùng và hiển thị nhiều cấp của hệ thống phân cấp cùng lúc.

Lưu ý rằng mẫu sử dụng cùng các giá trị cho minLodPixels và maxLodPixels cho tất cả các Vùng (ở tất cả các cấp của hệ thống phân cấp). chính là LatLonAltBox xác định cấp nào của hệ phân cấp sẽ được tải và(các) ô nào trong Khu vực.

Chuẩn bị tệp KML

Đối với mỗi hình ảnh, hãy chuẩn bị một tệp KML liên kết lớp phủ mặt đất với một Vùng và NetworkLink. Mỗi tệp KML trong tập hợp này có các thành phần sau:

  • một Khu vực (với LatLonAltBox, minLodPixels và maxLodPixels để Google Earth có thể xác định Liệu Khu vực đó có đang hoạt động tại một thời điểm bất kỳ hay không)
  • một tập hợp NetworkCác liên kết với các tệp con (các ô ở cấp tiếp theo của hệ thống phân cấp)
  • lớp phủ mặt đất cho Khu vực này

Mẫu này sẽ hiển thị tệp KML cấp cao nhất cho ví dụ về DOQQ của Mountain View. Đối với maxLodPixels, giá trị này chỉ định -1, có ý nghĩa đặc biệt là "đang hoạt động ở kích thước vô hạn". Nếu không có quy cách này, toàn bộ hệ phân cấp có thể không bao giờ được kích hoạt.

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

Tệp sau đây cho thấy một Khu vực trong ví dụ về DOQQ Mountain View (179.SSH). Tệp này chứa năm thẻ href: 4 thẻ tham chiếu đến 4 tệp KML ở cấp tiếp theo của hệ thống phân cấp hình ảnh và 1 thẻ tham chiếu đến tệp hình ảnh dùng cho GroundOverlay cho thẻ thông tin này.

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

Hiển thị đối tượng 3D

Trong KML 2.1, bạn có thể nhập các mô hình 3D — chẳng hạn như toà nhà, cầu, tượng đài và tượng — ở định dạng tệp trao đổi noindex. Các mô hình được xác định độc lập với Google Earth trong không gian toạ độ của riêng họ, bằng cách sử dụng các ứng dụng như DrawUp, 3D Studio Max, Softimage XSI hoặc Maya. Khi mô hình 3D được nhập vào Google Earth, mô hình đó sẽ được dịch, xoay và chia tỷ lệ để vừa với hệ thống toạ độ của Earth. Các mô hình đã tải vào Google Earth có thể được định vị lại và thay đổi kích thước bằng cách sử dụng phần tử <Update>, một tính năng mới khác trong KML 2.1.

Mô hình mẫu

Mô hình được sử dụng trong Google Earth cũng như mọi đối tượng hình học khác (điểm, chuỗi đường kẻ hoặc đa giác). Sau đây là ví dụ đơn giản về một tệp KML nhập mô hình kết cấu.

Tham chiếu <Link> đến mô hình có thể là một tham số tệp tuyệt đối hoặc tương đối hoặc một URL.

Để xem mô hình này, hãy tải tệp MackyBldg.SRC. Đây là tệp lưu trữ chứa tất cả các tệp hoạ tiết và lớp phủ cần thiết cũng như tệp doc.SSH này chứa Mô hình:

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

Mô hình được định vị theo vị trí địa lý bằng thông số kỹ thuật về vĩ độ, kinh độ và độ cao của phần tử Vị trí. Ví dụ này sử dụng các giá trị mặc định cho các phần tử Hướng và Tỷ lệ. Các giá trị này được đưa vào đây để hoàn thiện.

Phần tử Hướng (Orientation) chỉ định chế độ xoay của mô hình xung quanh trục x (tilt), y (roll) và z (heading). Trục y trỏ về phía Bắc và song song với đường kinh độ và trục x hướng Đông và song song với đường vĩ độ. Chế độ xoay được chỉ định theo độ, có phép xoay dương như trong sơ đồ sau.

Tạo tệp lưu trữ .SRC

Bản lưu trữ MRSS là tập hợp các tệp dùng để tạo một bản trình bày KML. Tệp lưu trữ này bao gồm tất cả các tệp cục bộ được tham chiếu trong tệp .SSH, chẳng hạn như hình ảnh, kết cấu và mô hình. Tệp lưu trữ AdX là một gói độc lập không cần phải được lưu trữ trên máy chủ mạng và có thể dễ dàng gửi email và lưu trữ dưới dạng đơn vị. Google Earth có thể đọc trực tiếp các tệp .SSH.SRC.

Tệp doc.SSH và tệp cục bộ mà tệp tham chiếu được nén vào tệp lưu trữ bằng định dạng tệp ZIP. Nhiều ứng dụng có thể tạo định dạng này. WinZip trên hệ thống Windows, Stuffit trên hệ thống Macintosh và zip trên hệ thống Linux hoặc Macintosh là các ứng dụng phổ biến có thể đọc và ghi định dạng ZIP. Bạn cũng có thể làm việc với các tệp lưu trữ zip bằng cách sử dụng trực tiếp Windows Explorer hoặc Mac Finder.

Sau khi bạn tạo tệp .zip, hãy thay đổi đuôi tệp thành .SRC.

Tệp lưu trữ MRSS chứa mô hình kết cấu hoàn chỉnh cho tòa nhà Macky bao gồm các tệp sau:

  • doc.SSH – tệp KML hiển thị ở trên, sẽ nhập mô hình noindex (.dae) và đặt mô hình đó vào Google Earth. Đặt tệp này vào thư mục gốc của tệp AdX (ZIP).
  • textures.txt – dùng để ánh xạ lại các đường dẫn hoạ tiết trong tệp mô hình (tại đây là CU Macky.dae) đến các đường dẫn bên trong tệp MRSS. Đặt tệp này vào thư mục gốc của tệp AdX (ZIP). Mỗi kết cấu được tham chiếu trong CU Macky .dae có một dòng trong textures.txt của biểu mẫu:
<kmz_file_path> <COLLADA_file_path> [<KML_ID_of_model>]

<SRC_file_path> là đường dẫn tương đối trong kho lưu trữ MRSS đến vị trí đặt kết cấu. Đường dẫn này tương ứng với CU Macky.dae, nằm trong thư mục files/ trong kho lưu trữ AdX. Vì kết cấu được lưu trữ trong thư mục files/, nên <SRC_file_path> phải bắt đầu bằng ../files/ .

<noindex_file_path> là tên của tệp kết cấu đúng như tên xuất hiện trong CU Macky .dae.

[KML_ID] là mã nhận dạng KML của mô hình sử dụng hoạ tiết này. Hoạ tiết có thể được nhiều mô hình sử dụng. Thông số này là không bắt buộc.

Dưới đây là phần trích dẫn từ tệp textures.txt của ví dụ:

<../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>
  • Thư mục files/ – chứa các tệp noindex xác định hình dạng, kết cấu và chất liệu của mô hình. Trong ví dụ về Macky Building, thư mục này chứa tệp noindex (CU Macky.dae) cũng như nhiều tệp chứa hình ảnh JPEG dùng để tạo hoạ tiết cho toà nhà (CU-Macky-BrickwallnoCulling.jpg, CU-Macky--Center-StairsnoCulling.jpg, CU_Macky-EasterndetaildoornoCulling.jpg, v.v.).

Ví dụ này minh họa một cách để cấu trúc tệp trong tệp lưu trữ AdX. Thực ra, bạn có thể sắp xếp các tệp theo bất kỳ cấu trúc nào có vẻ hợp lý với mình, giống như khi bạn sắp xếp các tệp đó vào các thư mục hoặc thư mục trên máy tính của mình. Ví dụ: bạn nên đặt tất cả hình ảnh vào thư mục images/. Các tệp tham chiếu tương đối (chẳng hạn như các tệp được tham chiếu trong phần tử <href> dùng trong NetworkLink, Link,Overlay/Icon và Model) được chỉ định tương ứng với tệp doc.sftp. Nếu bạn bao gồm thư mục Hình ảnh, thì thông số kỹ thuật <href> cho hình ảnh của bạn sẽ là: images/myBrickTexture.jpg, images/myMountainOverlay.png, v.v.).

Để sửa đổi dần dữ liệu được tải qua một NetworkLink, hãy sử dụng phần tử Cập nhật, là phần tử con của NetworkLinkControl. Bản cập nhật có thể chứa số lượng phần tử Thay đổi, Tạo và Xóa được xử lý theo thứ tự.

Hình bên dưới minh hoạ trình tự của các sự kiện.

  1. NetworkLink tải tệp KML "gốc" vào Google Earth. Phần tử mà sau đó sẽ được cập nhật cần xác định một id rõ ràng khi được chỉ định lần đầu tiên. Các mã nhận dạng này phải là duy nhất trong một tệp nhất định.
  2. Một NetworkLink khác tải tệp KML thứ hai chứa nội dung cập nhật (mọi kết hợp của Thay đổi, Tạo và Xóa) với(các) đối tượng KML đã được tải. Tệp cập nhật chứa hai tệp tham chiếu để xác định dữ liệu KML gốc:
  3. Để xác định vị trí các đối tượng trong Google Earth, phần tử Cập nhật sử dụng phần tử targetHref để xác định tệp gốc xác định(các) đối tượng cần sửa đổi. Để xác định(các) đối tượng cần sửa đổi hoặc vùng chứa cho các đối tượng mới, các phần tử Thay đổi, Tạo và Xóa chứa thuộc tính targetId tham chiếu đến mã nhận dạng của các đối tượng đó.

Ví dụ về thay đổi

Ví dụ sau đây cho thấy một tập hợp các tệp dữ liệu KML và KML trên mạng. Để chạy mẫu:

  1. Tải tệp Point-load.SSH vào Google Earth. Tệp này chứa NetworkLink tải tệp dữ liệu gốc, chứa hai điểm (Point.SSH).
  2. Tải tệp Update-load.SSH vào Google Earth. Tệp này chứa NetworkLink thứ hai, tải tệp chứa dữ liệu Cập nhật (tên mới cho point123).

Tệp đầu tiên chứa NetworkLink tải tệp dữ liệu, trong đó có hai điểm. Dấu vị trí chứa các điểm này có mã nhận dạng được gán cho chúng. Tệp thứ ba chứa một NetworkLink khác, tệp này sẽ thêm tệp Cập nhật. Phần tử Thay đổi sửa đổi tên của Dấu vị trí cho point123.

Sau đây là 4 tệp được sử dụng trong ví dụ này. Đầu tiên, đây là tệp Point-load.SSH, chứa NetworkLink tải tệp dữ liệu gốc (Point.SSH).

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

Sau đây là tệp Point.SSH chứa dữ liệu gốc (hai điểm). Điểm có mã "point123" là điểm mà chúng tôi sẽ sửa đổi.

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

Tiếp theo là tệp NetworkLink thứ hai (Update-load.sftp). Tệp này tải tệp có chứa thông tin Cập nhật.

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

Và cuối cùng, đây là tệp KML (NetworkLinkControl-Update.sftp) chứa thông tin Cập nhật:

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

Thời gian hết hạn

Theo mặc định, dữ liệu chỉ được tải một lần bởi các Liên kết vào Google Earth. Để ngăn dữ liệu KML trở nên lỗi thời, bạn có thể chỉ định refreshMode của onExpire cho mọi dữ liệu do phần tử <href> tải (trong phần tử Link hoặc Icon). Theo mặc định, tiêu đề hết hạn của HTTP chỉ định thời gian hết hạn. Giờ đây, bạn cũng có thể chỉ định thời gian hết hạn trong KMLNetworkLinkControl. Thời gian được biểu thị dưới dạng ngày giờ XML (xem Giản đồ XML Phần 2: Phiên bản dữ liệu loại thứ hai). Nếu bạn chỉ định cả tiêu đề HTTP và thời gian hết hạn KML, thì thời gian hết hạn KML sẽ được ưu tiên.

Ví dụ 1: Thời gian hết hạn sử dụng thời gian hết hạn của máy chủ HTTP

Ví dụ này chỉ nhằm mục đích minh hoạ. Nó hiển thị GroundOverlay với biểu tượng sẽ đặt refreshModeonExpire Vì không có thời gian hết hạn KML được đặt, ví dụ này sẽ sử dụng thời gian hết hạn của máy chủ 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>

Ví dụ 2: Ví dụ về thời gian hết hạn KML

Ví dụ sau đây sẽ phân phối một Dấu vị trí tại các toạ độ được chọn ngẫu nhiên. Ví dụ này bao gồm một Đường liên kết có refreshModeonExpire. Trong trường hợp này, ngày/giờ hết hạn được chỉ định (trong tập lệnh Python) bằng phần tử KML <expiration> mới. Thời gian hết hạn KML này được ưu tiên hơn bất kỳ thời gian nào có thể đã được chỉ định trong tiêu đề HTTP.

Dưới đây là KML NetworkLink chứa Liên kết với các phần tử <href> và <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>

Đây là tập lệnh Python đặt thời gian hết hạn [ngay + 11 giây] và làm mới toạ độ của Dấu vị trí:

#!/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>'

Thư mục có mục kiểu vô tuyến

Giờ đây, bạn có thể tạo thư mục với các mục kiểu đài bằng cách sử dụng phần tử ListStyle và chỉ định listItemType của radioFolder. Ví dụ sau minh họa cách sử dụng phần tử kiểu danh sách mới.

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

Dưới đây là cách bảng điều khiển Địa điểm hiển thị Thư mục này và các thư mục con Dấu vị trí: