Nếu cần tải hình ảnh lên Google Earth Engine (EE) linh hoạt hơn 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ể mô tả một tệp tải hình ảnh lên bằng tệp JSON (còn 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ụ hoàn chỉnh trong sổ tay Colab này. Sổ tay này minh hoạ cách tải các ô hình ảnh lên dưới dạng một thành phần duy nhất 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 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 khi thiết lập. Hiện tại, EE không tính phí, nhưng việc chuyển tệp sang Google Cloud Storage trước khi tải lên EE sẽ mất một khoản phí nhỏ. Đối với kích thước dữ liệu tải lên thông thường (hàng chục hoặc hàng trăm gigabyte), chi phí sẽ khá thấp.
- Trong dự án của bạn, hãy bật Cloud Storage API và tạo một bộ chứa.
- Cài đặt ứng dụng Python của Earth Engine. Bộ công cụ này bao gồm công cụ dòng lệnh
earthenginemà chúng ta sẽ dùng để tải dữ liệu lên. - Đối với các tệp tải lên tự động, bạn nên sử dụng một tài khoản dịch vụ Google Cloud được liên kết với dự án của bạn. Bạn không cần tài khoản dịch vụ để thử nghiệm, nhưng khi có thời gian, hãy bắt đầu làm quen với việc sử dụng tài khoản dịch vụ.
Các tệp nguồn rất lớn (100 GB trở lên) có thể được tải lên nhanh hơn nếu được chia thành nhiều ô.
Mã tài sản và tên
Đối với các tài sản thuộc sở hữu của dự án trên đám mây, hãy sử dụng quy ước này cho tên tài sản:
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 hơi khác với mã tài sản hiển thị ở nơi khác trong Earth Engine. Để tải những thành phần có mã nhận dạng 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ụ: mã tài sản EE users/username/my_geotiff phải được tải lên bằng tên projects/earthengine-legacy/assets/users/username/my_geotiff.
Đúng vậy, đ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 mà trong đó projects được đề cập hai lần: projects/earthengine-legacy/assets/projects/some_projects/some_asset.
Điều này có thể gây nhầm lẫn nhưng cần thiết để tuân thủ các tiêu chuẩn của Google Cloud API.
Sử dụng tệp kê khai
Một tệp kê khai cơ bản được thể hiện trong khối mã sau. Tệp này tải một tệp có tên là small.tif lên từ một bộ chứa Google Cloud Storage có tên là 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 đó vào một 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ể 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 có phần phức tạp của JSON là cần thiết để mang lại đủ 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 các pixel từ nhiều tệp nguồn thành một thành phần duy nhất. Cụ thể, có hai cách độc lập để nhóm các tệp lại với nhau:
- Tranh khảm. Đôi khi, nhiều tệp đại diện cho nhiều ô (ví dụ: mỗi ô là một hình vuông 1x1 độ). Các tệp như vậy phải được ghép (hợp nhất với nhau) vào cùng một dải trong một tài sản EE.
- Dây đeo riêng. Đô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 lên nhau dưới dạng các dải trong một tài sản EE.
(Có thể bạn phải sử dụng cả hai cách cùng một lúc, nhưng trường hợp này hiếm khi xảy ra.)
Để mô tả các tuỳ chọn này, tệp kê khai sẽ giới thiệu khái niệm về bộ thẻ thông tin. Một nhóm ô tương ứng với một nguồn GDAL. Do đó, tất cả các nguồn trong một nhóm ô 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 dải, nên một nhóm ô có thể chứa dữ liệu cho nhiều dải EE.
Đối với phương thức nhập nhiều trận đấu, 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 dải tần riêng biệt, tệp kê khai sẽ có dạng như sau (bạn cũng cần thêm một 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 nhóm ô một mã nhận dạng nhóm ô riêng biệt để cho rõ ràng. Mã nhận dạng nhóm thẻ thông tin có thể là một chuỗi tuỳ ý – những chuỗi này không được lưu giữ trong thành phần đã tải lên. Mã nhóm ô chỉ được dùng trong quá trình nhập để phân biệt các nhóm ô 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 dải 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 ô đầu tiên, sau đó từ nhóm ô tiếp theo, v.v.
Theo mặc định, các dải được đặt tên là "b1", "b2", v.v. Để ghi đè tên dải mặc định, hãy thêm phần "bands" (dải) ở 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 tổng số dải trong tất cả các nhóm ô.
Nếu không muốn nhập tất cả các dải từ một tệp, bạn có thể sử dụng trường tilesetBandIndex để cho biết dải GDAL nào cần được nhập.
Băng tần đầ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ây đeo khẩu trang
Tính năng che dải tần được kiểm soát bằng 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 dải mặt nạ luôn được giả định là dải 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ả cá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 có dải cuối cùng được dùng làm mặt nạ cho các dải khác. Tính năng này chỉ hoạt động với GeoTIFF thuộc loại Byte. 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"
]
}
]
}
],
"bands": [
{
"id": "data_band",
"tilesetId": "data_tileset"
},
{
"id": "qa_band",
"tilesetId": "data_tileset"
}
],
"maskBands": [
{
"tilesetId": "data_tileset"
}
]
}2. Để sử dụng GeoTIFF mặt nạ làm mặt nạ cho tất cả các dải trong một 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 tần cụ thể trong tệp khác, hãy sử dụng tệp kê khai sau (điểm khác biệt so 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 nhóm 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 Earth Engine tạo kim tự tháp hình ảnh trong quá trình nhập, công cụ này phải liên tục giảm lưới pixel 2x2 thành một pixel, biế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 raster biểu thị dữ liệu ít nhiều liên tục. Tuy nhiên, có hai trường hợp mà việc 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 đó, bạn phải đặt trường pyramidingPolicy trong định nghĩa dải (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ủ bề mặt đất), cách hợp lý nhất để phân cấp pixel là lấy phần lớn trong số bốn 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 kim tự tháp "MODE":
{
"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 raster mà cả "MEAN" và "MODE" đều không có ý nghĩa (ví dụ: pixel được đóng gói bit), bạn nên sử dụng chính sách kim tự tháp "SAMPLE". "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 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ả tài sả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 tài sả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 bất cứ khi nào 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.
Thời gian kết thúc được coi là ranh giới loại trừ để đơn giản hoá. Ví dụ: đối với các tài sản kéo dài đúng một ngày, hãy sử dụng 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 tài sả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à không bao gồm (ví dụ: nửa đêm của ngày tiếp theo đối với tài sả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 có thể có trong tệp kê khai tải hình ảnh lên. Tìm định nghĩa về trường trong phần Định nghĩa về trường trong tệp kê khai sau đây.
{ "name": <string>, "tilesets": [ { "dataType": <string>, "id": <string>, "crs": <string>, "sources": [ { "uris": [ <stringn>> ], "affineTransform": { "scaleX": <double>, "shearX": <double>, "translateX": <double>, "shearY": <double>, "scaleY": <double>, "translateY": <double> } } ] } ], "bands": [ { "id": <string>, "tilesetId": <string>, "tilesetBandIndex": <int32>, "missingData": { "values": [<doublen>>] }, "pyramindingPolicy": <string> } ], "maskBands": [ { "tilesetId": <string>, "bandIds": [ <stringn>> ] } ], "footprint": { "points": [ { "x": <double>, "y": <doublen>> } ], "bandId": <string> }, "missingData": { "values": [<double>] }, "pyramidingPolicy": <string>, "uriPrefix": <string>, "startTime": { "seconds": <integer> }, "endTime": { "seconds": <integer> }, "properties": { <unspecified> } }
Định nghĩa về trường trong tệp kê khai
tên
string
Tên của thành phần cần tạo.
name có định dạng "projects/*/assets/**"
(ví dụ: "projects/earthengine-legacy/assets/users/USER/ASSET").
bộ thẻ thông tin
list
Danh sách từ điển xác định các thuộc tính cho nhóm 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 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 đó, 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 có dấu 8 bit | "INT8" |
| Số nguyên không dấu 8 bit | "UINT8" |
| Số nguyên có dấu 16 bit | "INT16" |
| Số nguyên không dấu 16 bit | "UINT16" |
| Số nguyên có dấu 32 bit | "INT32" |
| Số nguyên không dấu 32 bit | "UINT32" |
| Dấu phẩy động 32 bit | "FLOAT32" |
| Số thực dấu phẩy động 64 bit | "FLOAT64" |
tilesets[i].id
string
Mã nhận dạng của nhóm ô. Phải là duy nhất trong số các nhóm thẻ được chỉ định trong tệp kê khai thành phầ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 nhóm 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 có mã tiêu chuẩn.
tilesets[i].sources
list
Danh sách các từ điển xác định thuộc tính của một tệp hình ảnh và
các tệp phụ của tệp đó. 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 tệp phụ được liệt kê sau đó. Mỗi URI đều có tiền tố là ImageManifest.uriPrefix nếu được đặt.
tilesets[i].sources[j].affineTransform
dictionary
Phép 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ả tệp phụ) không đủ để đặt pixel.
Được cung cấp dưới dạng từ điển có 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
}dải
list
Danh sách từ điển xác định các thuộc tính của một dải tần duy nhất lấy từ một nhóm thẻ thông tin.
Xin lưu ý rằng thứ tự dải tần của thành phầ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ã nhận dạng (tên) của dải tần.
bands[i].tilesetId
string
Mã nhận dạng của nhóm thẻ thông tin tương ứng với dải.
bands[i].tilesetBandIndex
int32
Chỉ mục dải bắt đầu từ 0 trong nhóm ô tương ứng với dải.
bands[i].missingData.values
list
Danh sách các giá trị (loại kép) không đại diện cho dữ liệu nào trong dải.
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ạ duy nhất lấy từ một nhóm thẻ thông tin.
Bạn chỉ 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ã nhận dạng của nhóm thẻ thông tin tương ứng với dải mặt nạ. Dải cuối cùng của nhóm ô luôn được dùng làm dải mặt nạ.
maskBands[i].bandIds
list of strings
Danh sách mã nhận dạng của các dải mà dải 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 bạn để trống, thì dấu vết 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ị thực. Danh sách các điểm dùng để mô tả một vòng 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 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 dải 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 coi là bao gồm một pixel nếu pixel đó (hình chữ nhật 1x1) giao với dấu chân. Để tránh vô tình chọn các pixel lân cận, đừ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 giúp tránh thêm các điểm ảnh không mong muốn, có thể gây ra lỗi khi các điểm ảnh mong muốn tiếp giáp với ranh giới bản đồ, chẳng hạn như kinh tuyến đối diện hoặc 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 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 dải tần có CRS xác định toạ độ của dấu vết. Nếu để trống, dải tần đầu tiên sẽ được sử dụng.
missingData.values
list
Danh sách các giá trị (loại kép) đại diện cho việc 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 bạn 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 trước 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ó). Thông tin này thường tương ứng với thời điểm chụp ảnh vệ tinh. Đối với những tài sả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 của khoảng thời gian đó. Được chỉ định dưới dạng giây và (không bắt buộc) nano giây kể từ thời gian bắt đầu của hệ thống (1970-01-01). Giả định là theo múi giờ UTC.
endTime
integer
Đối với những tài sả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 dưới dạng giây và (không bắt buộc) nano giây kể từ thời gian bắt đầu của hệ thống (1970-01-01). Giả định là theo múi giờ UTC.
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 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 để loại bỏ
nhu cầu 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 thêm kích thước, 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à một 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.
Sau đây là các đề xuất để có trải nghiệm tải tệp lớn lên tốt nhất:
- Lựa chọn tốt nhất: ZSTD mang lại 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ù nén tốt.
- Tệp không nén: Sẽ dẫn đến tệp 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 phương pháp nén không tổn hao (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.