Mục lục
- Giới thiệu
- Tem thời gian và dữ liệu GPS
- Khoảng thời gian
- Tạo hiệu ứng cho mô hình
- Cách chỉ định thời gian
- Thời gian với AbstractView
- Ví dụ: Hiển thị chuyển động của một điểm dọc theo đường dẫn
- Ẩn các thành phần con của ảnh động
- Ví dụ: Tạo ảnh động cho lớp phủ mặt đất
Giới thiệu
Mọi Tính năng trong KML đều có thể có liên kết với dữ liệu thời gian. Dữ liệu thời gian này có tác dụng hạn chế khả năng hiển thị của tập dữ liệu trong một khoảng thời gian hoặc thời điểm nhất định. Mặc dù tập dữ liệu hoàn chỉnh được tìm nạp khi tệp KML được tải, thanh trượt thời gian trong giao diện người dùng của Google Earth sẽ kiểm soát phần nào của dữ liệu hiển thị.
KML có hai phần tử thời gian, được lấy từ TimePrimitive:
- TimeStamp – chỉ định một khoảnh khắc trong một tính năng cụ thể
- TimeSpan – chỉ định thời gian <begin> và <end> cho một Tính năng cụ thể
Những phần tử này cũng được sao chép vào vùng chứa tên phần mở rộng của Google, như:
- gx:TimeStamp
- gx:TimeSpan
Điều này cho phép các phần tử được đưa vào dưới dạng phần tử con của AbstractView. Tìm hiểu thêm trong phần Thời gian có AbstractView bên dưới.
Khi mở một tệp KML có chứa một Tính năng có phần tử TimePrimitive, Google Earth sẽ hiển thị thanh trượt thời gian. (Google Earth tự động chọn đơn vị đầu và cuối cho thanh trượt thời gian dựa trên thời gian sớm nhất và mới nhất có trong Tính năng KML trong một tệp cụ thể.) Sử dụng thanh trượt và nút phát, người dùng có thể "phát" toàn bộ trình tự hoặc có thể chọn từng khoảng thời gian để hiển thị.
Để bật thanh trượt thời gian trong Google Earth, hãy chuyển đến Chế độ xem > Hiển thị thời gian và chọn Tự động hoặc Luôn luôn. (Mặc định là Automatically.) Các mẫu này giả định rằng tuỳ chọn "Hạn chế thời gian ở thư mục đang chọn" đang TẮT (mặc định).
Tem thời gian và dữ liệu GPS
Dấu thời gian thường được liên kết với Dấu vị trí của điểm. Hiển thị biểu tượng Dấu vị trí một cách ngắn gọn tại mỗi vị trí dọc theo một đường dẫn có tác dụng tạo ảnh động cho Dấu vị trí. Kỹ thuật này đặc biệt hữu ích trong việc tạo hiển thị KML cho dữ liệu được nhập từ thiết bị theo dõi GPS. Để đạt được hiệu quả tốt nhất, bạn nên chụp TimeStamps cho một tập dữ liệu nhất định theo định kỳ.
Dấu thời gian thường được sử dụng cho các tập dữ liệu gọn nhẹ được hiển thị ở nhiều vị trí (ví dụ: Dấu vị trí di chuyển dọc theo một đường dẫn). Trong những trường hợp như vậy, nhiều Tính năng thường được hiển thị cùng lúc với cùng lúc được hiển thị ở các vị trí khác nhau. Thanh trượt thời gian trên giao diện người dùng của Google Earth bao gồm một khoảng thời gian chọn "lát" thanh trượt thời gian và di chuyển từ đầu đến cuối của khoảng thời gian.
Bằng kỹ thuật này, Trường Châu Âu Đức Singapore đã gắn thẻ cho một con cá mập voi, có tên trìu mến là "Schroeder", bằng một thiết bị GPS và sau đó theo dõi tiến trình của cá mập xuyên Ấn Độ Dương tới lục địa Châu Phi trong nhiều tháng. Người xem quan tâm có thể xem tiến độ của Schroeder bằng cách sử dụng Google Earth để xem các tệp AdX được đăng trên trang web của nhóm nghiên cứu.
Trong tệp KML này, đường dẫn màu đỏ cho thấy hành trình của Schroeder cho đến khi anh mất liên lạc với nhóm. Các chấm màu vàng (biểu tượng Dấu vị trí) hoạt động dọc theo đường dẫn này theo dòng thời gian hiển thị ở đầu màn hình. Các mũi tên màu xanh dương là một phần của lớp phủ mặt đất hiển thị hướng của các mẫu sóng. Các nhà nghiên cứu tin rằng sự thay đổi đột ngột về hướng của Schroeder bị ảnh hưởng bởi các mẫu sóng, dẫn đến dòng chảy của sinh vật phù du chính là nguồn dinh dưỡng chính của ông.
Trong ví dụ này, Dấu vị trí điểm chứa phần tử <TimeStamp>. LineString màu đỏ và GroundOverlay màu xanh dương không có các thành phần thời gian liên kết với chúng (chúng luôn có mặt).
![Biểu tượng KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=5&hl=vi)
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/schroederPath.gif?authuser=5&hl=vi)
Khoảng thời gian
Để hiển thị các đa giác và lớp phủ hình ảnh chuyển đổi ngay lập tức từ một lớp phủ sang lớp phủ tiếp theo, bạn có thể chỉ định điểm bắt đầu và kết thúc của khoảng thời gian bằng cách sử dụng đối tượng TimeSpan. Kỹ thuật này thường được dùng để hiển thị các thay đổi ở đa giác và hình ảnh như lớp phủ mặt đất, ví dụ như để hiển thị đường rút lui của sông băng, sự lây lan của tro núi lửa và mức độ nỗ lực khai thác gỗ trong những năm qua.
TimeSpans được sử dụng trong trường hợp chỉ có một Tính năng được xem tại một thời điểm nhất định và bạn muốn chuyển đổi ngay lập tức từ một hình ảnh sang hình ảnh tiếp theo. Hãy đảm bảo rằng TimeSpans liền nhau và không chồng chéo nhau. Đối với tập dữ liệu có TimeSpans, thanh trượt thời gian giao diện người dùng Google Earth bao gồm một con trỏ di chuyển mượt mà dọc theo thanh trượt thời gian từ đầu đến cuối của khoảng thời gian. Chuyển đổi từ Tính năng này sang Tính năng khác là thay đổi tức thì.
Brian Flood đã tạo ra một bản trình bày KML thú vị cho thấy sự phát triển của Hoa Kỳ khi các tiểu bang được thêm vào liên minh. Tệp KML hiển thị ở đây sử dụng các đối tượng TimeSpan chỉ có điểm bắt đầu để trạng thái (đa giác) vẫn còn trong màn hình sau khi được thêm.
![Biểu tượng KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=5&hl=vi)
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/statehood.gif?authuser=5&hl=vi)
Tạo hiệu ứng mô hình
Một ví dụ khác về cách sử dụng phần tử TimeSpan là ảnh động của Eye Eye do James Individualord tạo. Màn hình này sử dụng mô hình bánh xe đu quay khổng lồ của London Eye. Mô hình được tham chiếu trong một chuỗi dấu vị trí, mỗi dấu vị trí sử dụng một chế độ xoay tăng dần cho mô hình và một Khoảng thời gian cho biết khoảng thời gian hiển thị Dấu vị trí đó.
![Biểu tượng KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=5&hl=vi)
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/londonEye.gif?authuser=5&hl=vi)
Cách chỉ định thời gian
dateTime được dựa trên thời gian Giản đồ XML (xem Giản đồ XML Phần 2: Phiên bản dữ liệu loại thứ hai). Giá trị này có thể được biểu thị bằng yyyy-mm-ddThh:mm:sszzzzzz, trong đó T là dấu phân cách giữa ngày và giờ, và múi giờ là Z (đối với múi giờ UTC) hoặc zzzzzz, đại diện cho ±hh:mm tương ứng với UTC. Ngoài ra, giá trị chỉ có thể được biểu thị dưới dạng ngày. Hãy xem phần tử <TimeStamp> trong Tài liệu tham khảo KML 2.2 để biết ví dụ.
Thời gian với AbstractView
Google Earth 5.0 hỗ trợ vùng chứa tên phần mở rộng của Google, bao gồm cả các phần tử <gx:TimeSpan>
và <gx:TimeStamp>
. Đây là bản sao của các phần tử <TimeSpan>
và <TimeStamp>
, và có thể dùng để thêm thông tin thời gian vào các phần tử <LookAt>
và <Camera>
.
Việc đưa thông tin thời gian vào AbstractView sẽ ảnh hưởng đến các Tính năng được hiển thị, ánh sáng mặt trời và hình ảnh lịch sử. Việc sử dụng <gx:TimeSpan>
hoặc <gx:TimeStamp>
trong AbstractView cho phép bạn bay đến một vị trí cụ thể trong không gian và thời gian trong Google Earth.
Sau khi bạn chỉ định thời gian, Google Earth sẽ tiếp tục sử dụng thời gian đó để quyết định hình ảnh, Tính năng và ánh sáng mặt trời nào sẽ hiển thị, cho đến khi chỉ định một thời gian khác. KML không hỗ trợ khái niệm "hiện tại", vì vậy, để trở lại thời điểm hiện tại trong Google Earth, bạn nên chỉ định <when>2999</when>
(hoặc bất kỳ ngày nào khác trong tương lai) trong <gx:TimeStamp>
.
Khi sử dụng các phần tử trong vùng chứa tên trong phần mở rộng của Google, trước tiên, bạn phải thêm đúng URI không gian tên vào phần tử <kml>
mở đầu trong tệp KML:
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
Lưu ý rằng không gian tên tiện ích mở rộng có tiền tố gx có thể không được hỗ trợ bởi tất cả trình duyệt địa lý. Tính năng này được Google Earth 5.0 hỗ trợ.
Ví dụ:
![Biểu tượng KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=5&hl=vi)
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"> <Document> <name>Views with Time</name> <open>1</open> <description> In Google Earth, enable historical imagery and sunlight, then click on each placemark to fly to that point in time. </description> <Placemark> <name>Sutro Baths in 1946</name> <Camera> <gx:TimeStamp> <when>1946-07-29T05:00:00-08:00</when> </gx:TimeStamp> <longitude>-122.518172</longitude> <latitude>37.778036</latitude> <altitude>221.0</altitude> <heading>70.0</heading> <tilt>75.0</tilt> </Camera> </Placemark> <Placemark> <name>Palace of Fine Arts in 2002</name> <Camera> <gx:TimeStamp> <when>2002-07-09T19:00:00-08:00</when> </gx:TimeStamp> <longitude>-122.444633</longitude> <latitude>37.801899</latitude> <altitude>139.629438</altitude> <heading>-70.0</heading> <tilt>75</tilt> </Camera> </Placemark> </Document> </kml>
Ví dụ: Hiển thị chuyển động của một điểm dọc theo đường dẫn
Ví dụ sau đây minh họa việc sử dụng phần tử TimeStamp để hiển thị chuyển động của Dấu vị trí dọc theo đường dẫn. Dấu thời gian được lấy mẫu chặt chẽ, vì vậy, biểu tượng Dấu vị trí hoạt ảnh dọc theo đường dẫn khi phát tệp KML.
![Biểu tượng KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=5&hl=vi)
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Points with TimeStamps</name>
<Style id="paddle-a">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/A.png</href>
</Icon>
<hotSpot x="32" y="1" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="paddle-b">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/kml/paddle/B.png</href>
</Icon>
<hotSpot x="32" y="1" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Style id="hiker-icon">
<IconStyle>
<Icon>
<href>http://maps.google.com/mapfiles/ms/icons/hiker.png</href>
</Icon>
<hotSpot x="0" y=".5" xunits="fraction" yunits="fraction"/>
</IconStyle>
</Style>
<Style id="check-hide-children">
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<styleUrl>#check-hide-children</styleUrl>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:02Z</when>
</TimeStamp>
<styleUrl>#paddle-a</styleUrl>
<Point>
<coordinates>-122.536226,37.86047,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:20Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536422,37.860303,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:05:43Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536688,37.860072,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:04Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536923,37.859855,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:24Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537116,37.85961000000001,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:06:46Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537298,37.859336,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:07Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537469,37.85907,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:27Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537635,37.858822,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:07:51Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.537848,37.858526,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:11Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538044,37.858288,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:33Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538307,37.858064,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:08:56Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.538601,37.857837,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:09:19Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.53887,37.857604,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp>
<when>2007-01-14T21:09:45Z</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.539052,37.857262,0</coordinates>
</Point>
</Placemark> . . .
</Document>
</kml>
Ẩn các thành phần con của ảnh động
Nói chung, trong những ví dụ như thế này, bạn nên đưa phần tử ListStyle vào Tài liệu và chỉ định checkHideChildren
để các dấu vị trí riêng lẻ không xuất hiện trong thành phần hiển thị danh sách. Mã sau đây bao gồm phần tử bổ sung này. Lưu ý rằng mặc dù Tài liệu xác định phần tử Kiểu, nhưng Tài liệu cũng cần tham chiếu ListStyle trong phần tử <styleUrl>.
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name> . . .
<Style id="check-hide-children"> <!-- define the style for the Document -->
<ListStyle>
<listItemType>checkHideChildren</listItemType>
</ListStyle>
</Style>
<styleUrl>#check-hide-children</styleUrl> <!-- add the style to the Document -->
<Placemark>
<TimeStamp>
<when>2007-01-12</when>
</TimeStamp>
<styleUrl>#hiker-icon</styleUrl>
<Point>
<coordinates>-122.536422,37.860303,0</coordinates>
</Point>
</Placemark> . . .
</Document>
</kml>
Ví dụ: Tạo ảnh động cho lớp phủ mặt đất
Để tạo ảnh động cho đa giác và lớp phủ mặt đất, bạn thường sẽ sử dụng phần tử TimeSpan như trong ví dụ sau. Tệp KML này chứa hình ảnh GroundOverlay cho mỗi tháng, vì vậy bạn có thể phát ảnh động và xem phong cảnh thay đổi như thế nào theo mùa. Dưới đây là phần trích dẫn mã cho thấy ba tháng đầu năm:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2"> <!-- TimeSpan is recommended for GroundOverlays -->
<Folder>
<name>BMNG-12months</name>
<GroundOverlay>
<name>Blue Marble - Jan</name>
<TimeSpan>
<begin>2004-01</begin>
<end>2004-02</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Jan.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>Blue Marble - Feb</name>
<TimeSpan>
<begin>2004-02</begin>
<end>2004-03</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Feb.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay>
<GroundOverlay>
<name>Blue Marble - Mar</name>
<TimeSpan>
<begin>2004-03</begin>
<end>2004-04</end>
</TimeSpan>
<Icon>
<href>http://mw1.google.com/mw-earth-vectordb/kml-samples/bmng12/files/BMNG-Mar.jpg</href>
</Icon>
<LatLonBox>
<north>90</north>
<south>-90</south>
<east>180</east>
<west>-180</west>
</LatLonBox>
</GroundOverlay> . . . </Folder> </kml>
![Biểu tượng KML](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/kml_feed_small.png?authuser=5&hl=vi)
Sau đây là ảnh chụp màn hình của ví dụ này:
![](https://developers-dot-devsite-v2-prod.appspot.com/static/kml/documentation/images/bluemarble.gif?authuser=5&hl=vi)