表格資訊清單上傳

如果您需要更靈活的方式將資料表上傳至 Google Earth Engine (EE),而非使用 程式碼編輯器 UIearthengine 指令列工具upload 指令,可以使用稱為「資訊清單」的 JSON 檔案描述資料表上傳作業,並使用指令列工具的 upload table --manifest 指令。

一次性設定

  1. 資訊清單上傳功能僅適用於位於 Google Cloud Storage 中的檔案。如要開始使用 Google Cloud Storage,請建立 Google Cloud 專案 (如果您還沒有專案)。請注意,設定時必須指定用於結帳的信用卡。EE 目前不會向任何人收費,但將檔案轉移至 Google Cloud Storage 後再上傳至 EE 會產生少許費用。對於一般上傳資料大小 (數十或數百 GB),費用會相當低。
  2. 在專案中啟用 Cloud Storage API,並建立值區
  3. 安裝 Earth Engine Python 用戶端。其中包含 earthengine 指令列工具,我們會用來上傳資料。
  4. 如要自動上傳,建議您使用與專案相關聯的 Google Cloud 服務帳戶。您不需要服務帳戶進行測試,但請在有空時開始熟悉如何使用服務帳戶。

資產 ID 和名稱

如果是 Cloud 專案中的資產,請使用 projects/my_cloud_project/assets/my_asset

對於較舊的舊版專案,資訊清單中的資產名稱必須與 Earth Engine 其他位置顯示的資產 ID 略有不同。如要上傳資產 ID 開頭為 users/some_userprojects/some_project 的資產,資訊清單中的資產名稱必須在 ID 前方加上字串 projects/earthengine-legacy/assets/。舉例來說,EE 資產 ID users/username/my_table 應使用名稱 projects/earthengine-legacy/assets/users/username/my_table 上傳。

是的,這表示 projects/some_projects/some_asset 這類 ID 會轉換為名稱,其中 projects 會提及兩次:projects/earthengine-legacy/assets/projects/some_projects/some_asset。這會造成混淆,但為了符合 Google Cloud API 標準,這項操作是必要的。

使用資訊清單

以下是可能最簡單的資訊清單。它會從名為 gs://earthengine-test 的 Google Cloud Storage 值區上傳名為 small.csv 的檔案。

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "sources": [
    {
      "uris": [
        "gs://earthengine-test/small.csv"
      ]
    }
  ]
}

如要使用它,請將它儲存為名為 manifest.json 的檔案,然後執行以下指令:

earthengine upload table --manifest /path/to/manifest.json

(檔案 gs://earthengine-test/small.csv 已存在且可公開讀取,可用於測試)。

上傳的是形狀檔案時,請只指定 .shp 檔案,系統會自動偵測其他檔案。

多個來源

您可以指定多個 CSV 或形狀檔案來源,每個來源一個檔案。在這種情況下,每個 CSV 檔案都必須具有相同的結構。舉例來說,我們有兩個 CSV 檔案:region1.csvregion2.csv

id 形狀
1 {"type":"Point","coordinates":[-119,36]}
2 {"type":"Point","coordinates":[-118,37]}
3 {"type":"Point","coordinates":[-117,38]}
id 形狀
4 {"type":"Point","coordinates":[-112,40]}
5 {"type":"Point","coordinates":[-111,41]}
6 {"type":"Point","coordinates":[-110,42]}

兩者結構相同,但內容不同。這些檔案已上傳至 Cloud Storage 值區:gs://earthengine-test/region1.csvgs://earthengine-test/region2.csv。如要將這些檔案匯入為 Earth Engine 資產,請建立資訊清單,並在 sources 清單中新增兩個項目,如下所示:

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "sources": [
    {
      "uris": [
        "gs://earthengine-test/region1.csv"
      ]
    },
    {
      "uris": [
        "gs://earthengine-test/region2.csv"
      ]
    }
  ]
}

開始與結束時間

所有素材資源都應指定開始和結束時間,以便提供更多資料背景資訊,尤其是如果這些素材資源已納入集合。這些欄位並非必要欄位,但我們強烈建議您盡可能使用這些欄位。

開始和結束時間通常是指觀察時間,而非產生來源檔案的時間。

為了簡化操作,系統會將結束時間視為不包含在內的邊界。舉例來說,如果素材資源的放送時間正好是一天,請將開始和結束時間設為兩個相連日子的午夜 (例如 1980-01-31T00:00:00 和 1980-02-01T00:00:00)。如果素材資源沒有持續時間,請將結束時間設為與開始時間相同。以 ISO 8601 字串表示資訊清單中的時間。建議您假設結束時間不包含在內 (例如每日素材資源的隔天午夜),以簡化日期值。

範例:

{
  "name": "projects/some-project-id/assets/some-asset-id",
  "sources": [
    {
      "uris": [
        "gs://bucket/table_20190612.csv"
      ]
    }
  ],
  "startTime": "1980-01-31T00:00:00Z",
  "endTime": "1980-02-01T00:00:00Z"
}

資訊清單結構參考資料

下列 JSON 結構包含所有可能的表格上傳資訊清單欄位。 如要查看欄位定義,請參閱下方的 資訊清單欄位定義一節。

{
  "name": <string>,
  "sources": [
    {
      "uris": [
        <string>
      ],
      "charset": <string>,
      "maxErrorMeters": <double>,
      "maxVertices": <int32>,
      "crs": <string>,
      "geodesic": <boolean>,
      "primaryGeometryColumn": <string>,
      "xColumn": <string>,
      "yColumn": <string>,
      "dateFormat": <string>,
      "csvDelimiter": <string>,
      "csvQualifier": <string>,
    }
  ],
  "uriPrefix": <string>,
  "startTime": {
    "seconds": <integer>
  },
  "endTime": {
    "seconds": <integer>
  },
  "properties": {
    <unspecified>
  }
}

資訊清單欄位定義

名稱

string

要建立的素材資源名稱。name 的格式為「projects/*/assets/**」(例如 projects/earthengine-legacy/assets/users/USER/ASSET)。

來源

list

欄位清單,定義資料表檔案及其附屬檔案的屬性。詳情請參閱下列 sources 字典元素欄位。

sources[i].uris

list

要擷取的資料 URI 清單。目前僅支援 Google Cloud Storage URI。每個 URI 都必須採用以下格式:gs://bucket-id/object-id。主要物件應為清單的第一個元素,而附屬物件則列在後面。如果已設定,每個 URI 前面都會加上 TableManifest.uri_prefix

sources[i].charset

string

用於解碼字串的預設字元集名稱。如果為空白,系統會預設使用「UTF-8」字元集。

sources[i].maxErrorMeters

double

在座標系統之間轉換幾何圖形時,允許的最大誤差值 (以公尺為單位)。如果留空,則預設的最大誤差為 1 公尺。

sources[i].maxVertices

int32

頂點數量上限。如果不為零,幾何圖形會細分為空間上不相交的部分,每個部分都會低於此限制。

sources[i].crs

string

預設 CRS 代碼或 WKT 字串,可指定任何未指定座標參考系的幾何圖形。如果留空,預設值會是 EPSG:4326。僅適用於 CSV/TFRecord 來源。

sources[i].geodesic

boolean

在幾何圖形中解讀邊緣的預設策略,除非另有指定。如果設為 false,投影時邊緣會變直。如果為 true,邊緣會以曲線方式沿著地球表面上的最短路徑。如果留空,且 CRS 為投影座標系統,則預設為 false。僅適用於 CSV/TFRecord 來源。

sources[i].primaryGeometryColumn

string

當有多個幾何圖形欄時,用來做為資料列主要幾何圖形的幾何圖形欄。

如果留空且有多個幾何圖形資料欄,系統會使用遇到的第一個幾何圖形資料欄。僅適用於 CSV/TFRecord 來源。

sources[i].xColumn

string

用於推斷點幾何圖形的數值 X 座標資料欄名稱。如果您也指定 yColumn,且兩個資料欄都包含數值,系統會使用 CRS 指定的座標系統中的 x、y 值建立點幾何資料欄。如果留空,且 CRS 指定投影座標系統,預設值為「經度」。如果留空,且 CRS 確實指定了投影座標系統,則預設為空字串,且不會產生點幾何圖形。

產生的點座標資料欄會命名為 {xColumn}_{yColumn}_N,其中 N 會加上附加條件,以便在已有名為 {xColumn}_{yColumn} 的資料欄時,讓 {xColumn}_{yColumn}_N 保持唯一性。僅適用於 CSV/TFRecord 來源。

sources[i].yColumn

string

用於推算點幾何圖形的數值 Y 座標資料欄名稱。如果您也指定 xColumn,且兩個資料欄都包含數值,系統會使用 CRS 指定的座標系統中的 x、y 值建立點幾何資料欄。如果留空且 CRS 指定投影座標系統,預設值為「緯度」。如果留空,且 CRS 確實指定了投影座標系統,則預設為空字串,且不會產生點幾何圖形。

產生的點座標資料欄會命名為 {xColumn}_{yColumn}_N,其中 N 會加上附加條件,以便在已有名為 {xColumn}_{yColumn} 的資料欄時,讓 {xColumn}_{yColumn}_N 保持唯一性。僅適用於 CSV/TFRecord 來源。

sources[i].dateFormat

string

用來剖析日期編碼欄位的格式。格式模式必須符合 Joda-Time DateTimeFormat 類別說明文件的說明。如果留空,系統會將日期匯入為字串。僅適用於 CSV/TFRecord 來源。

sources[i].csvDelimiter

string

擷取 CSV 檔案時,單一字元用於區隔一列中各欄的值。如果留空,預設值為 ','。僅限 CSV 來源。

sources[i].csvQualifier

string

擷取 CSV 檔案時,用於括住資料欄值的字元 (又稱為「引號字元」)。如果留空,預設值為 "。僅適用於 CSV 來源。

如果資料欄值沒有以限定符號包圍,系統會裁剪開頭和結尾的空格。例如:

    ..., test,...            <== this value is not qualified
becomes the string value:
    "test"                   <== leading whitespace is stripped
while:
    ...," test",...          <== this value IS qualified with quotes
becomes the string value:
    " test"                  <== leading whitespace remains!

uriPrefix

string

在資訊清單中定義的所有 uris 前方加上選用前置字串。

startTime

integer

與資產相關聯的時間戳記 (如果有的話)。這通常會對應至收集資料的時間。如果素材資源對應的時間間隔為一個月或一年的平均值,這個時間戳記就會對應到該時間間隔的開始時間。以 Epoch (1970-01-01) 起算的秒數和 (選用) 奈秒數表示。假設為世界標準時間時區。

endTime

integer

如果資產對應的時間間隔為一個月或一年的平均值,則這個時間戳記會對應到該時間間隔的結束時間 (不含)。以 Epoch (1970-01-01) 起算的秒數和 (選用) 奈秒數表示。假設為世界標準時間時區。

資源

dictionary

任意鍵/值組合的平面字典。鍵必須是字串,值可以是數字或字串。系統目前不支援使用者上傳的資產的清單值。

columnDataTypeOverrides

dictionary

如果自動類型偵測功能無法正常運作,請使用這個欄位,並將欄名稱做為鍵,以及下列其中一個常數做為值:COLUMN_DATA_TYPE_STRING、COLUMN_DATA_TYPE_NUMERIC、COLUMN_DATA_TYPE_LONG。

限制

JSON 資訊清單大小

JSON 資訊清單檔案大小上限為 10 MB。如果您要上傳的檔案很多,請考慮如何減少描述資料集所需的字元數。舉例來說,您可以使用 uriPrefix 欄位,避免需要為 uris 清單中的每個 URI 提供 GCP 儲存桶路徑。如果需要進一步縮減大小,請嘗試縮短檔案名稱。