Câu hỏi chung
Tôi gặp vấn đề và cần được 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 chỉnh sửa 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 mục này trong thẻ Task (Tác vụ) của Code Editor (Trình chỉnh sửa mã). Tìm hiểu thêm.
Tôi có thể đọc về cấu trúc của Earth Engine ở đâu?
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à bạn nên xem không?
Xem các trang EDU và Tài nguyên đào tạo.
Có hướng dẫn nào về cảm biến từ xa mà bạn nên xem không?
Hãy xem khoá học miễn phí này về EE của Ujaval Gandhi. Khoá học này có một video giới thiệu về hoạt động 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ì?
Hãy 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. Kiểm tra các nguyên nhân phổ biến sau đây:
Lỗi 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ả dựa trên Tài liệu tham khảo API.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
Thiếu truyền kiểu: Các 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 ứ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 (chẳng hạ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 này có 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 các 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 các đố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 những gì bạn muốn. Hãy xem trang này để biết thêm thông tin 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?
Hoạt động 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à hoạt động 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ợ 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 geemap của bên thứ ba.
- Sử dụng QGIS để đưa hình ảnh EE vào bằng cách sử 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 bằng Earth Engine?
Sử dụng Các ứ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ể tạo 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 toàn bộ API) là các khoá cho phép ứng dụng tìm nạp ô 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 một 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 đăng nhập của người dùng sẽ được dùng để tạo ô ở giai đoạn sau.
Việc yêu cầu các ô trên bản đồ bao gồm việc chỉ định vị trí của ô (x, y, zoom) cũng như mapid (khoá cho hình ảnh và thông tin đăng nhập). Bạn có thể 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 các khoá mapid, nhưng các khoá này 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 các mã này, nhưng mọi mã bạn viết đều phải có khả năng phục hồi khi mã nhận dạng hết hạn.
Việc tạo các mã nhận dạng này liên quan đến việc lưu trữ một lượng nhỏ dữ liệu và xác thực thông tin đăng nhập, vì vậy, tốt nhất là 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 được 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 các đối tượng mapid với tốc độ gần bằng tốc độ tìm nạp ô có thể đang làm sai điều gì đó. 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à các 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 ở chỗ tất cả các đối số của thuật toán đều phải được đánh giá trước khi chính thuật toán có thể chạy.
Thuật toán sẽ nhận 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 gặp 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ắng 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 thứ hai, 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 tài sản bảng.
Gói ee.Image.clip() và gói ee.Filter.bounds() có gì khác nhau?
Hãy xem chuỗi thảo luận này trên GIS Stack Exchange.
Hàm ee.Image.clip() che các pixel không giao 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 như là cắt bớt các pixel trong một hình ảnh.
Hàm ee.Filter.bounds() lọc các đối tượng ee.Image ra khỏi một ee.ImageCollection dựa trên giao điểm hình ảnh với một ee.Geometry hoặc ee.Feature. Thao tác này được dùng để giới hạn phạm vi phân tích chỉ trong những hình ảnh giao với một khu vực nhất định, giúp tối ưu hoá biểu thức.
Làm cách nào để chuyển đổi các pixel hình ảnh thành các tập hợp đối tượng, với một đối tượng cho mỗi pixel?
Dùng hàm ee.Image.sample(). Hãy xem các ví dụ về cách sử dụng trên trang tài liệu tham khảo API của hàm.
Sự khác biệt giữa ee.ImageCollection.merge() và ee.ImageCollection.combine() là gì?
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ó các dải tần, siêu dữ liệu, CRS hoặc tỷ lệ trùng nhau hay không. Đây là hợp của hai tập hợp. Phương thức combine() kết hợp các dải tần của những hình ảnh khớp nhau từ hai tập hợp thành một tập hợp duy nhất. Các hình ảnh trùng khớp có cùng mã nhận dạng (thuộc tính system:index). Đây là một phép kết hợp bên trong của 2 tập hợp dựa trên mã nhận dạng hình ảnh, trong đó các dải tần của hình ảnh trùng khớp được kết hợp. Đối với hình ảnh 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ể chọn ghi đè). Nếu không có hình ảnh nào trùng khớp, hệ thống sẽ trả về một tập hợp trống.
Làm cách nào để lọc các bộ sưu tập hình ảnh theo nhiều khoảng thời gian?
Hãy xem chuỗi thảo luận này trên GIS Stack Exchange.
Bạn có thể merge() kết hợp nhiều bộ sưu tập hoặc sử dụng ee.Filter.or().
Làm cách nào để tạo một khung hình chữ nhật xung quanh một điểm cho trước?
// 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 chính của mình trong Earth Engine. Xem phần Nhập dữ liệu raster 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 báo cáo 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 tài sản
Trước khi báo cáo vấn đề, hãy xác minh (nếu có thể) rằng các thành phầ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ề trường hợp thiếu hình ảnh để biết thêm thông tin chi tiết.
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 bộ lọc của bạn không quá hạn chế.
Đặc biệt, hãy lưu ý rằng:
ESA không tạo ra 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.
Một tập dữ liệu hiện có có 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 độ phân giải gốc của thành phần và giúp bạn dễ dàng nhận thấy những giá trị nào không chính xác. Giải thích chính xác nơi bạn quan sát thấy giá trị thay thế.
Tôi có thể hỏi về các tập dữ liệu ở đâu khác?
Nếu bạn có câu hỏi về 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 có thắc mắc 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 có quy mô như thế nào?
Tính đến tháng 10 năm 2023, danh mục này có hơn 1.000 tập dữ liệu. Dung lượng trên đĩa của tệp này là hơn 90 petabyte (sau khi tính đến mức nén không mất dữ liệu).
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ập dữ liệu nào như vậy cũng có dữ liệu mới mỗi ngày). Một số tập dữ liệu được cập nhật nhiều lần trong 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 gần đây nhất trong danh mục.
Làm cách nào để xem nội dung trong danh mục EE theo cách 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 nhập là catalog.json.
Tôi có thể sử dụng dữ liệu hoặc hình ảnh trên 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ở để phân tích.
Làm cách nào để biết ngày một thành phần được nhập?
Thuộc tính nội dung '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 bắt đầu của hệ thống Unix. Sau đây là ví dụ chuyển đổi dấu thời gian tiếp nhận 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?
Việc 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 hệ số phản xạ bề mặt 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 thành phần giả tạo không mong muốn khác trong hình ảnh. Ví dụ về cách sử dụng các dải tần này để xử lý hình ảnh SR Landsat 8 và tạo một tổ hợp trung bình không có mây đượ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 hình ảnh kết 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 điều chỉnh sự hài hoà về độ 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 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ọ đã xuất bản các hệ số OLS và RMA để độc giả có thể chuyển đổi các 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 viết có nội dung: "Mặc dù có sự khác biệt khá nhỏ về cảm biến, nhưng điều này 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 được thực hiện trong quá trình xử lý lại 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 những gì 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) đối với dữ liệu Bộ sưu tập 1 hoặc Bộ sưu tập 2. Mặc dù không có phân tích chính thức, nhưng có vẻ như người dùng Landsat có tầm ảnh hưởng đều đồng ý rằng không cần điều chỉnh dữ liệu Collection 2, Level 2 (độ phản xạ bề mặt). Ví dụ: trong câu trả lời cho một câu hỏi liên quan đến nhu cầu về việc hài 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 đồ độ che phủ đất và phát hiện thay đổi), các sản phẩm hệ số phản xạ bề mặt Bộ sưu tập 2 rất phù hợp và đáng tin cậy, 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 chỉnh sửa 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 tải được 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 Code Editor (Trình chỉnh sửa mã). Bạn cũng có thể xem trang nhiệm vụ 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 chỉnh sửa mã, nhưng do sự cố mạng nên tệp chưa tải lên xong, vì vậy tác vụ chưa bao giờ đượ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ó 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 raster 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ừ các tệp nguồn và hiển thị lỗi nếu các 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 của tác vụ không thành công dưới dạng văn bản (không phải ảnh chụp màn hình) trên danh sách gửi thư cho nhà phát triển.
Mã nhận dạng việc cần làm có định dạng như sau: 4C25GIJBMB52PXTEJTF4JLGL. Nếu có thể, hãy đặt tệp nguồn ở chế độ công khai có thể đọc. Nếu đó là một tệp riêng tư, hãy chỉ chia sẻ tệp đó 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 đầu ra 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 định dạng raster không được hỗ trợ khác?
Bạn chỉ có thể tải 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 thành 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 phát hiện bằng gdalinfo. Trong trường hợp này, lệnh gdal_translate sẽ có dạng như sau (lưu ý rằng đường dẫn nằm giữa 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 GeoTIFF bằng DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP hoặc ZSTD. Để đọc COG trực tiếp, bạn có thể sử dụng DEFLATE, JPEG, LZW hoặc ZSTD. ZSTD là một lựa chọn tổng thể phù hợp vì có tốc độ giải nén nhanh mà 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 chế độ nén ZSTD khi sử dụng gdal_translate, hãy thêm các lựa chọn sau. Nếu dữ liệu có giá trị dấu phẩy động, hãy thay đổi PREDICTOR thành 3.
gdal_translate in.tif out.tif \
-co COPY_SRC_OVERVIEWS=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=22 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
Quá trình nhập dữ liệu raster của tôi đã chạy trong nhiều ngày nhưng chưa hoàn tất.
Sử dụng gdalinfo, hãy kiểm tra xem tệp của bạn có được đặt lựa chọn GDAL sau đây hay không: INTERLEAVE=PIXEL. Đối với những tệp có lựa chọn này và nhiều dải tần, quá trình truyền dữ liệu có thể không bao giờ hoàn tất vì bố cục của những tệp như vậy khiến tốc độ đọc rất chậm.
Hãy thử chuyển đổi những tệp như vậy sang bố cục xen kẽ theo dải trước khi tải lên:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
Các tệp raster 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ó một hệ quy chiế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 hình chiếu mục tiêu phải là gì (ví dụ: SR-ORG:6974 cho các tệp sử dụng hình 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 manifest tải lên.
Nếu dữ liệu xuất hiện bị biến dạng 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ể bị sai.
Tệp raster của tôi chỉ xuất hiện ở bán cầu Đông.
Có thể bạn đã tải một tệp raster toàn cầu lên, trải dài trong phạm vi kinh độ [0, 360]. Tuy nhiên, Earth Engine yêu cầu các raster phải nằm trong dải ô [-180, 180]. Hoán đổi nửa trái và nửa phải của hình ảnh raster trước khi nhập. Xem các đề xuất này trên GIS Stack Exchange.
Tại sao hình ảnh phân loại được nhập của tôi trông lốm đốm?
Có thể bạn đã sử dụng chính sách xếp chồng MEAN mặc định.
Đối với hình ảnh phân loại, bạn nên sử dụng chính sách phân cấp MODE. Đối với hình ảnh QA/bitmask, bạn nên sử dụng chính sách phân cấp SAMPLE.
Tôi gặp phải lỗi sau: Không thể áp dụng giá trị dữ liệu -128.0 cho dải tần #0 thuộc loại Short<0, 255>.
GDAL không thể coi các dải tần một byte là chứa số nguyên có dấu, vì vậy, GDAL sẽ đọc các dải tần như vậy 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 các giá trị của bạn thực sự là số nguyên có dấu, hãy sử dụng manifest upload (tải tệp kê khai lên) và thêm giá trị này vào phần tileset (tập hợp ô) 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 có 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ể 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 đị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 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 lúc.
Sử dụng tính năng tải lên qua dòng lệnh. Để tải lên, 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 không phải trả phí khi sử dụng GCS nếu vẫn nằm trong giới hạn của bậc miễn phí – hãy xem trang định giá.
Tôi muốn tải một bức ảnh ghép dạng raster lớn đượ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 chúng lên cùng nhau vào cùng một thành phần. Các tệp này sẽ được ghép tự động.
Nếu các tệp có hình 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 raster 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 bức tranh ghép lên và gặp lỗi về các ô không khớp.
Các ô cho ảnh ghép raster 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 căn chỉnh chính xác theo ranh giới pixel.
Tôi đang cố gắng tải một tệp lên từ bộ chứa GCS, nhưng Earth Engine không tìm thấy tệp đó.
Có thể bạn đã dùng 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 rằng tài khoản bạn dùng để kết nối với Earth Engine có thể đọc tệp GCS. Nếu tính năng đăng nhập nhiều lần trên trình duyệt gây nhầm lẫn, 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 tài sản cùng một lúc.
Bạn phải xuất từng hình ảnh riêng biệt.
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.
Trước tiên, bạn phải di chuyển hoặc xoá từng tài sản, sau đó di chuyển hoặc xoá thư mục hoặc bộ sưu tập mẹ. Nếu có nhiều thành phần con, hãy viết một vòng lặp shell hoặc Python để lặp lại các thành phần đó.
Tôi muốn truy cập trực tiếp vào dữ liệu 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 của tài sản Earth Engine mà không cần nhập lại hoàn toàn.
Bạn không thể cập nhật dữ liệu raster hoặc vector đã 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.
Tôi sắp 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 các thành phầ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 tài sản cần di chuyển.
Nếu một tài khoản bị xoá, thì bạn sẽ không truy cập được vào các thành phần thuộc tài khoản đó nữa.
Hình ảnh tôi xuất nằm ở vị trí không chính xác.
Đối với một số phép chiếu (chẳng hạn như phép chiếu 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 thông số chiếu cần thiết. Điều này dẫn đến việc tệp được 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ố xuất crs đượ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.
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?
Câu trả lời phụ thuộc vào mục tiêu mà bạn đang cố gắng tối ưu hoá. Nếu bạn đang tối ưu hoá để có quyền truy cập vào hoạt động tính toán có độ trễ thấp, thì vị trí bộ chứa GCS tốt nhất để lưu trữ tài sản COG là US-CENTRAL*. Hãy xem trang Vị trí bộ chứa để biết thông tin về những yếu tố khác cần cân nhắc.
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ữ lại các thuộc tính ở cấp bảng trong đầu ra.
Đối với nhiều định dạng đầu ra (ví dụ: CSV, GeoJSON), không có hỗ trợ cho 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 không hỗ trợ.
Các bảng được xuất sang Drive dưới dạng định dạng CSV sẽ được chuyển đổi sang định dạng XLSX.
Tuỳ thuộc vào chế độ cài đặt 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ới những hiệu ứng không mong 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 Cài đặt ở trên cùng bên phải.
- Nhấp vào Cài đặt.
- Di chuyển đến mục "Chuyển đổi tệp đã tải lên sang định dạng của trình biên tập Google Tài liệu" rồi xoá mục này.
Trình soạn thảo mã
Tôi không thể đăng nhập vào Trình chỉnh sửa mã vì trình chỉnh sửa này 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 trong trang "Chọn một tài khoản", rồi chọn lại tài khoản đó trong trang "Chọn một tài khoản để tiếp tục sử dụng Trình chỉnh sửa mã Earth Engine" thứ hai (cách diễn đạt chính xác có thể khác).
Tôi muốn chụp ảnh màn hình một 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 chỉnh sửa mã là Web Mercator ("EPSG:3857"). Nó làm tăng kích thước của các đối tượng ở xa đường xích đạo, khiến các khu vực ở vĩ độ cao trông lớn hơn nhiều so với kích thước thực tế, so với các khu vực gần đường xích đạo. Bạn không thể thay đổi phép chiếu của canvas bản đồ trong Trình chỉnh sửa mã, nhưng có thể "vẽ" một hình ảnh trong phép chiếu mà bạn chọn vào canvas Web Mercator bằng phương thức ee.Image.changeProj.
Hãy xem tài liệu tham khảo API của phương thức để 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 kỹ thuật này chỉ nên được sử dụng cho mục đích trực quan hoá, vì trình kiểm tra và các công cụ vẽ của Trình chỉnh sửa mã vẫn đang 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 một tập lệnh, thì có thể kho lưu trữ mà bạn đang lưu vào không đồng bộ.
Nguyên nhân gây ra trạng thái này rất đa dạng và khó xác định. Để giải quyết vấn đề này, hãy thử làm mới danh sách kịch bản bằng cách sử dụng nút ở góc trên cùng bên phải của thẻ Kịch bản. 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 và lưu tập lệnh của bạn ở đó (bạn có thể cần di chuyển tập lệnh vào kho lưu trữ mới từ kho lưu trữ không đồng bộ).