अगर आपको कोड एडिटर यूज़र इंटरफ़ेस (यूआई) या 'earthengine' कमांड-लाइन टूल के upload
कमांड के मुकाबले, Google Earth Engine (EE) में टेबल अपलोड करने के लिए ज़्यादा विकल्प चाहिए, तो "मेनिफ़ेस्ट" के तौर पर जानी जाने वाली JSON फ़ाइल का इस्तेमाल करके टेबल अपलोड करने के बारे में बताएं. साथ ही, कमांड-लाइन टूल के upload table --manifest
कमांड का इस्तेमाल करें.
एक बार किया जाने वाला सेटअप
- मेनिफ़ेस्ट अपलोड की सुविधा, सिर्फ़ Google Cloud Storage में मौजूद फ़ाइलों के साथ काम करती है. अगर आपके पास पहले से कोई Google Cloud प्रोजेक्ट नहीं है, तो Google Cloud Storage का इस्तेमाल शुरू करने के लिए, Google Cloud प्रोजेक्ट बनाएं. ध्यान दें कि सेटअप के लिए, बिलिंग के लिए क्रेडिट कार्ड की जानकारी देना ज़रूरी है. फ़िलहाल, EE खुद से किसी से भी शुल्क नहीं ले रहा है. हालांकि, फ़ाइलों को EE पर अपलोड करने से पहले, उन्हें Google Cloud Storage में ट्रांसफ़र करने पर, थोड़ा शुल्क लिया जाएगा. आम तौर पर अपलोड किए जाने वाले डेटा के साइज़ (दस या सौ गीगाबाइट) के लिए, शुल्क काफ़ी कम होगा.
- अपने प्रोजेक्ट में, Cloud Storage API को चालू करें और एक बकेट बनाएं.
- Earth Engine का Python क्लाइंट इंस्टॉल करें. इसमें
earthengine
कमांड-लाइन टूल शामिल है. इसका इस्तेमाल, हम डेटा अपलोड करने के लिए करेंगे. - अपने-आप अपलोड होने की सुविधा के लिए, अपने प्रोजेक्ट से जुड़े Google Cloud सेवा खाते का इस्तेमाल किया जा सकता है. टेस्टिंग के लिए, आपको सेवा खाते की ज़रूरत नहीं है. हालांकि, जब आपके पास समय हो, तो कृपया सेवा खाते का इस्तेमाल करना शुरू करें.
ऐसेट आईडी और नाम
Cloud प्रोजेक्ट में ऐसेट के लिए, projects/my_cloud_project/assets/my_asset
का इस्तेमाल करें.
पुराने लेगसी प्रोजेक्ट के लिए, मेनिफ़ेस्ट में मौजूद एसेट का नाम, Earth Engine में कहीं और दिखने वाले एसेट आईडी से थोड़ा अलग होना चाहिए. जिन ऐसेट के आईडी users/some_user
या projects/some_project
से शुरू होते हैं उन्हें अपलोड करने के लिए, ऐसेट के नाम में आईडी से पहले projects/earthengine-legacy/assets/
स्ट्रिंग होनी चाहिए. उदाहरण के लिए, EE ऐसेट आईडी users/username/my_table
को projects/earthengine-legacy/assets/users/username/my_table
नाम का इस्तेमाल करके अपलोड किया जाना चाहिए.
हां, इसका मतलब है कि projects/some_projects/some_asset
जैसे आईडी को
ऐसे नामों में बदल दिया जाता है जिनमें 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.csv
और region2.csv
:
आईडी | आकार |
---|---|
1 | {"type":"Point","coordinates":[-119,36]} |
2 | {"type":"Point","coordinates":[-118,37]} |
3 | {"type":"Point","coordinates":[-117,38]} |
आईडी | आकार |
---|---|
4 | {"type":"Point","coordinates":[-112,40]} |
5 | {"type":"Point","coordinates":[-111,41]} |
6 | {"type":"Point","coordinates":[-110,42]} |
इनका स्ट्रक्चर एक जैसा है, लेकिन कॉन्टेंट अलग-अलग है. इन्हें Cloud
स्टोरेज बकेट: gs://earthengine-test/region1.csv
gs://earthengine-test/region2.csv
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
डाले जाने वाले डेटा के यूआरआई की सूची. फ़िलहाल, सिर्फ़ Google Cloud Storage के यूआरआई का इस्तेमाल किया जा सकता है. हर यूआरआई को इस फ़ॉर्मैट में डालना ज़रूरी है:
gs://bucket-id/object-id
.
मुख्य ऑब्जेक्ट, सूची का पहला एलिमेंट होना चाहिए. इसके बाद, साइडकार सूची में शामिल किए जाने चाहिए. अगर सेट किया गया है, तो हर यूआरआई के पहले
TableManifest.uri_prefix
लगा होता है.
sources[i].charset
string
स्ट्रिंग को डिकोड करने के लिए इस्तेमाल किए जाने वाले डिफ़ॉल्ट कोड के बाइट का नाम. अगर यह खाली है, तो डिफ़ॉल्ट रूप से, चरित्र सेट "UTF-8" माना जाता है.
sources[i].maxErrorMeters
double
निर्देशांक सिस्टम के बीच ज्यामिति को ट्रांसफ़ॉर्म करते समय, मीटर में ज़्यादा से ज़्यादा गड़बड़ी. अगर यह फ़ील्ड खाली है, तो गड़बड़ी की ज़्यादा से ज़्यादा सीमा डिफ़ॉल्ट रूप से एक मीटर होगी.
sources[i].maxVertices
int32
वर्टेक्स की ज़्यादा से ज़्यादा संख्या. अगर यह शून्य नहीं है, तो ज्यामिति को अलग-अलग हिस्सों में बांटा जाएगा. हर हिस्सा इस सीमा के अंदर होगा.
sources[i].crs
string
डिफ़ॉल्ट सीआरएस कोड या डब्ल्यूकेट स्ट्रिंग, जो किसी ऐसी ज्यामिति के निर्देशांक रेफ़रंस सिस्टम के बारे में बताती है जिसके लिए कोई निर्देशांक रेफ़रंस सिस्टम तय नहीं किया गया है. इसे खाली छोड़ने पर, डिफ़ॉल्ट तौर पर EPSG:4326 का इस्तेमाल किया जाएगा. सिर्फ़ CSV/TFRecord सोर्स के लिए.
sources[i].geodesic
boolean
ज्यामिति में किनारों को समझने के लिए डिफ़ॉल्ट रणनीति, जिनके लिए कोई रणनीति तय नहीं की गई है. अगर यह वैल्यू 'गलत' है, तो प्रोजेक्शन में किनारे सीधे होते हैं. अगर यह वैल्यू 'सही' है, तो किनारों को पृथ्वी की सतह पर सबसे छोटे रास्ते का पालन करने के लिए, घुमाया जाता है. अगर यह फ़ील्ड खाली है, तो सीआरएस के प्रोजेक्ट किए गए निर्देशांक सिस्टम के लिए, डिफ़ॉल्ट रूप से गलत पर सेट होता है. सिर्फ़ CSV/TFRecord सोर्स के लिए.
sources[i].primaryGeometryColumn
string
जब एक से ज़्यादा ज्यामिति कॉलम हों, तो पंक्ति की मुख्य ज्यामिति के तौर पर इस्तेमाल करने के लिए ज्यामिति कॉलम.
अगर इसे खाली छोड़ा जाता है और एक से ज़्यादा ज्यामिति कॉलम मौजूद होते हैं, तो पहले ज्यामिति कॉलम का इस्तेमाल किया जाता है. सिर्फ़ CSV/TFRecord सोर्स के लिए.
sources[i].xColumn
string
पॉइंट की ज्यामिति का पता लगाने के लिए, अंकों वाले x-कोऑर्डिनेट कॉलम का नाम. अगर
yColumn
भी तय किया गया है और दोनों कॉलम में संख्या वाली वैल्यू हैं, तो
सीआरएस में दिए गए निर्देशांक सिस्टम में x,y वैल्यू के साथ एक पॉइंट ज्यामिति कॉलम बनाया जाएगा. अगर इसे खाली छोड़ दिया जाता है और सीआरएस में प्रोजेक्ट किए गए निर्देशांक सिस्टम की जानकारी नहीं दी जाती है, तो यह डिफ़ॉल्ट रूप से "देशांतर" पर सेट हो जाता है. अगर इसे खाली छोड़ दिया जाता है और सीआरएस में प्रोजेक्ट किए गए निर्देशांक सिस्टम की जानकारी दी जाती है, तो यह डिफ़ॉल्ट रूप से खाली स्ट्रिंग पर सेट हो जाता है और कोई पॉइंट ज्यामिति जनरेट नहीं होती.
जनरेट किए गए पॉइंट ज्यामिति कॉलम का नाम
{xColumn}_{yColumn}_N
रखा जाएगा. इसमें N को इस तरह जोड़ा जाएगा कि {xColumn}_{yColumn}_N
यूनीक हो. ऐसा तब किया जाएगा, जब {xColumn}_{yColumn}
नाम का कॉलम पहले से मौजूद हो. सिर्फ़ CSV/TFRecord सोर्स के लिए.
sources[i].yColumn
string
पॉइंट की ज्यामिति का पता लगाने के लिए, अंकों वाले y कॉर्डिनेट कॉलम का नाम. अगर
xColumn
भी तय किया गया है और दोनों कॉलम में संख्या वाली वैल्यू हैं, तो
सीआरएस में दिए गए निर्देशांक सिस्टम में x,y वैल्यू के साथ एक पॉइंट ज्यामिति कॉलम बनाया जाएगा. अगर इसे खाली छोड़ दिया जाता है और सीआरएस में प्रोजेक्ट किए गए निर्देशांक सिस्टम के बारे में नहीं बताया जाता है, तो यह डिफ़ॉल्ट रूप से "अक्षांश" पर सेट हो जाता है. अगर इसे खाली छोड़ दिया जाता है और सीआरएस में प्रोजेक्ट किए गए निर्देशांक सिस्टम की जानकारी दी जाती है, तो यह डिफ़ॉल्ट रूप से खाली स्ट्रिंग पर सेट हो जाता है और कोई पॉइंट ज्यामिति जनरेट नहीं होती.
जनरेट किए गए पॉइंट ज्यामिति कॉलम का नाम
{xColumn}_{yColumn}_N
रखा जाएगा. इसमें N को इस तरह जोड़ा जाएगा कि {xColumn}_{yColumn}_N
यूनीक हो. ऐसा तब किया जाएगा, जब {xColumn}_{yColumn}
नाम का कॉलम पहले से मौजूद हो. सिर्फ़ 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
...," test",... <== this value IS qualified with quotes becomes the string value: " test" <== leading whitespace remains!
uriPrefix
string
मेनिफ़ेस्ट में तय किए गए सभी uris
के आगे जोड़ा जाने वाला वैकल्पिक प्रीफ़िक्स.
startTime
integer
ऐसेट से जुड़ा टाइमस्टैंप, अगर कोई है. आम तौर पर, यह उस समय से जुड़ा होता है जब डेटा इकट्ठा किया गया था. किसी समयावधि से जुड़ी एसेट के लिए, जैसे कि एक महीने या साल की औसत वैल्यू, यह टाइमस्टैंप उस समयावधि की शुरुआत से जुड़ा होता है. इसे 1970-01-01 के बाद के सेकंड और (ज़रूरी नहीं) नैनोसेकंड के तौर पर दिखाया जाता है. यह माना जाता है कि यह समय, यूटीसी टाइम ज़ोन में है.
endTime
integer
किसी समयावधि से जुड़ी एसेट के लिए, यह टाइमस्टैंप उस समयावधि के आखिर का होता है. जैसे, एक महीने या साल की औसत वैल्यू. इसे 1970-01-01 के बाद के सेकंड और (ज़रूरी नहीं) नैनोसेकंड के तौर पर दिखाया जाता है. यह माना जाता है कि यह समय, यूटीसी टाइम ज़ोन में है.
प्रॉपर्टी
dictionary
की-वैल्यू पेयर की कोई भी फ़्लैट डिक्शनरी. कुंजियां स्ट्रिंग होनी चाहिए और वैल्यू, संख्याएं या स्ट्रिंग हो सकती हैं. उपयोगकर्ता की अपलोड की गई एसेट के लिए, सूची की वैल्यू का इस्तेमाल अभी तक नहीं किया जा सकता.
columnDataTypeOverrides
dictionary
अगर डेटा टाइप का अपने-आप पता चलने की सुविधा ठीक से काम नहीं कर रही है, तो इस फ़ील्ड में कॉलम के नामों को कुंजी के तौर पर और इनमें से किसी एक को वैल्यू के तौर पर इस्तेमाल करें: COLUMN_DATA_TYPE_STRING, COLUMN_DATA_TYPE_NUMERIC, COLUMN_DATA_TYPE_LONG.
सीमाएं
JSON मेनिफ़ेस्ट का साइज़
JSON मेनिफ़ेस्ट फ़ाइल का साइज़ 10 एमबी से ज़्यादा नहीं होना चाहिए. अगर आपको कई फ़ाइलें अपलोड करनी हैं, तो
डेटासेट के बारे में बताने के लिए, वर्णों की संख्या कम करने के तरीकों पर विचार करें. उदाहरण के लिए,
uris
सूची में मौजूद हर यूआरआई के लिए, GCP बकेट पाथ देने की ज़रूरत को खत्म करने के लिए,
uriPrefix
फ़ील्ड का इस्तेमाल करें. अगर साइज़ को और कम करना है, तो फ़ाइल के नाम छोटे करें.