Nếu cần linh hoạt hơn trong việc tải hình ảnh lên Google Earth Engine (EE) so với giao diện người dùng của Trình soạn thảo mã hoặc lệnh upload
của công cụ dòng lệnh "earthengine", bạn có thể thực hiện việc này bằng cách mô tả quá trình tải hình ảnh lên bằng tệp JSON được gọi là "tệp kê khai" và sử dụng lệnh upload image --manifest
của công cụ dòng lệnh.
Xem ví dụ đầy đủ trong sổ tay Colab này minh hoạ cách tải thẻ thông tin hình ảnh lên dưới dạng một thành phần bằng tệp kê khai.
Thiết lập một lần
- Tính năng tải tệp kê khai lên chỉ hoạt động với các tệp nằm trong Google Cloud Storage. Để bắt đầu sử dụng Google Cloud Storage, hãy tạo một dự án trên Google Cloud nếu bạn chưa có. Xin lưu ý rằng bạn cần chỉ định một thẻ tín dụng để thanh toán trong quá trình thiết lập. Hiện tại, EE không tính phí cho bất kỳ ai, nhưng việc chuyển tệp sang Google Cloud Storage trước khi tải lên EE sẽ có một khoản phí nhỏ. Đối với kích thước dữ liệu tải lên thông thường (vài chục hoặc vài trăm gigabyte), chi phí sẽ khá thấp.
- Trong dự án, hãy bật Cloud Storage API và tạo một bộ chứa.
- Cài đặt ứng dụng Earth Engine Python. Thư viện này bao gồm công cụ dòng lệnh
earthengine
mà chúng ta sẽ sử dụng để tải dữ liệu lên. - Để tải lên tự động, bạn nên sử dụng tài khoản dịch vụ Google Cloud được liên kết với dự án của mình. Bạn không cần tài khoản dịch vụ để kiểm thử, nhưng khi có thời gian, vui lòng bắt đầu làm quen với việc sử dụng các tài khoản này.
Các tệp nguồn rất lớn (từ 100 GB trở lên) có thể được tải lên nhanh hơn nếu được chia thành nhiều ô.
Mã và tên thành phần
Đối với các thành phần do dự án trên Google Cloud sở hữu, hãy sử dụng quy ước đặt tên thành phần sau: projects/some-project-id/assets/some-asset-id
.
Tìm hiểu về tên thành phần cho dự án cũ và thành phần do người dùng sở hữu
Đối với các dự án cũ, tên tài sản trong tệp kê khai cần phải khác một chút với mã tài sản hiển thị ở nơi khác trong Earth Engine. Để tải các thành phần có mã thành phần bắt đầu bằng users/some_user
hoặc projects/some_project
lên, tên thành phần trong tệp kê khai phải có chuỗi projects/earthengine-legacy/assets/
đứng trước mã nhận dạng. Ví dụ: bạn nên tải mã thành phần EE users/username/my_geotiff
lên bằng tên projects/earthengine-legacy/assets/users/username/my_geotiff
.
Có, điều này có nghĩa là các mã nhận dạng như projects/some_projects/some_asset
sẽ được chuyển đổi thành tên có projects
được đề cập hai lần: projects/earthengine-legacy/assets/projects/some_projects/some_asset
.
Điều này gây nhầm lẫn nhưng cần thiết để tuân thủ các tiêu chuẩn của API Google Cloud.
Sử dụng tệp kê khai
Tệp kê khai cơ bản được hiển thị trong khối mã sau. Hàm này tải một tệp có tên
small.tif
lên từ một bộ chứa Google Cloud Storage có tên
gs://earthengine-test
.
{ "name": "projects/some-project-id/assets/some-asset-id", "tilesets": [ { "sources": [ { "uris": [ "gs://earthengine-test/small.tif" ] } ] } ] }
Để sử dụng, hãy lưu tệp này vào tệp có tên manifest.json
rồi chạy:
earthengine upload image --manifest /path/to/manifest.json
(Tệp gs://earthengine-test/small.tif
tồn tại và có thể đọc công khai – bạn có thể sử dụng tệp này để kiểm thử.)
Tập hợp thẻ thông tin
Cấu trúc tệp kê khai JSON có phần phức tạp là cần thiết để có đủ tính linh hoạt nhằm giải quyết một thách thức thường gặp khi tải lên: cách mô tả tất cả các cách có thể kết hợp pixel từ nhiều tệp nguồn thành một thành phần. Cụ thể, có hai cách độc lập để nhóm các tệp với nhau:
- Tranh khảm. Đôi khi, nhiều tệp đại diện cho nhiều thẻ thông tin (ví dụ: mỗi thẻ thông tin là một hình vuông 1x1 độ). Các tệp như vậy phải được tạo ảnh ghép (hợp nhất với nhau) thành cùng một dải trong một thành phần EE.
- Tách các dải tần. Đôi khi, nhiều tệp đại diện cho nhiều dải tần. Các tệp như vậy phải được xếp chồng với nhau dưới dạng các dải trong một thành phần EE.
(Có thể bạn phải sử dụng cả hai cách cùng lúc, nhưng đó là trường hợp hiếm gặp.)
Để mô tả các tuỳ chọn này, tệp kê khai giới thiệu khái niệm về bản đồ ô. Một tập hợp thẻ thông tin tương ứng với một nguồn GDAL. Do đó, tất cả các nguồn trong một tập hợp thẻ thông tin phải có cùng cấu trúc GDAL (số lượng và loại dải, phép chiếu, phép biến đổi, giá trị bị thiếu). Vì một nguồn GDAL có thể có nhiều băng tần, nên một tập xếp kề có thể chứa dữ liệu cho nhiều băng tần EE.
Đối với tính năng chuyển đổi thành ảnh ghép, tệp kê khai sẽ có dạng như sau:
{ "name": "projects/some-project-id/assets/some-asset-id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/N30W22.tif" ] }, { "uris": [ "gs://bucket/N31W22.tif" ] } ] } ] }
Đối với các băng tần riêng biệt, tệp kê khai sẽ có dạng như sau (bạn cũng cần thêm phần bands
như giải thích bên dưới):
{ "name": "projects/some-project-id/assets/some-asset-id", "bands": ..., "tilesets": [ { "id": "tileset_for_band1", "sources": [ { "uris": [ "gs://bucket/band1.tif" ] } ] }, { "id": "tileset_for_band2", "sources": [ { "uris": [ "gs://bucket/band2.tif" ] } ] } ] }
Xin lưu ý rằng trong trường hợp các dải riêng biệt, chúng ta phải cung cấp cho mỗi tập hợp thẻ thông tin một mã nhận dạng tập hợp thẻ thông tin khác nhau để rõ ràng. Mã tileset có thể là một chuỗi tuỳ ý – các chuỗi này không được lưu giữ trong tài sản đã tải lên. Mã nhận dạng tập hợp thẻ thông tin chỉ được dùng trong quá trình nhập để phân biệt các tập hợp thẻ thông tin xếp chồng với nhau.
Băng tần
Khái niệm quan trọng thứ hai là so khớp tệp nguồn với các băng tần tài sản EE.
Bạn có thể thực hiện việc này bằng cách sử dụng phần bands
của tệp kê khai.
Bạn có thể bỏ qua phần bands
. Trong trường hợp này, các dải sẽ được tạo trước từ các tệp trong nhóm thẻ thông tin đầu tiên, sau đó là từ nhóm thẻ thông tin tiếp theo, v.v.
Theo mặc định, các dải tần được đặt tên là "b1", "b2", v.v. Để ghi đè tên dải tần mặc định, hãy thêm phần "bands" (dải tần) ở cuối, như sau:
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/rgb.tif" ] } ] } ], "bands": [ { "id": "R", "tilesetBandIndex": 0 }, { "id": "G", "tilesetBandIndex": 1 }, { "id": "B", "tilesetBandIndex": 2 } ] }
Số lượng dải EE phải bằng với tổng số dải trong tất cả các tập hợp thẻ thông tin.
Nếu không muốn nhập tất cả các dải tần số từ một tệp, bạn có thể sử dụng trường tilesetBandIndex
để cho biết dải tần số GDAL nào sẽ được nhập.
Dải đầu tiên có tilesetBandIndex là 0.
Ví dụ:
Giả sử tệp nguồn có 4 dải: "tmin", "tmin_error", "tmax", "tmax_error". Chúng ta chỉ muốn nhập "tmin" và "tmax". Các phần tệp kê khai có liên quan sẽ có dạng như sau:
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "temperature", "sources": [ { "uris": [ "gs://bucket/temperature.tif" ] } ] } ], "bands": [ { "id": "tmin", "tilesetBandIndex": 0, "tilesetId": "temperature" }, { "id": "tmax", "tilesetBandIndex": 2, "tilesetId": "temperature" } ] }
Dải mặt nạ
Việc che dải tần số được kiểm soát bởi thành phần maskBands
của tệp kê khai.
Hỗ trợ 3 cấu hình mặt nạ có thể có (nhưng băng mặt nạ luôn được giả định là băng cuối cùng trong một tệp nhất định).
- Mặt nạ cho tất cả dải dữ liệu trong cùng một tệp.
- Mặt nạ cho tất cả dải dữ liệu đến từ tất cả tệp khác.
- Mặt nạ cho một số dải dữ liệu.
1. Trường hợp phổ biến nhất là một GeoTIFF duy nhất có dải cuối cùng được dùng làm mặt nạ cho các dải khác. Phương thức này chỉ hoạt động với các tệp GeoTIFF thuộc loại Byte. Sử dụng tệp kê khai sau:
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "data_tileset", "sources": [ { "uris": [ "gs://bucket/data_file.tif" ] } ] } ], "bands": [ { "id": "data_band", "tilesetId": "data_tileset" }, { "id": "qa_band", "tilesetId": "data_tileset" } ], "maskBands": [ { "tilesetId": "data_tileset" } ] }
2. Để sử dụng một tệp GeoTIFF mặt nạ làm mặt nạ cho tất cả các dải trong một tệp GeoTIFF khác, hãy sử dụng tệp kê khai sau:
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "data_tileset", "sources": [ { "uris": [ "gs://bucket/data_file.tif" ] } ] }, { "id": "mask_tileset", "sources": [ { "uris": [ "gs://bucket/mask_file.tif" ] } ] } ], "bands": [ { "id": "data_band", "tilesetId": "data_tileset" }, { "id": "qa_band", "tilesetId": "data_tileset" } ], "maskBands": [ { "tilesetId": "mask_tileset" } ] }
3. Để sử dụng GeoTIFF làm mặt nạ cho một dải cụ thể trong một tệp khác, hãy sử dụng tệp kê khai sau (điểm khác biệt với trường hợp trước là trường bandIds
trong maskBands
được đặt):
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "id": "data_tileset", "sources": [ { "uris": [ "gs://bucket/data_file.tif" ] } ] }, { "id": "mask_tileset", "sources": [ { "uris": [ "gs://bucket/mask_file.tif" ] } ] } ], "bands": [ { "id": "data_band", "tilesetId": "data_tileset" }, { "id": "qa_band", "tilesetId": "data_tileset" } ], "maskBands": [ { "tilesetId": "mask_tileset", "bandIds": ["data_band"] } ] }
Trong ví dụ cuối cùng, chúng ta đang làm việc với hai dải từ nhóm thẻ thông tin data_tileset
, nhưng chỉ áp dụng mặt nạ cho một trong các dải (data_band
), như được chỉ định bởi trường bandIds
của đối tượng danh sách maskBands
duy nhất được cung cấp.
Xin lưu ý rằng chỉ dải cuối cùng của tập hợp thẻ thông tin được đề cập trong maskBands
mới được dùng làm dải mặt nạ.
Chính sách về mô hình kim tự tháp
Khi tạo kim tự tháp hình ảnh trong quá trình nhập, Earth Engine phải liên tục giảm lưới 2x2 pixel thành một pixel, chuyển đổi giá trị pixel theo một cách nào đó. Theo mặc định, các giá trị pixel được tính trung bình, đây là việc nên làm trong hầu hết các trường hợp khi dải quét đại diện cho dữ liệu liên tục. Tuy nhiên, có hai trường hợp khi dựa vào giá trị mặc định sẽ tạo ra kết quả không chính xác. Trong trường hợp này, bạn phải đặt trường pyramidingPolicy
trong định nghĩa băng tần (nếu không đặt, giá trị của trường này được giả định là "MEAN" theo mặc định).
Để phân loại hình ảnh đường quét (ví dụ: phân loại lớp phủ đất), cách hợp lý nhất để tạo hình chóp pixel là lấy phần lớn trong số 4 giá trị để tạo ra giá trị tiếp theo. Bạn có thể thực hiện việc này bằng cách sử dụng chính sách "MODE" về hình kim tự tháp:
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/landcover.tif" ] } ] } ], "bands": [ { "id": "landcover", "pyramidingPolicy": "MODE" } ] }
Đối với các dải quét mà "MEAN" (TRUNG BÌNH) hoặc "MODE" (CHẾ ĐỘ) không có ý nghĩa (ví dụ: pixel được đóng gói bit), bạn nên sử dụng chính sách tạo kim tự tháp "SAMPLE" (MẪU). "SAMPLE" luôn lấy giá trị của pixel trên cùng bên trái từ mỗi lưới 2x2. Ví dụ sau đây chỉ định chính sách tạo kim tự tháp "MEAN" cho một dải đại diện cho một biến liên tục ("NDVI") và "SAMPLE" cho dải "QA" của dữ liệu.
{ "name": "projects/earthengine-legacy/assets/users/username/some_folder/some_id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/ndvi.tif" ] } ] } ], "bands": [ { "id": "NDVI", "tilesetBandIndex": 0, "pyramidingPolicy": "MEAN" }, { "id": "QA", "tilesetBandIndex": 1, "pyramidingPolicy": "SAMPLE" } ] }
Thời gian bắt đầu và kết thúc
Tất cả thành phần phải chỉ định thời gian bắt đầu và kết thúc để cung cấp thêm bối cảnh cho dữ liệu, đặc biệt là nếu các thành phần đó được đưa vào bộ sưu tập. Các trường này không bắt buộc, nhưng bạn nên sử dụng khi có thể.
Thời gian bắt đầu và kết thúc thường là thời gian quan sát, chứ không phải thời gian tạo tệp nguồn.
Để đơn giản, thời gian kết thúc được coi là ranh giới riêng biệt. Ví dụ: đối với các thành phần kéo dài đúng một ngày, hãy sử dụng thời gian nửa đêm của hai ngày liên tiếp (ví dụ: 1980-01-31T00:00:00 và 1980-02-01T00:00:00) cho thời gian bắt đầu và kết thúc. Nếu thành phần không có thời lượng, hãy đặt thời gian kết thúc giống với thời gian bắt đầu. Biểu thị thời gian trong tệp kê khai dưới dạng chuỗi ISO 8601. Bạn nên giả định rằng thời gian kết thúc là riêng biệt (ví dụ: nửa đêm của ngày tiếp theo đối với các thành phần hằng ngày) để đơn giản hoá các giá trị ngày.
Ví dụ:
{ "name": "projects/some-project-id/assets/some-asset-id", "tilesets": [ { "sources": [ { "uris": [ "gs://bucket/img_20190612.tif" ] } ] } ], "startTime": "1980-01-31T00:00:00Z", "endTime": "1980-02-01T00:00:00Z" }
Tài liệu tham khảo về cấu trúc tệp kê khai
Cấu trúc JSON sau đây bao gồm tất cả các trường tệp kê khai có thể tải hình ảnh lên. Tìm định nghĩa trường trong phần Định nghĩa trường tệp kê khai sau đây.
{ "name": <string>, "tilesets": [ { "dataType": <string>, "id": <string>, "crs": <string>, "sources": [ { "uris": [ <string> ], "affineTransform": { "scaleX": <double>, "shearX": <double>, "translateX": <double>, "shearY": <double>, "scaleY": <double>, "translateY": <double> } } ] } ], "bands": [ { "id": <string>, "tilesetId": <string>, "tilesetBandIndex": <int32>, "missingData": { "values": [<double>] }, "pyramindingPolicy": <string> } ], "maskBands": [ { "tilesetId": <string>, "bandIds": [ <string> ] } ], "footprint": { "points": [ { "x": <double>, "y": <double> } ], "bandId": <string> }, "missingData": { "values": [<double>] }, "pyramidingPolicy": <string>, "uriPrefix": <string>, "startTime": { "seconds": <integer> }, "endTime": { "seconds": <integer> }, "properties": { <unspecified> } }
Định nghĩa trường tệp kê khai
tên
string
Tên của thành phần sẽ được tạo.
name
có định dạng "projects/*/assets/**"
(ví dụ: "projects/earthengine-legacy/assets/users/USER/ASSET").
tập hợp thẻ thông tin
list
Danh sách các từ điển xác định thuộc tính cho bộ thẻ thông tin.
Hãy xem các trường phần tử từ điển tilesets
sau đây để biết thêm thông tin.
tilesets[i].dataType
string
Chỉ định loại dữ liệu dạng số của dữ liệu. Giá trị mặc định là loại mà GDAL báo cáo, trong trường hợp này, bạn không cần xác định.
Loại dữ liệu | Giá trị |
---|---|
Không xác định | "DATA_TYPE_UNSPECIFIED" |
Số nguyên 8 bit có dấu | "INT8" |
Số nguyên 8 bit không dấu | "UINT8" |
Số nguyên 16 bit có dấu | "INT16" |
Số nguyên 16 bit không dấu | "UINT16" |
Số nguyên 32 bit có dấu | "INT32" |
Số nguyên 32 bit không dấu | "UINT32" |
Số thực 32 bit | "FLOAT32" |
Số thực 64 bit | "FLOAT64" |
tilesets[i].id
string
Mã của tập hợp thẻ thông tin. Phải là duy nhất trong số các tập hợp thẻ thông tin được chỉ định trong tệp kê khai tài sản. Mã nhận dạng này sẽ bị loại bỏ trong bước xử lý; mã này chỉ được dùng để liên kết một tập hợp thẻ thông tin với một dải. Chuỗi trống là một mã nhận dạng hợp lệ.
tilesets[i].crs
string
Hệ toạ độ tham chiếu của lưới pixel, được chỉ định dưới dạng mã tiêu chuẩn nếu có thể (ví dụ: mã EPSG) và ở định dạng WKT nếu không.
tilesets[i].sources
list
Danh sách từ điển xác định các thuộc tính của tệp hình ảnh và các tệp phụ của tệp hình ảnh đó. Hãy xem các trường phần tử từ điển sources
sau đây để biết thêm thông tin.
tilesets[i].sources[j].uris
list
Danh sách URI của dữ liệu cần nhập. Chỉ hỗ trợ URI Google Cloud Storage. Mỗi URI phải được chỉ định theo định dạng sau: gs://bucket-id/object-id
.
Đối tượng chính phải là phần tử đầu tiên của danh sách và các sidecar được liệt kê sau đó. Mỗi URI có tiền tố là ImageManifest.uriPrefix
nếu được đặt.
tilesets[i].sources[j].affineTransform
dictionary
Biến đổi affine không bắt buộc. Chỉ nên chỉ định nếu dữ liệu từ uris
(bao gồm cả mọi xe phụ) không đủ để đặt các pixel.
Được cung cấp dưới dạng từ điển với các khoá sau: "scaleX", "shearX", "translateX", "shearY", "scaleY", "translateY".
Hãy xem
tài liệu tham khảo này để biết thêm thông tin.
Ví dụ về khoá và giá trị:
{ "scaleX": 0.1, "shearX": 0.0, "translateX": -180.0, "shearY": 0.0, "scaleY": -0.1, "translateY": 90.0 }
băng tần
list
Danh sách các từ điển xác định thuộc tính của một dải tần số lấy từ một tập thẻ thông tin.
Xin lưu ý rằng thứ tự băng tần của tài sản giống với thứ tự của bands
.
Hãy xem các trường phần tử từ điển bands
sau đây để biết thêm thông tin.
bands[i].id
string
Mã (tên) của ban nhạc.
bands[i].tilesetId
string
Mã của tập hợp thẻ thông tin tương ứng với dải.
bands[i].tilesetBandIndex
int32
Chỉ mục băng dựa trên 0 từ tập hợp thẻ thông tin tương ứng với băng.
bands[i].missingData.values
list
Danh sách các giá trị (loại số thực có độ chính xác kép) thể hiện không có dữ liệu nào trong dải tần.
bands[i].pyramidingPolicy
string
Chính sách về mô hình kim tự tháp. Hãy xem đường liên kết này để biết thêm thông tin. Các lựa chọn bao gồm:
- "MEAN" (mặc định)
- "MODE"
- "MẪU"
maskBands
list
Danh sách từ điển xác định các thuộc tính của một dải mặt nạ lấy từ một tập hợp thẻ thông tin.
Bạn có thể cung cấp tối đa 1 dải mặt nạ.
Hãy xem các trường phần tử từ điển maskBands
sau đây để biết thêm thông tin.
maskBands[i].tilesetId
string
Mã của tập hợp thẻ thông tin tương ứng với dải mặt nạ. Dải cuối cùng của tập hợp thẻ thông tin luôn được dùng làm dải mặt nạ.
maskBands[i].bandIds
list of strings
Danh sách mã của các dải tần mà dải tần mặt nạ áp dụng. Nếu để trống, dải mặt nạ sẽ được áp dụng cho tất cả các dải trong thành phần. Mỗi dải chỉ có thể có một dải mặt nạ tương ứng.
dấu chân
dictionary
Một từ điển xác định các thuộc tính của dấu vết của tất cả các pixel hợp lệ trong một hình ảnh.
Nếu để trống, kích thước mặc định sẽ là toàn bộ hình ảnh. Hãy xem các trường phần tử từ điển footprint
sau đây để biết thêm thông tin.
footprint.points
list
Danh sách các điểm xác định dấu vết của tất cả các pixel hợp lệ trong một hình ảnh. Một điểm được xác định bằng một từ điển có các khoá "x" và "y" có giá trị float. Danh sách điểm mô tả một vòng tròn tạo thành phần bên ngoài của một đa giác đơn giản phải chứa tâm của tất cả các pixel hợp lệ của hình ảnh. Đây phải là một vòng tròn tuyến tính: điểm cuối phải bằng điểm đầu. Toạ độ nằm trong phép chiếu của băng do bandId
chỉ định.
Lưu ý: Sử dụng toạ độ không phải số nguyên, chẳng hạn như tâm của mỗi pixel vì footprint
được lấy để bao gồm một pixel nếu pixel (hình chữ nhật 1x1) giao nhau với dấu vết. Để tránh vô tình chọn các pixel liền kề, đừng sử dụng toạ độ có giá trị số nguyên vì đó là ranh giới giữa các pixel. Việc vẽ dấu chân dọc theo tâm điểm ảnh sẽ ngăn việc đưa vào các điểm ảnh không mong muốn, điều này có thể gây ra lỗi khi các điểm ảnh dự kiến nằm cạnh ranh giới bản đồ, chẳng hạn như kinh tuyến đối diện hoặc một cực.
Ví dụ: đối với hình ảnh 2x2 có cả 4 pixel hợp lệ, sau đây là một vòng tròn có thể có:
[ { "x": 0.5, "y": 0.5 }, { "x": 0.5, "y": 1.5 }, { "x": 1.5, "y": 1.5 }, { "x": 1.5, "y": 0.5 }, { "x": 0.5, "y": 0.5 } ]
footprint.bandId
string
Mã của băng có CRS xác định toạ độ của dấu vết. Nếu để trống, dải tần số đầu tiên sẽ được sử dụng.
missingData.values
list
Danh sách các giá trị (loại số thực có độ chính xác kép) biểu thị không có dữ liệu trong tất cả các dải của hình ảnh. Áp dụng cho tất cả các dải tần không chỉ định missingData
riêng.
pyramidingPolicy
string
Chính sách về mô hình kim tự tháp. Nếu không chỉ định, chính sách "MEAN" sẽ được áp dụng theo mặc định. Áp dụng cho tất cả các dải tần không chỉ định dải tần riêng. Hãy xem đường liên kết này để biết thêm thông tin. Các lựa chọn bao gồm:
- "MEAN" (mặc định)
- "MODE"
- "MẪU"
uriPrefix
string
Tiền tố không bắt buộc được thêm vào tất cả uris
được xác định trong tệp kê khai.
startTime
integer
Dấu thời gian liên kết với tài sản, nếu có. Giá trị này thường tương ứng với thời gian chụp ảnh vệ tinh. Đối với các thành phần tương ứng với một khoảng thời gian, chẳng hạn như giá trị trung bình trong một tháng hoặc một năm, dấu thời gian này tương ứng với thời điểm bắt đầu khoảng thời gian đó. Được chỉ định là giây và (không bắt buộc) nano giây kể từ thời gian bắt đầu hệ thống (01/01/1970). Giả định là theo múi giờ UTC.
endTime
integer
Đối với những thành phần tương ứng với một khoảng thời gian, chẳng hạn như giá trị trung bình trong một tháng hoặc một năm, dấu thời gian này tương ứng với thời điểm kết thúc khoảng thời gian đó (không bao gồm). Được chỉ định là giây và (không bắt buộc) nano giây kể từ thời gian bắt đầu hệ thống (01/01/1970). Giả định là theo múi giờ UTC.
các tài sản
dictionary
Một từ điển phẳng tuỳ ý gồm các cặp khoá-giá trị. Khoá phải là chuỗi và giá trị có thể là số hoặc chuỗi. Giá trị danh sách chưa được hỗ trợ cho các thành phần do người dùng tải lên.
Các điểm hạn chế
Kích thước tệp kê khai JSON
Giới hạn kích thước tệp kê khai JSON là 10 MB. Nếu bạn có nhiều tệp cần tải lên, hãy cân nhắc các cách để giảm số lượng ký tự cần thiết để mô tả tập dữ liệu. Ví dụ: sử dụng trường uriPrefix
để không cần cung cấp đường dẫn bộ chứa Google Cloud cho mỗi URI trong danh sách uris
. Nếu cần giảm kích thước thêm, hãy thử rút ngắn tên tệp.
Định dạng tệp hình ảnh
Mỗi tệp hình ảnh phải là hình ảnh TIFF. Nếu CRS không được chỉ định trong tệp kê khai, thì tệp đó phải là GeoTIFF có CRS được nhúng.
Bạn có thể nén tệp TIFF bằng DEFLATE, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP hoặc ZSTD.
Đề xuất để có trải nghiệm tải lên tốt nhất cho các tệp lớn:
- Lựa chọn tốt nhất: ZSTD mang đến sự cân bằng tốt giữa tốc độ và khả năng nén.
- Tránh: LZMA có thể rất chậm mặc dù có khả năng nén tốt.
- Tệp chưa nén: Tệp sẽ có kích thước lớn hơn và thời gian tải lên lâu hơn.
- Nén có tổn hao (ví dụ: JPEG): Có thể thay đổi giá trị pixel. Sử dụng tính năng nén không mất dữ liệu (ví dụ: DEFLATE, LZMA, LZW, ZSTD) trừ phi bạn hiểu rõ tác động tiềm ẩn đối với dữ liệu của mình.