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
- 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.
- Projenizde Cloud Storage API'yi etkinleştirin ve paket oluşturun.
- Earth Engine Python istemcisini yükleyin. Veri yüklemek için kullanacağımız
earthengine
komut satırı aracını içerir. - 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
gs://earthengine-test/region2.csv
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
...," 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.