Tablo manifesti yükleme

Google Earth Engine'a (EE) tablo yüklerken Kod Düzenleyici kullanıcı arayüzünden veya 'earthengine' komut satırı aracının upload komutundan daha fazla esnekliğe ihtiyacınız varsa "manifest" olarak bilinen bir JSON dosyası kullanarak ve komut satırı aracının upload table --manifest komutunu kullanarak tablo yüklemeyi tanımlayabilirsiniz.

Tek seferlik kurulum

  1. Manifest yüklemeleri yalnızca Google Cloud Storage'da bulunan dosyalarla çalışır. Google Cloud Storage'ı kullanmaya başlamak için, henüz yoksa bir Google Cloud projesi oluşturun. Kurulum sırasında faturalandırma için bir kredi kartı belirtmeniz gerektiğini unutmayın. EE şu anda sizden ücret almıyor ancak dosyalarınızı EE'ye yüklemeden önce Google Cloud Storage'a aktarmak küçük bir maliyet gerektirir. Tipik yükleme veri boyutları (onlar veya yüzler gigabayt) için maliyet oldukça düşük olur.
  2. Projenizde Cloud Storage API'yi etkinleştirin ve paket oluşturun.
  3. Earth Engine Python istemcisini yükleyin. Veri yüklemek için kullanacağımız earthengine komut satırı aracını içerir.
  4. Otomatik yüklemeler için projenizle ilişkili bir Google Cloud hizmet hesabı kullanmak isteyebilirsiniz. Test için hizmet hesabına ihtiyacınız yoktur ancak zamanınız olduğunda lütfen bunları kullanmaya başlamayı öğrenin.

Öğe kimlikleri ve adları

Cloud projelerindeki öğeler için projects/my_cloud_project/assets/my_asset kullanın.

Eski projelerde, manifest'teki öğe adının Earth Engine'ın başka bir yerinde görünen öğe kimliğinden biraz farklı olması gerekir. Öğe kimlikleri users/some_user veya projects/some_project ile başlayan öğeleri yüklemek için manifest'teki öğe adının başına projects/earthengine-legacy/assets/ dizesi eklenmelidir. Örneğin, EE öğe kimliği users/username/my_table, projects/earthengine-legacy/assets/users/username/my_table adı kullanılarak yüklenmelidir.

Evet, bu durum projects/some_projects/some_asset gibi kimliklerin projects'nin iki kez geçtiği adlara dönüştürüldüğü anlamına gelir: projects/earthengine-legacy/assets/projects/some_projects/some_asset. Bu durum kafa karıştırıcı olsa da Google Cloud API standartlarına uymak için gereklidir.

Manifestleri kullanma

Olası en basit manifest aşağıda gösterilmiştir. gs://earthengine-test adlı bir Google Cloud Storage paketinden small.csv adlı bir dosya yükler.

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

Kullanmak için manifest.json adlı bir dosyaya kaydedip şunu çalıştırın:

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

(gs://earthengine-test/small.csv dosyası mevcuttur ve herkese açıktır. Test için bu dosyayı kullanabilirsiniz.)

Şekil dosyası yüklemelerinde yalnızca .shp dosyasını belirtin. Diğer dosyalar otomatik olarak algılanır.

Birden fazla kaynak

Kaynak başına bir dosya olacak şekilde birden fazla CSV veya şekil dosyası kaynağı belirtebilirsiniz. Bu durumda, her CSV dosyasının aynı yapıda olması gerekir. Örneğin, region1.csv ve region2.csv adlı iki CSV dosyamız var:

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

Aynı yapıya sahip olsalar da içerikleri farklıdır. Dosyalar gs://earthengine-test/region1.csv ve gs://earthengine-test/region2.csv adlı bir Cloud Storage paketine yüklendi. Bunları Earth Engine öğesi olarak beslemek için sources listesinde iki giriş içeren bir manifest oluşturun. Örneğin:

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

Başlangıç ve bitiş zamanı

Özellikle koleksiyonlara dahil edilmişlerse verilere daha fazla bağlam bilgisi vermek için tüm öğelerin başlangıç ve bitiş zamanı belirtilmelidir. Bu alanlar zorunlu değildir ancak mümkün olduğunda kullanılmasını önemle tavsiye ederiz.

Başlangıç ve bitiş zamanı genellikle kaynak dosyanın oluşturulduğu zamanı değil, gözlemin yapıldığı zamanı ifade eder.

Bitiş zamanı, basitlik açısından hariç tutulan bir sınır olarak kabul edilir. Örneğin, tam olarak bir gün süren öğeler için başlangıç ve bitiş zamanı olarak iki Öğenin süresi yoksa bitiş zamanını başlangıç zamanıyla aynı olacak şekilde ayarlayın. Manifestlerdeki saatleri ISO 8601 dizeleri olarak gösterin. Tarih değerlerini basitleştirmek için bitiş zamanının hariç olduğunu (örneğin, günlük öğeler için ertesi günün gece yarısı) varsaymanızı öneririz.

Örnek:

{
  "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"
}

Manifest yapısı referansı

Aşağıdaki JSON yapısı, olası tüm tablo yükleme manifesti alanlarını içerir. Alan tanımlarını aşağıdaki Manifest alan tanımları bölümünde bulabilirsiniz.

{
  "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>
  }
}

Manifest alan tanımları

ad

string

Oluşturulacak öğenin adı. name, "projects/*/assets/**" biçimindedir (örneğin, projects/earthengine-legacy/assets/users/USER/ASSET).

kaynaklar

list

Bir tablo dosyasının ve yan araçlarının özelliklerini tanımlayan alanların listesi. Daha fazla bilgi için aşağıdaki sources sözlük öğesi alanlarına bakın.

sources[i].uris

list

Beslenecek verilerin URI'lerinin listesi. Şu anda yalnızca Google Cloud Storage URI'leri desteklenmektedir. Her URI aşağıdaki biçimde belirtilmelidir: gs://bucket-id/object-id. Birincil nesne, listenin ilk öğesi, yan araçlar ise daha sonra listelenmelidir. Her URI'nin başına, ayarlanmışsa TableManifest.uri_prefix eklenir.

sources[i].charset

string

Dizelerin kodunu çözmek için kullanılacak varsayılan karakter kodunun adı. Boşsa varsayılan olarak "UTF-8" karakter kümesi kullanılır.

sources[i].maxErrorMeters

double

Koordinat sistemleri arasında geometri dönüştürülürken izin verilen maksimum hata değeri (metre cinsinden). Boş bırakılırsa varsayılan maksimum hata 1 metredir.

sources[i].maxVertices

int32

Maksimum köşe sayısı. Sıfır değilse geometri, her biri bu sınırın altında olacak şekilde, birbirinden ayrılmış parçalara bölünür.

sources[i].crs

string

Belirtilmemiş herhangi bir geometrinin koordinat referans sistemini belirten varsayılan CRS kodu veya WKT dizesi. Boş bırakılırsa varsayılan değer EPSG:4326 olur. Yalnızca CSV/TFRecord kaynakları için.

sources[i].geodesic

boolean

Geometrideki başka bir şekilde belirtilmemiş kenarların yorumlanması için varsayılan strateji. Yanlış ise kenarların projeksiyonda düz olması gerekir. Doğru ise kenarların bükülmesiyle Dünya yüzeyindeki en kısa yol izlenir. Boş olduğunda, CRS bir projeksiyon koordinat sistemiyse varsayılan olarak false (yanlış) değerine ayarlanır. Yalnızca CSV/TFRecord kaynakları için.

sources[i].primaryGeometryColumn

string

Birden fazla geometri sütunu olduğunda satırın birincil geometrisi olarak kullanılacak geometri sütunu.

Boş bırakılırsa ve birden fazla geometri sütunu varsa karşılaşılan ilk geometri sütunu kullanılır. Yalnızca CSV/TFRecord kaynakları için.

sources[i].xColumn

string

Nokta geometrisini çıkarmak için kullanılan sayısal x koordinatı sütununun adı. yColumn de belirtilmişse ve her iki sütun da sayısal değerler içeriyorsa CRS'de verilen koordinat sisteminde x,y değerleri içeren bir nokta geometrisi sütunu oluşturulur. Boş bırakılırsa ve CRS bir projeksiyon koordinat sistemi belirtmezse varsayılan olarak "boylam" olur. Boş bırakılırsa ve CRS bir projeksiyonlu koordinat sistemi belirttiyse varsayılan olarak boş bir dize olur ve nokta geometrisi oluşturulmaz.

Oluşturulan nokta geometrisi sütunu, {xColumn}_{yColumn} adlı bir sütun zaten varsa {xColumn}_{yColumn}_N'ün benzersiz olması için N'nin {xColumn}_{yColumn}_N'e eklenmesiyle {xColumn}_{yColumn}_N olarak adlandırılır. Yalnızca CSV/TFRecord kaynakları için.

sources[i].yColumn

string

Nokta geometrisini çıkarmak için kullanılan sayısal y koordinatı sütununun adı. xColumn de belirtilmişse ve her iki sütun da sayısal değerler içeriyorsa CRS'de verilen koordinat sisteminde x,y değerleri içeren bir nokta geometrisi sütunu oluşturulur. Boş bırakılırsa ve CRS bir projeksiyon koordinat sistemi belirlemezse varsayılan olarak "enlem" olur. Boş bırakılırsa ve CRS bir projeksiyonlu koordinat sistemi belirttiyse varsayılan olarak boş bir dize olur ve nokta geometrisi oluşturulmaz.

Oluşturulan bir nokta geometrisi sütunu, {xColumn}_{yColumn} adlı bir sütun zaten varsa {xColumn}_{yColumn}_N'ün benzersiz olması için N'nin {xColumn}_{yColumn}_N'e eklenmesiyle {xColumn}_{yColumn}_N olarak adlandırılır. Yalnızca CSV/TFRecord kaynakları için.

sources[i].dateFormat

string

Tarihleri kodlayan alanları ayrıştırmak için kullanılan bir biçim. Biçim kalıbı, Joda-Time DateTimeFormat sınıfı belgelerinde açıklandığı şekilde olmalıdır. Boş bırakılırsa tarihler dize olarak içe aktarılır. Yalnızca CSV/TFRecord kaynakları için.

sources[i].csvDelimiter

string

CSV dosyaları beslenirken bir satırdaki sütun değerleri arasında ayırıcı olarak kullanılan tek bir karakter. Boş bırakılırsa varsayılan olarak ',' olur. Yalnızca CSV kaynakları için.

sources[i].csvQualifier

string

CSV dosyaları beslenirken sütun değerlerini çevreleyen karakter ("tırnak karakteri" olarak da bilinir). Boş bırakılırsa varsayılan olarak " olur. Yalnızca CSV kaynakları için.

Bir sütun değeri, niteliklerle çevrili değilse başındaki ve sondaki boşluklar atılır. Örneğin:

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

uriPrefix

string

Manifest dosyasında tanımlanan tüm uris öğelerinin önüne eklenen isteğe bağlı bir ön ek.

startTime

integer

Öğeyle ilişkili zaman damgası (varsa). Bu genellikle verilerin toplandığı zamana karşılık gelir. Bir ay veya yıl boyunca ortalama değerler gibi bir zaman aralığına karşılık gelen öğeler için bu zaman damgası, söz konusu aralığın başlangıcına karşılık gelir. Dönem (1970-01-01) itibarıyla saniye ve (isteğe bağlı olarak) nanosaniye olarak belirtilir. UTC saat diliminde olduğu varsayılır.

endTime

integer

Bir ay veya yıl boyunca ortalama değerler gibi bir zaman aralığına karşılık gelen öğeler için bu zaman damgası, söz konusu aralığın sonuna (hariç) karşılık gelir. Dönem (1970-01-01) itibarıyla saniye ve (isteğe bağlı olarak) nanosaniye olarak belirtilir. UTC saat diliminde olduğu varsayılır.

mülkler

dictionary

Anahtar/değer çiftlerinin keyfi bir düz sözlüğü. Anahtarlar dize, değerler ise sayı veya dize olabilir. Liste değerleri, kullanıcı tarafından yüklenen öğeler için henüz desteklenmiyor.

columnDataTypeOverrides

dictionary

Otomatik tür algılama düzgün çalışmıyorsa bu alanı anahtar olarak sütun adlarıyla ve değerler olarak aşağıdaki sabitlerden biriyle kullanın: COLUMN_DATA_TYPE_STRING, COLUMN_DATA_TYPE_NUMERIC, COLUMN_DATA_TYPE_LONG.

Sınırlamalar

JSON manifest boyutu

JSON manifest dosyası boyutu sınırı 10 MB'tır. Yüklemeniz gereken çok sayıda dosya varsa veri kümesini tanımlamak için gereken karakter sayısını azaltmanın yollarını düşünün. Örneğin, uris listesindeki her URI için GCP paket yolu sağlama ihtiyacını ortadan kaldırmak amacıyla uriPrefix alanını kullanın. Daha fazla boyut azaltma gerekiyorsa dosya adlarını kısaltmayı deneyin.