Câu hỏi thường gặp về KML


KML là gì?

KML là một định dạng tệp dùng để hiển thị dữ liệu địa lý trong một trình duyệt Earth, chẳng hạn như Google Earth. Bạn có thể tạo tệp KML để xác định vị trí, thêm lớp phủ hình ảnh và trình bày dữ liệu phong phú theo những cách mới. KML là một tiêu chuẩn quốc tế do Open Geospatial Consortium, Inc. (OGC) duy trì.

Ai sử dụng KML?

Cộng đồng KML rất rộng lớn và đa dạng, như bạn sẽ thấy khi truy cập vào diễn đàn cộng đồng Google Earth. Người dùng thông thường tạo tệp KML để đánh dấu vị trí nhà của họ, ghi lại hành trình và lên kế hoạch cho các chuyến đi bộ đường dài và đạp xe xuyên quốc gia. Các nhà khoa học sử dụng KML để cung cấp bản đồ chi tiết về tài nguyên, mô hình và xu hướng như núi lửa phun trào, kiểu thời tiết, hoạt động động đất và mỏ khoáng sản. Các chuyên gia bất động sản, kiến trúc sư và cơ quan phát triển đô thị sử dụng KML để đề xuất việc xây dựng và hình dung các kế hoạch. Học sinh và giáo viên sử dụng KML để khám phá con người, địa điểm và sự kiện, cả trong quá khứ và hiện tại. Các tổ chức như National Geographic, UNESCO và Smithsonian đều đã sử dụng KML để hiển thị các tập dữ liệu phong phú trên toàn cầu.

Làm cách nào để tạo tệp KML?

Có 3 công cụ chính để tạo tệp KML.

  • Google Earth Đây là công cụ quan trọng nhất mà bạn có thể dùng để tạo tệp KML. Khi dùng Google Earth, bạn có thể tạo
    • Dấu vị trí
    • Đường dẫn
    • Đa giác
    • Lớp phủ hình ảnh
    • Liên kết mạng
    • Mô hình địa điểm
    • Thư mục chứa tất cả các loại tệp trên
    • PhotoOverlays
  • Sau khi bạn tạo một trong các đối tượng này, hãy nhấp chuột phải vào đối tượng đó trong ngăn "Địa điểm" rồi chọn "Sao chép". Sau đó, bạn có thể dán vào một trình chỉnh sửa văn bản hoặc trình chỉnh sửa XML rồi bắt đầu chỉnh sửa.

  • Trình chỉnh sửa văn bản. Sau khi tạo một đối tượng trong Google Earth, hãy dán đối tượng đó vào một trình chỉnh sửa văn bản rồi bắt đầu chỉnh sửa.
  • Trình chỉnh sửa XML. KML là một ngôn ngữ XML để mô tả nội dung địa lý. Trình chỉnh sửa XML là một trình chỉnh sửa văn bản nâng cao cung cấp nhiều công cụ để tạo tài liệu XML, chẳng hạn như tính năng hoàn thành thẻ. Tính năng này đảm bảo rằng bạn đóng các phần tử KML bằng thẻ đóng thích hợp.

Ngoài ra, còn có nhiều công cụ do người dùng trong cộng đồng Google Earth tạo ra. Xem Nhóm hỗ trợ nhà phát triển KML trên Google.

Làm cách nào để mở tệp KMZ?

Tệp KMZ là một bộ sưu tập nén gồm một hoặc nhiều tệp để xem trong Google Earth. Các tệp này được nén bằng định dạng zip và có thể mở bằng bất kỳ công cụ zip thông thường nào, chẳng hạn như "WinZip", "7-Zip" hoặc Công cụ thư mục nén mặc định của Windows XP – đối với Windows, "Stuffit" – đối với Mac OS hoặc "zip" – đối với Mac OS hoặc Linux. Bạn có thể cần thay đổi đuôi tệp từ .kmz thành .zip để công cụ nén có thể nhận dạng tệp. Hãy nhớ chuyển lại thành .kmz trước khi sử dụng lại tệp.

Làm cách nào để tạo tệp KML cho dữ liệu thiên văn học?

Bạn có thể dùng KML để biểu thị dữ liệu thiên văn và tải dữ liệu đó vào Google Sky hoặc WorldWide Telescope của Microsoft. Để biết thêm thông tin, hãy xem bài viết Dữ liệu bầu trời trong KML.

Google Earth hỗ trợ những thẻ KML nào?

Google Earth hỗ trợ tất cả các thẻ KML. Để xem danh sách tất cả các thẻ, hãy xem Quy cách KML.

Tôi có thể tìm Hướng dẫn dành cho nhà phát triển ở đâu?

Bạn có thể xem Hướng dẫn dành cho nhà phát triển tại https://developers.google.com/kml/documentation/topicsinkml.html.


Tại sao các đường kẻ của tôi biến mất?

Khi LineString có clampToGround, đường này sẽ đi theo đường cong của quả địa cầu mà không gặp vấn đề gì. Tuy nhiên, nếu là "relativeToGround", bạn có thể cần thêm nhiều điểm hơn hoặc nó sẽ vẽ các đường dài hơn theo đường thẳng xuyên qua quả địa cầu hoặc địa hình.

Ví dụ: LineString này sẽ đi xuyên qua Trái Đất và biến mất một cách hiệu quả:

<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>Untitled Path</name>
    <LineString>
      <tessellate>0</tessellate>
      <altitudeMode>absolute</altitudeMode>
      <coordinates>-115.415105,40.669016 -37.752364,34.879979</coordinates>
    </LineString>
  </Placemark>
</kml>

Việc thêm nhiều điểm hơn sẽ giảm lượng đường nằm dưới lòng đất. <tessellate> cũng phải là "1" để đảm bảo đường kẻ đi theo địa hình.

<Placemark>
  <name>Untitled Path</name>
  <LineString>
    <tessellate>1</tessellate>
    <altitudeMode>relativeToGround</altitudeMode>
    <coordinates>
      -134.148103,37.752967 -128.917074,38.803008
      -125.166954,39.583592 -122.137625,39.656880
      -120.421783,40.036311 -118.298157,40.235316
      -114.348386,40.631532 -112.670431,40.761033
      -111.916045,40.681939 -110.177711,40.653055
      -109.544331,40.619327 -107.155697,40.642007
      -105.410526,40.421505 -103.192299,40.430138
      -102.853712,40.427904 -98.168302,40.363524
      -97.093391,40.308754 -94.831304,40.479175
      -93.760070,40.395392 -84.913828,39.466651
      -84.414888,39.387332 -81.380660,39.188551
      -80.276261,38.977744 -77.811560,38.872542
      -75.062267,38.521146 -72.006956,38.101733
      -66.67819,37.664687
    </coordinates>
  </LineString>
</Placemark>
Tôi có thể vẽ một hình tròn trong KML không?

Không có hình học Đường tròn trong KML, tuy nhiên, bạn có thể tạo một hình gần giống với đường tròn bằng cách sử dụng LineString với nhiều toạ độ gần nhau. Sau đây là một ví dụ.

Tôi có thể thay đổi LineString thành đường nét đứt hoặc có mũi tên không?

<LineStyle> cho phép bạn thay đổi màu sắc, độ mờ và kích thước của các đường kẻ. Tuy nhiên, tại thời điểm này, KML không hỗ trợ việc thay đổi các loại đường trong KML.

Làm cách nào để ẩn nhãn của Điểm đánh dấu?

Nhãn xuất hiện bên cạnh một Điểm đánh dấu trong Google Earth dựa trên phần tử <name>. Khi đặt phần tử tỷ lệ trong LabelStyle thành 0, bạn có thể ẩn nhãn.

<Style id="hideLabel">
  <LabelStyle>
    <scale>0</scale>
  </LabelStyle>
</Style>
Tại sao tôi gặp lỗi phân tích cú pháp?

Có 2 nguyên nhân chính gây ra lỗi phân tích cú pháp:

  1. Phân biệt chữ hoa chữ thường: KML cũng như mọi ngôn ngữ XML đều phân biệt chữ hoa chữ thường. Điều này đòi hỏi tất cả tên phần tử phải có đúng trường hợp. Ví dụ: <Placemark> chứ không phải <PLACEMARK> <href> chứ không phải <Href> <Link> chứ không phải <lInk>
  2. Thẻ không hoàn chỉnh: Tất cả các phần tử phải bắt đầu và kết thúc bằng cùng một thẻ. Đôi khi, mọi người quên đóng thẻ hoặc bỏ dấu ngoặc nhọn (< hoặc >)

    Ví dụ:
    <name>Atlanta</name> là tên chính xác
    <name>Atlanta không chính xác
    <nameAtlanta</name> không chính xác
    <nameAtlanta<name> không chính xác

Làm cách nào để biết tệp KML mà tôi viết có phải là tệp KML hợp lệ hay không?

KML là một ngôn ngữ đánh dấu XML. Bạn có thể xác thực theo một trong nhiều cách sau:

  • Bạn có thể tải một trình chỉnh sửa XML, chẳng hạn như Oxygen hoặc Netbeans rồi dùng các trình chỉnh sửa đó để xác thực tài liệu. Hãy xem tài liệu về trình chỉnh sửa XML mà bạn chọn. Bạn sẽ cần sơ đồ KML để xác thực.
  • Bạn có thể kiểm tra bằng trình xác thực trực tuyến, chẳng hạn như FeedValidator.org. Trình xác thực này sẽ cho bạn biết mọi lỗi bạn mắc phải và đưa ra một số đề xuất về kiểu.
  • Một số trình chỉnh sửa văn bản cho phép bạn xác thực XML. Ví dụ: bạn có thể sử dụng jEdit để xác thực KML. Hãy xem hướng dẫn này của nhóm Google Earth Outreach.
Có cách nào để kiểm soát nội dung xuất hiện trên màn hình, sao cho nhiều chi tiết hơn xuất hiện khi người dùng ở gần bề mặt Trái Đất hơn không?

Thẻ Khu vực được dùng để kiểm soát những tính năng mà bạn đang hiển thị cho người dùng. Các tài nguyên tốt nhất để tìm hiểu thêm thông tin về các khu vực là

Tôi có thể chỉ định các màu/kiểu khác nhau cho các hình học khác nhau trong phần tử MultiGeometry không?

Phần tử MultiGeometry nhóm các hình học lại với nhau trong cùng một phần tử Placemark. Điều này cho phép các hình học dùng chung cùng một kiểu và xuất hiện dưới dạng một mục trong danh sách, chẳng hạn như ngăn Địa điểm của tôi trong Google Earth.

Kiểu được đặt ở cấp Placemark, bằng cách sử dụng phần tử styleUrl hoặc phần tử Style. Do đó, các hình học riêng lẻ trong Điểm đánh dấu đó không thể có nhiều kiểu.

Một giải pháp thường dùng là tạo một Dấu vị trí riêng cho từng hình học, cho phép mỗi dấu vị trí có một kiểu riêng. Để ngăn chặn sự gia tăng số lượng mục trong danh sách, hãy đặt các mục đó vào một Thư mụcListStyle với listItemType có checkHideChildren. Ví dụ: trong Google Earth, thao tác này sẽ đặt tất cả các Điểm đánh dấu vào cùng một phần tử thư mục trong phần Địa điểm của tôi và ngăn người dùng mở phần tử đó để hiển thị một số lượng lớn các phần tử.


Tôi có thể mở một quả bóng khi mở tệp KML không?

Tại thời điểm này, KML không hỗ trợ khả năng mở một bong bóng khi tệp KML mở ra. Tuy nhiên, nếu sử dụng điểm neo tính năng, bạn có thể tạo một đường liên kết trong hộp chú thích để mở một tệp KML thứ hai hoặc một hộp chú thích khác.

Tôi có thể giữ một bóng mở khi NetworkLink làm mới không?

Tại thời điểm này, KML không hỗ trợ việc duy trì trạng thái của bóng khi NetworkLink làm mới.

Tôi có thể xem tệp KML do người dùng của mình tạo không?

Tại thời điểm này, bạn không thể dùng NetworkLink để ghi lại tệp KML do người dùng tạo trong Google Earth hoặc Maps. Tuy nhiên, bạn có thể sử dụng API JavaScript của Google Maps làm công cụ tạo KML và thu thập thông tin đó trở lại máy chủ. Để biết ví dụ, hãy xem GeoDataStore.

Tôi có thể điều khiển thanh trượt thời gian bằng KML không?

Thanh trượt thời gian trong KML sẽ mở ngay khi bạn mở một tệp KML có phần tử TimeStamp hoặc TimeSpan. Thanh trượt thời gian sẽ tìm tất cả các phần tử TimeStamp và TimeSpan hiện được chọn, sau đó điều chỉnh để phù hợp với tất cả các ngày được biểu thị. KML hiện không cho phép kiểm soát thanh trượt thời gian nhiều hơn, chẳng hạn như đặt thời gian hiện tại đã chọn hoặc chọn độ rộng của khoảng thời gian được biểu thị. Để biết thêm thông tin về cách sử dụng Thời gian, hãy xem bài viết Thời gian và ảnh động.

Làm cách nào để thêm tính tương tác vào KML? Tôi có thể đặt Biểu mẫu vào HTML trong hộp chú thích mô tả KML không?

Tại thời điểm này, KML trong Google Earth chỉ hỗ trợ một phần của HTML mô tả bản trình bày, chứ không mô tả hoạt động tương tác.

Tuy nhiên, bạn có thể tạo biểu mẫu Flash thành KML được dùng trong Google Earth. Để thực hiện việc này, hãy nhúng một ứng dụng Flash vào HTML trong một bóng mô tả KML.


Tôi có thể tự động tạo tệp KML từ bảng tính không?

Có một số cách cơ bản để thực hiện việc này.

  • Tự thực hiện theo cách lập trình bằng cách sử dụng ứng dụng của riêng bạn để phân tích cú pháp tệp CSV và tạo tệp KML từ đó. Để biết ví dụ, hãy xem phần Chuyển đổi tệp CSV sang KML.
  • Sử dụng bảng tính trực tuyến. Ví dụ: Nhóm Tiếp cận cộng đồng của Google Earth đã tạo ra một Spreadsheet Mapper dựa trên Google Trang tính.
  • Sử dụng một trong các công cụ tạo KML từ Excel, chẳng hạn như [link to tek's thread]công cụ này
  • Sử dụng Google Earth Plus hoặc Pro để tải các tệp này lên, sau đó lưu chúng dưới dạng tệp KML hoặc KMZ
Tại sao các tệp KML của tôi không tải xuống đúng cách từ máy chủ web?

Máy chủ web phải cho biết loại tệp mà chúng đang cung cấp. Một số trình duyệt, chẳng hạn như Firefox, sẽ đoán loại tệp. Các trình duyệt khác, chẳng hạn như Internet Explorer, dựa vào chế độ cài đặt Loại MIME của máy chủ web.

Đối với máy chủ Apache, bạn sẽ thêm 2 dòng này vào httpd.conf:

AddType application/vnd.google-earth.kml+xml .kml
AddType application/vnd.google-earth.kmz .kmz

Đối với Internet Information Server của Microsoft, bạn sẽ làm theo các hướng dẫn sau:

IIS phiên bản 6.0:

http://support.microsoft.com/kb/326965

IIS 4.0 và 5.0:

http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/maintain/featusability/mimeiis.mspx

Nếu tự quản lý máy chủ web, bạn phải thay đổi cấu hình của riêng mình. Nếu không, hãy liên hệ với dịch vụ lưu trữ trang web của bạn và yêu cầu họ thực hiện những thay đổi này.


Tại sao nội dung trong bóng thoại của tôi cho biết có thể đang sử dụng URL hình ảnh có định dạng không chính xác?

Một thay đổi gần đây trong Google Earth đã thay đổi cách xử lý các đường liên kết cho nội dung bên trong một bóng tính năng để làm rõ hơn hành vi chưa được chỉ định trước đó. Do đó, khi nhấp vào một đường liên kết trong tệp KMZ có cấu trúc đường liên kết không hợp lệ, người dùng sẽ được chuyển đến một trang có nội dung "Đường liên kết đã đưa bạn đến đây có thể có định dạng không chính xác. Nhấp vào đường liên kết bên dưới để thử dùng chế độ cũ." Nếu thấy thông báo này, bạn nên thay đổi cấu trúc nội dung KML/KMZ để đảm bảo khả năng tương thích hoàn toàn với các phiên bản Google Earth trong tương lai.

Hãy xem bài viết này để biết thêm thông tin, bao gồm cả thông tin chi tiết về cách tái cấu trúc nội dung KMZ một cách phù hợp.

Những nội dung nào chịu ảnh hưởng của các quy tắc mới về đường dẫn tương đối?

Hiện tại, chỉ những đường liên kết (URL) trong nội dung của bóng chú thích tính năng mới chịu ảnh hưởng của thay đổi này. Điều này bao gồm thẻ <description> và <text> bên trong <BallonStyles>. Tuy nhiên, các phiên bản Google Earth trong tương lai có thể hướng đến sự nhất quán hơn, vì vậy, bạn nên luôn tránh sử dụng thư mục mẹ làm URL cơ sở cho một đường liên kết tương đối trong nội dung KMZ.


Tệp KML trong phần Địa điểm của tôi trên Google Earth có được gửi đến máy chủ của Google không?

Không. KML do người dùng tạo trong Google Earth hoặc tải vào Google Earth sẽ không được gửi đến Google. Mọi hoạt động xử lý và lưu trữ dữ liệu đó đều được thực hiện trên máy cục bộ.

Trở lại đầu trang