Câu hỏi chung
Tôi gặp vấn đề, tôi cần trợ giúp!
Đăng câu hỏi theo hướng dẫn này, cung cấp nhiều thông tin nhất có thể (xem hướng dẫn của Stack Overflow về cách đặt câu hỏi hay). Điều này thường có nghĩa là:
gửi đường liên kết đến một tập lệnh trong Trình soạn thảo mã (nhấp vào nút "Lấy đường liên kết" để lấy đường liên kết)
chia sẻ mọi thành phần cần thiết để chạy tập lệnh
đối với các tác vụ hàng loạt không thành công, hãy báo cáo mã nhận dạng của tác vụ không thành công. Mã việc cần làm có dạng như sau:
4C25GIJBMB52PXTEJTF4JLGL. Bạn có thể tìm thấy các tác vụ này trong thẻ Task (Tác vụ) của Trình soạn thảo mã. Tìm hiểu thêm.
Tôi có thể đọc về cấu trúc của Earth Engine ở đâu?
Hãy xem bài viết này: Gorelick và cộng sự 2017.
Có hướng dẫn nào về Earth Engine không phải do Google tạo mà tôi nên tham khảo không?
Xem các trang EDU và Tài nguyên đào tạo.
Có hướng dẫn nào về viễn thám nên xem không?
Hãy xem khoá học miễn phí về EE của Ujaval Gandhi, trong đó có một video giới thiệu về viễn thám.
Lập trình Earth Engine
Một số lỗi lập trình thường gặp là gì?
Xem hướng dẫn gỡ lỗi.
Tại sao tôi gặp lỗi "... không phải là một hàm"?
Lỗi này xảy ra khi Earth Engine không tìm thấy phương thức được gọi. Hãy kiểm tra những nguyên nhân phổ biến sau đây:
Chính tả hoặc phân biệt chữ hoa chữ thường: Các phương thức có phân biệt chữ hoa chữ thường. Xác minh chính tả theo Tài liệu tham khảo API.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
Thiếu ép kiểu: Giá trị được trả về từ các hàm như .get() là các thực thể ee.ComputedObject chung và phải được truyền một cách rõ ràng. Xem phần Truyền kiểu đối tượng không xác định.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
Kết hợp các phương thức của ứng dụng và máy chủ: Đảm bảo bạn không sử dụng các phương thức JavaScript hoặc Python tiêu chuẩn (như .push() hoặc .append()) trên các đối tượng Earth Engine. Xem phần Tránh kết hợp các hàm máy khách và máy chủ.
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
Phương thức không dùng được: Nếu đối tượng được nhập đúng cách và phương thức tồn tại trong tài liệu hoặc đã hoạt động trước đó nhưng hiện không hoạt động, hãy báo cáo lỗi.
Tại sao tôi không thể sử dụng phép toán cơ bản như ee.Image("image") * 2?
Trong EE, bạn không nên kết hợp các đối tượng hoặc thao tác phía máy chủ và phía máy khách. Tất cả các thao tác trên đối tượng EE đều được thực hiện phía máy chủ. Mọi phép tính phía máy khách sẽ không thực hiện được những gì bạn muốn. Hãy xem trang này để biết thêm chi tiết.
Làm cách nào để sử dụng vòng lặp for hoặc câu lệnh if/else?
Lập trình Earth Engine được thực hiện bằng ngôn ngữ chức năng, vì vậy, các vòng lặp và thao tác có điều kiện phải được thể hiện bằng các khái niệm tương đương như map hoặc filter. Hãy xem
trang này để biết thêm thông tin.
Làm cách nào để hiển thị nhãn văn bản trong hình ảnh hoặc video?
Không có tính năng hỗ trợ tích hợp sẵn cho nhãn văn bản, nhưng bạn có thể:
- Sử dụng gói JS của bên thứ ba. Xem ví dụ
- Sử dụng gói Python của bên thứ ba geemap.
- Sử dụng QGIS để đưa hình ảnh EE vào bằng cách dùng trình bổ trợ EE QGIS
Tôi có thể sử dụng một số bảng màu tiêu chuẩn không?
Sử dụng gói JS của bên thứ ba ee-palettes.
Làm cách nào để tạo trang web riêng sử dụng Earth Engine?
Sử dụng Ứng dụng Earth Engine cho các ứng dụng cơ bản. Trong những trường hợp phức tạp hơn, bạn có thể xây dựng các ứng dụng App Engine dựa trên EE.
Mã bản đồ hoạt động như thế nào?
Mã bản đồ (được gọi là mapid trong API) là các khoá cho phép ứng dụng tìm nạp các ô bản đồ. Mỗi mã nhận dạng là một hàm băm được tạo bằng cách cung cấp biểu thức hình ảnh cho điểm cuối getMapId. Mã nhận dạng thu được là các khoá trỏ đến cả biểu thức hình ảnh và thông tin xác thực người dùng sẽ được dùng để tạo thẻ thông tin ở giai đoạn sau.
Khi yêu cầu ô bản đồ, bạn cần chỉ định vị trí của ô (x, y, zoom) cũng như mapid (khoá cho hình ảnh và thông tin xác thực). Bạn có thể sử dụng lại cùng một mã nhận dạng để tải nhiều ô bản đồ. Không có giới hạn về việc sử dụng lại khoá mapid, nhưng khoá sẽ hết hạn sau vài giờ. Chúng tôi không công bố khung thời gian cụ thể về thời gian tồn tại của mã nhận dạng, nhưng mọi mã bạn viết phải có khả năng thích ứng với việc mã nhận dạng hết hạn.
Việc tạo các mã nhận dạng này bao gồm việc lưu trữ một lượng nhỏ dữ liệu và xác thực thông tin xác thực, vì vậy, tốt nhất bạn nên sử dụng lại các mã nhận dạng này càng lâu càng tốt. Không có hạn mức API nào liên kết cụ thể với điểm cuối getMapId, nhưng mọi quy trình công việc liên quan đến việc tạo đối tượng mapid ở tốc độ gần bằng tốc độ tìm nạp thẻ thông tin có thể đang gặp vấn đề. Earth Engine không có điểm cuối API để xoá, liệt kê hoặc quản lý các mã nhận dạng này, vì đây là tài nguyên tạm thời.
Tại sao ee.Algorithms.If() in cả trường hợp đúng và sai?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
Thuật toán If() hoạt động giống như mọi thuật toán khác trên Earth Engine, trong đó tất cả đối số của thuật toán phải được đánh giá trước khi thuật toán có thể chạy.
Thuật toán nhận được cả kết quả trueCase và falseCase, sau đó chọn và trả về một kết quả dựa trên đối số condition, nhưng cả hai đường dẫn đều phải được thực thi để các giá trị đó được truyền vào thuật toán ngay từ đầu.
Tôi nhận được thông báo lỗi "Kích thước tải trọng yêu cầu vượt quá giới hạn"
Bạn đang cố gửi một yêu cầu rất lớn đến Earth Engine. Điều này thường xảy ra khi mã sử dụng nhiều vòng lặp "for" phía máy khách hoặc tạo một FeatureCollection từ nhiều đối tượng hình học. Trong trường hợp sau, thay vì tạo các hình học như vậy trong tập lệnh, hãy tạo một tệp CSV chứa các hình học đó và tải tệp đó lên một thành phần bảng.
ee.Image.clip() và ee.Filter.bounds() khác nhau thế nào?
Xem chuỗi bài viết này trên GIS Stack Exchange.
Hàm ee.Image.clip() che các pixel không giao nhau với một ee.Geometry hoặc ee.Feature nhất định, khiến các pixel đó trở nên trong suốt trong hình ảnh trực quan và bị loại trừ trong các phép tính. Bạn có thể hình dung việc này giống như cắt bớt các pixel khỏi hình ảnh.
Hàm ee.Filter.bounds() lọc các đối tượng ee.Image ra khỏi ee.ImageCollection dựa trên giao điểm của hình ảnh với ee.Geometry hoặc ee.Feature. Hàm này dùng để giới hạn
phạm vi phân tích chỉ cho những hình ảnh giao nhau với một vùng nhất định,
nhờ đó giúp tối ưu hoá biểu thức.
Làm cách nào để chuyển đổi điểm ảnh hình ảnh thành tập hợp đối tượng, với một đối tượng cho mỗi điểm ảnh?
Sử dụng hàm ee.Image.sample(). Xem ví dụ về cách sử dụng trên trang tham khảo API của hàm.
ee.ImageCollection.merge() và ee.ImageCollection.combine() khác nhau thế nào?
Hàm ee.ImageCollection.merge() hợp nhất tất cả hình ảnh từ hai tập hợp thành một tập hợp, bất kể hình ảnh tương ứng của chúng có dải, siêu dữ liệu, CRS hoặc tỷ lệ trùng khớp hay không. Đây là phép hợp của hai tập hợp. Phương thức combine() kết hợp các dải hình ảnh khớp nhau từ hai tập hợp thành một tập hợp duy nhất. Hình ảnh trùng khớp có cùng mã nhận dạng (thuộc tính system:index). Đây là phép nối trong của hai tập hợp dựa trên mã nhận dạng hình ảnh, trong đó các dải từ hình ảnh khớp được kết hợp. Đối với hình ảnh trùng khớp, các dải từ hình ảnh phụ sẽ được thêm vào hình ảnh chính (bạn có thể ghi đè). Nếu không có hình ảnh nào khớp, thì một tập hợp trống sẽ được trả về.
Làm cách nào để lọc bộ sưu tập hình ảnh theo nhiều khoảng thời gian?
Xem chuỗi bài viết này trên GIS Stack Exchange.
merge() nhiều tập hợp cùng nhau hoặc sử dụng ee.Filter.or().
Làm cách nào để tạo hộp giới hạn xung quanh một điểm nhất định?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
Data Catalog
Bạn có thể thêm tập dữ liệu X không?
Gửi lỗi yêu cầu tập dữ liệu theo hướng dẫn yêu cầu tập dữ liệu.
Bạn cũng có thể tải dữ liệu lên thư mục gốc của Earth Engine. Xem phần Nhập dữ liệu đường quét và Nhập dữ liệu bảng.
Một tập dữ liệu hiện có có phiên bản mới
Gửi lỗi về tập dữ liệu theo hướng dẫn yêu cầu tập dữ liệu và cho biết rằng bạn đang yêu cầu cập nhật tập dữ liệu.
Tập dữ liệu hiện có không được cập nhật hoặc thiếu thành phần
Trước khi báo cáo vấn đề, hãy xác minh (nếu có thể) rằng các tài sản đã chọn thực sự tồn tại trên trang web của nhà cung cấp tập dữ liệu. Hãy xem hướng dẫn về hình ảnh bị thiếu để biết thêm thông tin.
Nếu bạn đang tìm một tài sản bằng cách lọc ImageCollection, hãy đảm bảo rằng các bộ lọc của bạn không quá nghiêm ngặt.
Cụ thể, hãy lưu ý rằng:
ESA không tạo dữ liệu Sentinel-2 SR (dữ liệu Cấp 2) cho các cảnh Cấp 1 ban đầu.
Landsat không có phạm vi bao phủ trên toàn thế giới trước năm 2000.
Tập dữ liệu hiện có chứa giá trị không chính xác
Đăng bài trên diễn đàn dành cho nhà phát triển. Thêm một tập lệnh phóng to thành phần về độ phân giải ban đầu và cho thấy rõ những giá trị không chính xác. Giải thích chính xác vị trí bạn quan sát thấy giá trị thay thế.
Tôi có thể hỏi về tập dữ liệu ở đâu khác?
Nếu bạn có thắc mắc về các tập dữ liệu của NASA, hãy xem diễn đàn Dữ liệu Trái Đất của NASA.
Nếu bạn có câu hỏi về các hộp công cụ hoạt động trên tập dữ liệu Copernicus, hãy xem các diễn đàn S1, S2 và S3.
Danh mục EE lớn đến mức nào?
Tính đến tháng 10 năm 2023, danh mục này chứa hơn 1.000 tập dữ liệu. Dung lượng trên đĩa của dữ liệu này là hơn 90 petabyte (sau khi tính đến phương pháp nén không tổn hao).
Dữ liệu trong EE được cập nhật bao lâu một lần?
Thông thường, tất cả các tập dữ liệu đang diễn ra đều được cập nhật ít nhất hằng ngày (mặc dù không phải tất cả các tập dữ liệu như vậy đều có dữ liệu mới mỗi ngày). Một số tập dữ liệu được cập nhật vài lần một ngày. Tuy nhiên, không có chính sách nào đảm bảo sự hiện diện của các thành phần mới nhất trong danh mục.
Làm cách nào để xem nội dung của danh mục EE theo phương thức lập trình?
Danh sách tập dữ liệu được xuất ở định dạng STAC sang một bộ chứa Google Cloud Storage gs://earthengine-stac.
Tệp mục nhập là catalog.json.
Tôi có thể sử dụng dữ liệu hoặc hình ảnh của Google Maps để phân tích không?
Google không cấp phép hoặc bán dữ liệu bản đồ cơ sở cho mục đích phân tích.
Làm cách nào để tìm ngày một tài sản được nhập?
Thuộc tính thành phần 'system:version' là dấu thời gian nhập, được định dạng dưới dạng micrô giây kể từ thời gian Unix. Dưới đây là ví dụ chuyển đổi dấu thời gian nhập của hình ảnh Landsat sang định dạng mà con người có thể đọc được.
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
Danh mục Earth Engine có siêu dữ liệu JSON-LD không?
Có, siêu dữ liệu JSON-LD được nhúng trong các trang HTML của danh mục. Ví dụ: Trang Sentinel-2 chứa khối sau:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
Thuật toán simpleComposite được triển khai như thế nào?
Cách triển khai phía máy chủ tương đương với mã JavaScript này.
Làm cách nào để tạo ảnh tổng hợp không có mây từ dữ liệu phản xạ bề mặt của Landsat?
Dữ liệu Landsat Cấp 2 (độ phản xạ bề mặt) có một số dải chất lượng có thể dùng để che mây và các cấu phần phần mềm hình ảnh không mong muốn khác. Ví dụ về cách sử dụng các dải này để xử lý hình ảnh Landsat 8 SR và tạo ảnh tổng hợp không có mây trung bình được cung cấp trong bài đăng này trên GIS Stack Exchange. Quy trình tương tự được dùng để tạo một ảnh tổng hợp không có mây để sử dụng trong các ví dụ về phân loại có giám sát trong Hướng dẫn dành cho nhà phát triển.
Có cần hài hoà hệ số phản xạ bề mặt Landsat giữa các cảm biến không?
Roy et al., 2016 bao gồm một bản phân tích về sự khác biệt về hệ số phản xạ giữa Landsat 7-8 TOA và hệ số phản xạ bề mặt. Họ đã công bố hệ số OLS và RMA để độc giả có thể chuyển đổi giá trị phản xạ của dữ liệu của một cảm biến sang một cảm biến khác. Dòng cuối cùng của bài báo nêu rõ: "Mặc dù sự khác biệt về cảm biến là khá nhỏ, nhưng chúng có thể có tác động đáng kể tuỳ thuộc vào ứng dụng dữ liệu Landsat". Tuy nhiên, phân tích này dựa trên dữ liệu trước khi thu thập.
Những điểm cải tiến trong quá trình xử lý lại của Bộ sưu tập 1 và Bộ sưu tập 2 có thể ảnh hưởng đến mối quan hệ giữa các cảm biến, nhưng theo chúng tôi biết, chưa có phân tích nào tương tự như Roy và cộng sự (2016) cho dữ liệu của Bộ sưu tập 1 hoặc Bộ sưu tập 2. Mặc dù không có bản phân tích chính thức, nhưng dường như có sự đồng thuận chung giữa những người dùng Landsat có tầm ảnh hưởng rằng không cần hiệu chỉnh dữ liệu cho Bộ sưu tập 2, Cấp 2 (độ phản xạ bề mặt). Ví dụ: trong thư trả lời câu hỏi về nhu cầu hài hoà hoá Bộ sưu tập 2, Cấp 2, Mike Wulder thuộc Nhóm Khoa học Landsat lưu ý rằng tuỳ thuộc vào bản chất của ứng dụng mà bạn quan tâm (bao gồm cả việc lập bản đồ lớp phủ đất và phát hiện thay đổi), các sản phẩm phản xạ bề mặt của Bộ sưu tập 2 rất phù hợp và đáng tin cậy mà không cần điều chỉnh giữa các cảm biến.
Làm cách nào để che mây và bóng mây trong hình ảnh MSS?
Mô-đun msslib của bên thứ ba cho Trình soạn thảo mã JavaScript bao gồm một cách triển khai thuật toán MSScvm, cũng như các hàm hữu ích khác để khám phá và chuẩn bị dữ liệu MSS.
Quản lý Dữ liệu
Ai sở hữu dữ liệu mà tôi tải lên?
Theo Điều khoản dịch vụ của Earth Engine, khách hàng sở hữu dữ liệu mà họ tải lên Earth Engine.
Tôi không thể tải dữ liệu lên!
Kiểm tra trạng thái của tác vụ tải lên trong ngăn Tasks (Việc cần làm) ở góc trên bên phải của Trình soạn thảo mã. Bạn cũng có thể xem trang việc cần làm chuyên biệt.
Nếu không có tác vụ nào, có thể bạn đã thử tải tệp lên thông qua Trình soạn thảo mã, nhưng do sự cố kết nối mạng nên tệp chưa tải lên xong, do đó tác vụ chưa được tạo. Hãy thử dùng một trình duyệt khác hoặc một máy tính khác.
Nếu có một tác vụ không thành công, hãy kiểm tra lỗi mà tác vụ đó cho thấy. Nếu không có thông báo lỗi cụ thể, trước tiên, hãy xác minh rằng tệp của bạn không bị hỏng bằng cách chạy gdalinfo cho tệp đường quét hoặc ogr2ogr cho tệp vectơ.
Các lệnh này sẽ cố gắng đọc tất cả dữ liệu từ tệp nguồn và hiển thị lỗi nếu tệp bị hỏng.
Ví dụ về lệnh gọi gdalinfo:
gdalinfo -mm -stats -checksum file.tif
Ví dụ về lệnh gọi ogr2ogr sẽ chuyển đổi in.shp thành out.csv:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
Nếu tệp có vẻ hợp lệ, hãy đăng mã nhận dạng tác vụ không thành công dưới dạng văn bản (không phải dưới dạng ảnh chụp màn hình) trên danh sách gửi thư của nhà phát triển.
Mã việc cần làm có định dạng như sau: 4C25GIJBMB52PXTEJTF4JLGL. Đặt tệp nguồn ở chế độ công khai để mọi người có thể đọc được nếu có thể. Nếu đó là tệp riêng tư, hãy chỉ chia sẻ với earthengine@google.com nếu bạn muốn nhóm Earth Engine kiểm tra tệp đó. Nếu không thể chia sẻ tệp nguồn, ít nhất hãy cung cấp kết quả của gdalinfo -mm -stats -checksum.
Nếu Earth Engine không hỗ trợ một phép chiếu nhất định, bạn sẽ cần chiếu lại dữ liệu trước khi tải lên bằng cách sử dụng, ví dụ: gdalwarp.
Làm cách nào để tải tệp lên ở định dạng NetCDF hoặc một định dạng raster không được hỗ trợ khác?
Bạn chỉ có thể tải tệp GeoTIFF lên Earth Engine. Bạn có thể chuyển đổi các định dạng khác tương thích với GDAL sang GeoTIFF bằng cách sử dụng gdal_translate. Ví dụ:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
Xin lưu ý rằng một số tệp NetCDF hoặc HDF bao gồm nhiều tập dữ liệu phụ có thể được khám phá bằng gdalinfo. Trong trường hợp này, lệnh gdal_translate sẽ có dạng như sau (lưu ý đường dẫn giữa các dấu ngoặc kép):
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
Đôi khi, các tệp NetCDF không có phép chiếu mà GDAL nhận dạng được. Trong trường hợp này, bạn cần đặt phép chiếu và phạm vi không gian trong dòng lệnh gdal_translate. Ví dụ:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
Tôi có thể sử dụng thuật toán nén nào cho tệp GeoTIFF đã tải lên?
Để tải lên, bạn có thể nén tệp GeoTIFF bằng DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP hoặc ZSTD. COG mà Earth Engine đọc tại chỗ (bằng ee.Image.loadGeoTIFF() hoặc dưới dạng thành phần dựa trên COG) có thể sử dụng DEFLATE, JPEG, LZW, PACKBITS, ZSTD hoặc không nén (xem các phương pháp hay nhất về COG).
ZSTD là một lựa chọn phù hợp về tổng thể vì có thể giải nén nhanh chóng trong khi vẫn cung cấp khả năng nén tốt cho hầu hết các hình ảnh.
Để áp dụng phương thức nén ZSTD khi sử dụng gdal_translate, hãy thêm các tuỳ chọn này. Nếu dữ liệu có giá trị dấu phẩy động, hãy thay đổi PREDICTOR thành 3. (Đối với những tệp bạn dự định đăng ký dưới dạng COG thay vì tải lên, hãy xem hướng dẫn đăng ký COG.)
gdal_translate in.tif out.tif \
-co BIGTIFF=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=16 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
Quá trình nhập dữ liệu đường quét của tôi đã chạy trong nhiều ngày và chưa hoàn tất.
Sử dụng gdalinfo, hãy kiểm tra xem tệp của bạn có đặt tuỳ chọn GDAL sau đây không:
INTERLEAVE=PIXEL. Đối với các tệp có tuỳ chọn này và nhiều dải, quá trình nhập có thể không bao giờ hoàn tất vì bố cục của các tệp đó khiến quá trình đọc diễn ra rất chậm.
Hãy thử chuyển đổi các tệp đó sang bố cục xen kẽ dải trước khi tải lên:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
Điều này áp dụng cho quá trình nhập; các thành phần dựa trên COG hỗ trợ cả hai kiểu xen kẽ (xem phần tệp một dải so với tệp nhiều dải).
Hình ảnh đường quét mà tôi tải lên không khớp với bản đồ cơ sở.
Nếu dữ liệu hơi lệch so với bản đồ cơ sở, thì có thể phép chiếu có dữ liệu không chính xác (giả định về hình dạng của Trái Đất).
Điều này thường xảy ra nhất với phép chiếu hình sin không thể mã hoá hoàn toàn trong siêu dữ liệu GDAL. Khi
bạn biết phép chiếu mục tiêu phải là gì (ví dụ: SR-ORG:6974 cho các tệp sử dụng
phép chiếu hình sin MODIS), hãy đặt cờ --crs trong quá trình
tải lên bằng dòng lệnh
hoặc trường crs của
tệp kê khai tải lên.
Nếu dữ liệu có vẻ bị bóp méo nghiêm trọng hoặc ở vị trí hoàn toàn sai, thì phép chiếu hoặc phép biến đổi affine có thể không chính xác.
Đường quét của tôi chỉ xuất hiện ở Đông bán cầu.
Có thể bạn đã tải một tệp raster toàn cầu lên, tệp này trải dài trong phạm vi kinh độ [0, 360]. Tuy nhiên, Earth Engine yêu cầu các đường quét phải nằm trong khoảng [-180, 180]. Hoán đổi nửa bên trái và bên phải của đường quét trước khi nhập. Xem các đề xuất này của GIS Stack Exchange.
Tại sao hình ảnh phân loại được nhập của tôi lại có lốm đốm?
Có thể bạn đã sử dụng chính sách kim tự tháp mặc định của MEAN.
Đối với hình ảnh phân loại, bạn nên sử dụng chính sách tạo kim tự tháp MODE. Đối với hình ảnh QA/mặt nạ bit, bạn nên sử dụng chính sách tạo kim tự tháp SAMPLE.
Tôi gặp lỗi sau: Không thể áp dụng giá trị không có dữ liệu -128.0 cho dải #0 thuộc loại Short<0, 255>.
GDAL không thể coi các dải đơn byte là chứa số nguyên có dấu, vì vậy, GDAL sẽ đọc các dải đó dưới dạng số nguyên không dấu. Điều này sẽ xung đột với các giá trị âm không có dữ liệu.
Nếu giá trị của bạn thực sự là số nguyên có dấu, hãy sử dụng tính năng tải tệp kê khai lên và thêm giá trị này vào phần nhóm ô chứa tệp của bạn: data_type: "INT8"
Nếu các giá trị của bạn là số nguyên không dấu, thì tệp của bạn có giá trị nodata không hợp lệ. Bạn có thể ghi đè giá trị này khi tải lên bằng giá trị dữ liệu chính xác (hoặc một giá trị không bao giờ xảy ra, nếu có). Bạn cũng có thể sử dụng gdal_translate -a_nodata để thay đổi giá trị nodata hoặc gdal_edit.py -unsetnodata để xoá giá trị đó.
Làm cách nào để tải tệp lên ở định dạng GeoJSON hoặc một định dạng vectơ không được hỗ trợ khác?
Sử dụng ogr2ogr để dịch các định dạng tương thích với OGR sang định dạng CSV hoặc SHP. Ví dụ:
or2ogr -f "ESRI Shapefile" file.shp file.kml
Xin lưu ý rằng trong tệp CSV tải lên, cột hình học có thể chứa GeoJSON.
Tôi muốn tải dữ liệu lên bằng Python hoặc tải nhiều tệp lên cùng một lúc.
Sử dụng tính năng tải lên bằng dòng lệnh. Để tải lên theo cách này, trước tiên, bạn phải đặt các tệp nguồn vào một bộ chứa GCS (Google Cloud Storage). Bạn sẽ không mất phí khi sử dụng GCS nếu vẫn nằm trong giới hạn của gói miễn phí – hãy xem trang giá.
Tôi muốn tải một ảnh ghép lớn dạng đường quét được chia thành nhiều ô lên.
Nếu tất cả các tệp đều có cùng phép chiếu và kích thước pixel, bạn chỉ cần tải các tệp đó lên cùng một thành phần. Các tệp này sẽ tự động được ghép lại.
Nếu các tệp có phép chiếu hoặc kích thước pixel khác nhau, thì bạn không thể ghép chúng thành một thành phần đường quét duy nhất. Thay vào đó, hãy tải từng ô lên dưới dạng một thành phần riêng biệt vào cùng một ImageCollection có thể được ghép bằng ImageCollection.mosaic()
Tôi đang cố gắng tải một ảnh ghép lên và gặp lỗi về các ô không khớp.
Các ô cho ảnh ghép đường quét của Earth Engine phải có cùng phép chiếu và kích thước pixel. Ngoài ra, các ô phải căn chỉnh chính xác trên ranh giới pixel.
Tôi đang cố tải một tệp lên từ một bộ chứa GCS, nhưng Earth Engine không tìm thấy tệp đó.
Bạn có thể đã sử dụng các Tài khoản Google khác nhau để tải lên GCS và để kết nối với Earth Engine. Đảm bảo tài khoản bạn dùng để kết nối với Earth Engine có thể đọc được tệp GCS. Nếu việc đăng nhập vào nhiều tài khoản trên trình duyệt khiến bạn bối rối, hãy kết nối với Earth Engine trong cửa sổ trình duyệt ẩn danh.
Tôi muốn xuất nhiều thành phần cùng một lúc.
Bạn phải xuất riêng từng hình ảnh.
Tôi muốn di chuyển hoặc xoá một Folder hoặc ImageCollection bằng một lệnh duy nhất.
earthengine rm -r xoá một thư mục hoặc bộ sưu tập và mọi nội dung trong đó, nhưng mỗi lần chỉ xoá một thành phần, vì vậy, một bộ sưu tập lớn có thể mất hàng giờ. Để thực hiện nhanh hơn, hãy xoá
các phần tử con song song từ một tập lệnh rồi xoá phần tử mẹ (xem phần
làm việc với các tập hợp lớn);
bạn có thể áp dụng phương pháp tương tự cho mọi tập hợp hoặc thư mục phẳng. Một thư mục chứa các thư mục hoặc tập hợp khác phải được dọn sạch từ dưới lên, vì không thể xoá vùng chứa cho đến khi vùng chứa đó trống. Để di chuyển, hãy sử dụng mv theo cách tương tự.
Tôi muốn truy cập trực tiếp vào dữ liệu của Earth Engine từ bên ngoài EE.
QGIS có một trình bổ trợ Earth Engine.
GDAL có một trình điều khiển Earth Engine.
Các hệ thống khác có thể sử dụng API REST của EE.
Tôi muốn cập nhật một phần tài sản Earth Engine mà không cần nhập lại toàn bộ.
Bạn không thể cập nhật dữ liệu đường quét hoặc dữ liệu vectơ đã tải lên EE. Bạn chỉ có thể cập nhật các thuộc tính siêu dữ liệu của tài sản. Ngoại lệ là các tài sản được COG hỗ trợ. Bạn có thể trỏ các tài sản này đến một tệp Cloud Storage đã cập nhật bằng cách đăng ký lại các tài sản đó khi bật chế độ ghi đè.
Tôi đang mất quyền truy cập vào tài khoản của mình. Tôi cần làm gì với tài sản của mình?
Nếu chính sách của tài khoản ban đầu cho phép chuyển dữ liệu, vui lòng chia sẻ tài sản của bạn với một tài khoản khác, sau đó sao chép tài sản để tài khoản mới sở hữu. Sử dụng tiện ích sao chép dòng lệnh nếu có nhiều thành phần cần di chuyển.
Nếu một tài khoản bị xoá, thì bạn sẽ không thể truy cập vào các tài sản thuộc sở hữu của tài khoản đó nữa.
Hình ảnh tôi xuất nằm sai vị trí.
Đối với một số phép chiếu, chẳng hạn như hình sin hoặc hình nón, đôi khi tệp GeoTIFF không thể lưu trữ tất cả các tham số phép chiếu cần thiết. Điều này dẫn đến việc tệp đã xuất xuất hiện sai vị trí khi xem trong các công cụ GIS trên máy tính hoặc được nhập lại vào EE.
Để khắc phục vấn đề này, hãy chỉ định một tham số crs xuất được biết là hoạt động tốt với các tệp GeoTIFF, ví dụ: sử dụng mã EPSG cho vùng UTM chứa khu vực bạn quan tâm.
Các thành phần tập hợp đối tượng được xuất không giữ lại các thuộc tính mà tôi đã đặt.
Không có hàm Export.table.* nào giữ nguyên các thuộc tính ở cấp bảng trong kết quả.
Nhiều định dạng đầu ra (ví dụ: CSV, GeoJSON) không hỗ trợ siêu dữ liệu như vậy. Hàm Export.table.toAsset có thể hỗ trợ các thuộc tính ở cấp bảng, nhưng hiện tại thì không.
Các bảng được xuất sang Drive ở định dạng CSV sẽ được chuyển đổi sang định dạng XLSX.
Tuỳ thuộc vào chế độ cài đặt của bạn trên Google Drive, các bảng CSV mà bạn xuất từ Earth Engine có thể được chuyển đổi thành tệp XLSX và gây ra những ảnh hưởng ngoài ý muốn, chẳng hạn như chuyển đổi kiểu dữ liệu. Hãy làm theo các bước sau để sửa đổi hành vi cho các lần xuất tiếp theo.
- Trong Google Drive trên web, hãy nhấp vào biểu tượng bánh răng Cài đặt ở trên cùng bên phải.
- Nhấp vào Cài đặt.
- Di chuyển đến và bỏ đánh dấu mục "Chuyển đổi các tệp đã tải lên sang định dạng của trình biên tập Google Tài liệu".
Cloud Optimized GeoTIFF (COG)
Để biết thông tin cơ bản, hãy xem tổng quan về COG và hướng dẫn đăng ký COG.
Tôi đã chia sẻ một tài sản được COG hỗ trợ, nhưng cộng tác viên của tôi gặp lỗi về quyền.
Tài sản dựa trên COG là một con trỏ đến các tệp trong bộ chứa Cloud Storage, vì vậy, cộng tác viên cần có quyền đọc cả tài sản Earth Engine và bộ chứa. Trên bộ chứa, hãy cấp cho họ vai trò Storage Object Viewer và Storage Bucket Viewer; lỗi về quyền đối với một thành phần mà họ có thể thấy thường có nghĩa là thiếu một trong hai vai trò này. Xem phần định cấu hình quyền.
Tôi nên sử dụng vị trí bộ chứa Cloud Storage nào để lưu trữ các thành phần COG?
Chỉ một số vị trí ở Hoa Kỳ được hỗ trợ và Earth Engine từ chối yêu cầu đăng ký và đọc đối với các bộ chứa ở bất kỳ nơi nào khác. Xem vị trí bộ chứa được hỗ trợ.
Tôi đã thay thế một tệp COG trong Cloud Storage. Tại sao thành phần không tải được hoặc vẫn hiển thị dữ liệu cũ?
Khi bạn đăng ký COG, Earth Engine sẽ ghim thế hệ đối tượng (phiên bản) của tệp, vì vậy, việc ghi đè tệp tại chỗ sẽ không cập nhật thành phần. Đăng ký lại thành phần có cùng tên và bật chế độ ghi đè; bạn không cần phải xoá thành phần đó trước. Xem bài viết cập nhật, thay thế và xoá tài sản được hỗ trợ COG.
Làm cách nào để biết thành phần được COG hỗ trợ của tôi trỏ đến phiên bản nào của tệp?
Siêu dữ liệu của thành phần (ee.data.getAsset()) cho thấy thế hệ được ghim dưới dạng hậu tố trên URI của tệp. Xem phần
thế hệ đối tượng.
Điều gì sẽ xảy ra nếu tôi xoá tệp COG trong Cloud Storage nhưng không xoá tài sản Earth Engine hoặc ngược lại?
Chúng độc lập với nhau. Việc xoá tài sản Earth Engine sẽ không ảnh hưởng đến các tệp của bạn trong Cloud Storage, còn việc xoá tệp sẽ giữ nguyên tài sản nhưng thường khiến các pixel của tài sản đó không đọc được. Xem phần vòng đời độc lập.
Cách nhanh nhất để xoá hoặc thay thế một ImageCollection lớn được COG hỗ trợ là gì?
Không có tính năng xoá theo lô hoặc xoá đệ quy trong Earth Engine API và earthengine rm -r sẽ xoá từng thành phần một. Nếu bạn đang thay thế hình ảnh, hãy đăng ký lại hình ảnh đó bằng cách bật tính năng ghi đè thay vì xoá; nếu bạn đang xoá, hãy thực hiện song song từ một tập lệnh. Hãy xem phần làm việc với các tập hợp lớn để biết phương pháp và tập lệnh.
Tại sao thông tin đăng ký COG của tôi không xuất hiện trong thẻ Việc cần làm?
Việc đăng ký COG là một lệnh gọi API đồng bộ chỉ lập chỉ mục siêu dữ liệu của tệp chứ không phải là một công việc nhập hàng loạt, vì vậy, lệnh gọi này không tạo ra tác vụ. Thành phần này sẽ có trong thẻ Thành phần ngay khi lệnh gọi trả về. Xem phần gửi yêu cầu đăng ký.
Tôi có thể kết hợp nhiều tệp COG thành một tài sản Earth Engine không?
Chỉ khi mỗi tệp chứa các dải khác nhau của cùng một cảnh: hãy liệt kê mỗi tệp dưới dạng nhóm thẻ thông tin riêng trong tệp kê khai và liên kết các dải với nhóm thẻ thông tin. Bạn không thể ghép các tệp liền kề về mặt không gian thành một thành phần dựa trên COG; hãy đăng ký từng tệp dưới dạng hình ảnh riêng trong ee.ImageCollection và gọi mosaic(). Xem quy tắc hạn chế trong tệp kê khai.
Những lược đồ nén, kích thước ô và loại pixel nào mà các thành phần dựa trên COG có thể sử dụng?
Hãy xem các phương pháp hay nhất để chuẩn bị COG bên ngoài để biết các lược đồ nén, kích thước ô và loại dữ liệu pixel được hỗ trợ. Các tệp ở định dạng nén mà Earth Engine không thể đọc trực tiếp dưới dạng COG vẫn có thể được tải lên dưới dạng thành phần chuẩn.
Tôi nhận được thông báo lỗi "Không thể đọc siêu dữ liệu của TIFF trong 10.000.000 byte đầu tiên".
Earth Engine chỉ đọc phần đầu của tệp khi tải hoặc đăng ký tệp; hình ảnh lớn có nhiều ô và tệp bị cắt bớt sẽ vượt quá giới hạn này. Xem phần chọn kích thước tệp để biết giới hạn và cách không vượt quá giới hạn.
ee.Image.loadGeoTIFF() khác với thành phần đã đăng ký như thế nào khi tệp thay đổi?
ee.Image.loadGeoTIFF() đọc bất kỳ phiên bản nào của tệp hiện có trên mỗi yêu cầu tính toán hoặc thẻ thông tin bản đồ, vì vậy, tệp này sẽ chọn các tệp thay thế (không đồng đều trên bản đồ, vì các thẻ thông tin bản đồ được kết xuất vẫn được lưu vào bộ nhớ đệm). Một thành phần đã đăng ký luôn ghim thế hệ mà thành phần đó được đăng ký và phải được đăng ký lại để xem tệp mới, nhưng đổi lại, dấu vết và siêu dữ liệu của thành phần đó được lập chỉ mục, giúp thành phần đó có thể sử dụng được trong các tập hợp lớn. Xem phần đọc COG từ Cloud Storage.
Trình soạn thảo mã
Tôi không thể đăng nhập vào Trình soạn thảo mã vì hệ thống nhắc tôi sử dụng sai tài khoản.
Đăng xuất, chọn tài khoản đã đăng ký sử dụng Earth Engine trên trang "Chọn tài khoản", sau đó chọn lại chính tài khoản đó trên trang thứ hai "Chọn tài khoản để tiếp tục sử dụng Trình soạn thảo mã của Earth Engine" (từ ngữ chính xác có thể khác).
Tôi muốn chụp ảnh màn hình bản đồ toàn cầu nhưng không thích phép chiếu Web Mercator.
Phép chiếu bản đồ được dùng trong Trình soạn thảo mã là
Web Mercator
("EPSG:3857"). Phép chiếu này phóng đại kích thước của các đối tượng ở xa đường xích đạo, khiến các vùng có vĩ độ cao trông lớn hơn nhiều so với thực tế, khi so sánh với các vùng gần xích đạo. Bạn không thể thay đổi phép chiếu của khung vẽ bản đồ trong Trình soạn thảo mã, nhưng có thể "vẽ" một hình ảnh trong phép chiếu mà bạn chọn vào khung vẽ Web Mercator bằng phương thức ee.Image.changeProj.
Hãy xem trang tài liệu tham khảo API của phương thức này để biết ví dụ về cách hiển thị DEM toàn cầu cho bản đồ Trình soạn thảo mã trong phép chiếu Robinson.
Xin lưu ý rằng bạn chỉ nên sử dụng kỹ thuật này cho mục đích trực quan hoá, vì công cụ vẽ và trình kiểm tra của Trình soạn thảo mã vẫn hoạt động trong Web Mercator.
Tập lệnh của tôi không lưu (Script error: Unknown commit).
Nếu bạn nhận được thông báo Script error: Unknown commit khi lưu tập lệnh, thì có thể kho lưu trữ mà bạn đang lưu không đồng bộ.
Nguyên nhân gây ra trạng thái này có thể thay đổi và khó xác định. Để giải quyết vấn đề này, hãy thử làm mới danh sách tập lệnh bằng nút ở góc trên bên phải của thẻ Tập lệnh. Nếu cách này không hiệu quả, hãy thử tạo một kho lưu trữ mới bằng nút Mới trong thẻ Tập lệnh rồi lưu tập lệnh của bạn vào đó (bạn có thể cần phải di chuyển tập lệnh vào kho lưu trữ mới từ kho lưu trữ không đồng bộ hoá).
Tại sao tôi liên tục thấy lỗi 400 trong Trình soạn thảo mã?
Nếu bạn liên tục gặp lỗi 400 trong Trình soạn thảo mã, hãy chuyển đến https://myaccount.google.com/connections, tìm "Trình soạn thảo mã Earth Engine" trong danh sách ứng dụng và dịch vụ, chọn ứng dụng đó, rồi chọn "Xoá tất cả kết nối bạn có với Trình soạn thảo mã Earth Engine" và xác nhận. Sau đó, hãy mở Trình soạn thảo mã và xác thực lại.
Làm cách nào để khôi phục các tập lệnh và thư mục đã xoá?
Nếu bạn vô tình xoá một tập lệnh hoặc thư mục bên trong một kho lưu trữ hiện có, thì toàn bộ nhật ký cam kết sẽ được lưu giữ trong nhật ký Git trên máy chủ của chúng tôi. Bạn có thể khôi phục các tập lệnh hoặc thư mục đã xoá bằng cách sao chép kho lưu trữ trên máy bằng các công cụ dòng lệnh Git tiêu chuẩn.
Tuy nhiên, việc xoá toàn bộ kho lưu trữ (users/username/repository) sẽ xoá vĩnh viễn kho lưu trữ và nhật ký cam kết khỏi earthengine.googlesource.com và không thể huỷ hoặc khôi phục.
Để biết hướng dẫn từng bước về cách tạo thông tin xác thực Git, sao chép kho lưu trữ và khôi phục các tệp hoặc thư mục đã xoá, hãy xem hướng dẫn Khôi phục tập lệnh và di chuyển kho lưu trữ.
Làm cách nào để đổi tên thư mục gốc của kho lưu trữ tập lệnh?
Thư mục gốc của tập lệnh (users/username) được liên kết với thông tin đăng ký tài khoản Earth Engine ban đầu của bạn. Bạn không thể đổi tên trực tiếp trên phần phụ trợ vì việc này sẽ làm hỏng mọi tập lệnh bên ngoài hoặc dự án của cộng tác viên nhập mã mô-đun của bạn bằng đường dẫn require('users/username/repository:...').
Nếu bạn cần một không gian tên mới, thì giải pháp được hỗ trợ là di chuyển công việc của bạn sang một tài khoản mới:
- Đăng ký một tài khoản Earth Engine mới bằng Google Identity mới của bạn (thao tác này sẽ tạo một thư mục gốc
users/new_usernamemới). - Làm theo hướng dẫn di chuyển kho lưu trữ để sao chép kho lưu trữ cũ và đẩy toàn bộ nhật ký của kho lưu trữ đó vào kho lưu trữ trống mới.
Những điểm quan trọng cần lưu ý:
- Mô-đun công khai: Nếu bạn có các mô-đun công khai mà người khác dựa vào, bạn nên duy trì hoạt động của tài khoản và kho lưu trữ cũ để không làm gián đoạn quy trình làm việc của họ.
- Tập lệnh riêng tư: Nếu tập lệnh của bạn hoàn toàn riêng tư, bạn có thể cập nhật các câu lệnh nhập
require()để tham chiếu đến đường dẫn kho lưu trữ mới, sau đó xoá các kho lưu trữ cũ một cách an toàn.