सामान्य सवाल
मुझे एक समस्या आ रही है, मुझे मदद चाहिए!
इस गाइड में दिए गए तरीके का इस्तेमाल करके सवाल पोस्ट करें. साथ ही, ज़्यादा से ज़्यादा जानकारी दें. इसके लिए, Stack Overflow की अच्छी तरह से सवाल पूछने से जुड़ी गाइड देखें. आम तौर पर, इसका मतलब यह होता है कि:
कोड एडिटर में स्क्रिप्ट का लिंक भेजना (लिंक पाने के लिए, "लिंक पाएं" बटन पर क्लिक करें)
स्क्रिप्ट चलाने के लिए ज़रूरी कोई भी ऐसेट शेयर करना
बैच वाले टास्क पूरे न होने पर, पूरे न हुए टास्क का आईडी रिपोर्ट करें. टास्क आईडी इस तरह दिखते हैं:
4C25GIJBMB52PXTEJTF4JLGL. ये टास्क, कोड एडिटर के टास्क टैब में देखे जा सकते हैं. ज़्यादा जानें.
मुझे Earth Engine के आर्किटेक्चर के बारे में कहां से जानकारी मिल सकती है?
यह पेपर देखें: Gorelick et al. 2017.
क्या Google के अलावा, किसी और ने भी Earth Engine के ट्यूटोरियल बनाए हैं?
EDU और ट्रेनिंग के संसाधन पेज देखें.
क्या रिमोट सेंसिंग के लिए कोई सुझाई गई ट्यूटोरियल उपलब्ध हैं?
उज्जवल गांधी का यह मुफ़्त ईई कोर्स देखें. इसमें रिमोट सेंसिंग के बारे में जानकारी देने वाला एक वीडियो भी शामिल है.
Earth Engine प्रोग्रामिंग
कोडिंग से जुड़ी कुछ सामान्य गड़बड़ियां क्या हैं?
डीबग करने से जुड़ी गाइड देखें.
मुझे "... फ़ंक्शन नहीं है" गड़बड़ी का मैसेज क्यों मिल रहा है?
यह गड़बड़ी तब होती है, जब Earth Engine को कॉल किया गया तरीका नहीं मिलता. इन सामान्य वजहों की जांच करें:
स्पेलिंग या केस-सेंसिटिविटी: तरीके केस-सेंसिटिव होते हैं. एपीआई के बारे में जानकारी में दिए गए स्पेलिंग से मिलान करें.
Error: img.normalizedDiff(...) -> Correct: img.normalizedDifference(...)
टाइप कास्टिंग मौजूद नहीं है: .get() जैसे फ़ंक्शन से मिली वैल्यू, सामान्य ee.ComputedObject इंस्टेंस होती हैं. इन्हें साफ़ तौर पर कास्ट किया जाना चाहिए. अनजान ऑब्जेक्ट टाइप कास्टिंग देखें.
Error: dict.get('val').add(5) -> Correct: ee.Number(dict.get('val')).add(5)
क्लाइंट और सर्वर के तरीकों को एक साथ इस्तेमाल करना: पक्का करें कि Earth Engine ऑब्जेक्ट पर, स्टैंडर्ड JavaScript या Python के तरीकों (जैसे कि .push() या .append()) का इस्तेमाल न किया जा रहा हो. क्लाइंट और सर्वर फ़ंक्शन को एक साथ इस्तेमाल करने से बचें लेख पढ़ें.
Error: list.push(4) or list.append(4) -> Correct: list.add(4)
तरीके उपलब्ध नहीं हैं: अगर ऑब्जेक्ट को सही तरीके से टाइप किया गया है और दस्तावेज़ में तरीका मौजूद है या पहले काम कर चुका है, लेकिन अब काम नहीं कर रहा है, तो बग की शिकायत करें.
मैं ee.Image("image") * 2 जैसे बुनियादी गणित के फ़ंक्शन का इस्तेमाल क्यों नहीं कर सकता/सकती?
ईई में, सर्वर-साइड और क्लाइंट-साइड ऑब्जेक्ट या ऑपरेशन को एक साथ इस्तेमाल नहीं किया जाना चाहिए. EE ऑब्जेक्ट पर की जाने वाली सभी कार्रवाइयां, सर्वर-साइड पर की जाती हैं. क्लाइंट-साइड पर की गई कोई भी कंप्यूटिंग, आपके हिसाब से काम नहीं करेगी. ज़्यादा जानकारी के लिए, यह पेज देखें.
मैं for लूप या if/else स्टेटमेंट का इस्तेमाल कैसे करूं?
Earth Engine की प्रोग्रामिंग, फ़ंक्शनल भाषा का इस्तेमाल करके की जाती है. इसलिए, लूप और शर्त के आधार पर होने वाली कार्रवाइयों को map या filter जैसे मिलते-जुलते कॉन्सेप्ट का इस्तेमाल करके दिखाया जाना चाहिए. ज़्यादा जानकारी के लिए, यह पेज देखें.
मैं अपनी इमेज या वीडियो में टेक्स्ट लेबल कैसे दिखाऊं?
टेक्स्ट लेबल के लिए, कोई इन-बिल्ट सुविधा उपलब्ध नहीं है. हालांकि, ये काम किए जा सकते हैं:
- तीसरे पक्ष के JS पैकेज का इस्तेमाल करें. उदाहरण देखें
- तीसरे पक्ष के Python पैकेज geemap का इस्तेमाल करें.
- EE QGIS प्लगिन का इस्तेमाल करके, QGIS में EE इमेज का इस्तेमाल करें
क्या कुछ स्टैंडर्ड कलर पैलेट इस्तेमाल किए जा सकते हैं?
तीसरे पक्ष के JS पैकेज ee-palettes का इस्तेमाल करें.
मैं Earth Engine का इस्तेमाल करने वाली अपनी वेबसाइट कैसे बनाऊं?
बुनियादी ऐप्लिकेशन के लिए, Earth Engine Apps का इस्तेमाल करें. ज़्यादा मुश्किल मामलों में, EE की सुविधा वाले App Engine ऐप्लिकेशन बनाए जा सकते हैं.
मैप आईडी कैसे काम करते हैं?
मैप आईडी (एपीआई में इन्हें mapid कहा जाता है) ऐसी कुंजियां होती हैं जिनकी मदद से क्लाइंट, मैप टाइल फ़ेच कर सकते हैं. हर आईडी एक हैश होता है. इसे getMapId एंडपॉइंट को इमेज एक्सप्रेशन देकर बनाया जाता है. नतीजे के तौर पर मिले आईडी, कुंजियां होती हैं. ये इमेज एक्सप्रेशन और उपयोगकर्ता के क्रेडेंशियल, दोनों की ओर इशारा करती हैं. इनका इस्तेमाल बाद में टाइल जनरेट करने के लिए किया जाएगा.
मैप टाइल का अनुरोध करने के लिए, टाइल की जगह (x, y, zoom) के साथ-साथ mapid (इमेज और क्रेडेंशियल की कुंजी) की जानकारी देनी होती है. एक ही आईडी का इस्तेमाल करके, कई मैप टाइल लोड की जा सकती हैं. mapid कुंजियों को फिर से इस्तेमाल करने पर कोई पाबंदी नहीं है. हालांकि, इनकी समयसीमा कुछ घंटों के बाद खत्म हो जाती है. हम यह नहीं बताते कि ये कुकी कितने समय तक बनी रहती हैं. हालांकि, आपको ऐसा कोड लिखना चाहिए जो आईडी के खत्म होने पर भी काम करता रहे.
इन आईडी को बनाने के लिए, कुछ डेटा सेव करना होता है और क्रेडेंशियल की पुष्टि करनी होती है. इसलिए, इन्हें ज़्यादा से ज़्यादा समय तक फिर से इस्तेमाल करना सबसे अच्छा होता है. खास तौर पर, getMapId एंडपॉइंट से जुड़ा कोई एपीआई कोटा नहीं है. हालांकि, अगर किसी वर्कफ़्लो में getMapId ऑब्जेक्ट बनाने की दर, टाइलें फ़ेच करने की दर के आस-पास है, तो हो सकता है कि वह सही तरीके से काम न कर रहा हो.mapid Earth Engine के पास इन आईडी को हटाने, उनकी सूची बनाने या उन्हें मैनेज करने के लिए कोई एपीआई एंडपॉइंट नहीं है, क्योंकि ये अस्थायी संसाधन हैं.
ee.Algorithms.If(), सही और गलत, दोनों मामलों को क्यों प्रिंट करता है?
function a() { print("true"); }
function b() { print("false"); }
// Prints 'true' and 'false'.
ee.Algorithms.If(true, a(), b());
If() एल्गोरिदम, Earth Engine पर मौजूद अन्य सभी एल्गोरिदम की तरह ही काम करता है. इसका मतलब है कि एल्गोरिदम को चलाने से पहले, इसके सभी तर्कों का आकलन करना ज़रूरी है.
एल्गोरिदम को trueCase और falseCase, दोनों के नतीजे मिलते हैं. इसके बाद, वह condition आर्ग्युमेंट के आधार पर किसी एक को चुनता है और उसे दिखाता है. हालांकि, इन वैल्यू को एल्गोरिदम में पास करने के लिए, दोनों पाथ को पहले ही एक्ज़ीक्यूट करना होता है.
मुझे "अनुरोध पेलोड का साइज़, तय सीमा से ज़्यादा है" वाली गड़बड़ी का मैसेज मिलता है
आपने Earth Engine को बहुत बड़ा अनुरोध भेजा है. आम तौर पर, ऐसा तब होता है, जब कोड में क्लाइंट-साइड के कई 'for' लूप का इस्तेमाल किया जाता है या कई ज्यामिति ऑब्जेक्ट से FeatureCollection बनाया जाता है. दूसरे मामले में, अपनी स्क्रिप्ट में इस तरह की ज्यामिति बनाने के बजाय, उन्हें शामिल करके एक CSV फ़ाइल जनरेट करें और उसे टेबल ऐसेट में अपलोड करें.
ee.Image.clip() और ee.Filter.bounds() में क्या अंतर है?
GIS Stack Exchange की यह थ्रेड देखें.
ee.Image.clip() फ़ंक्शन, उन पिक्सल को मास्क कर देता है जो दिए गए ee.Geometry या ee.Feature से नहीं मिलते. इससे वे पिक्सल, विज़ुअलाइज़ेशन में पारदर्शी हो जाते हैं और उन्हें कंप्यूटेशन में शामिल नहीं किया जाता. इसे किसी इमेज से पिक्सल हटाने के तौर पर देखा जा सकता है.
ee.Filter.bounds() फ़ंक्शन, ee.Geometry या ee.Feature के साथ इमेज के इंटरसेक्शन के आधार पर, ee.ImageCollection से ee.Image ऑब्जेक्ट को फ़िल्टर करता है. इसका इस्तेमाल, विश्लेषण के दायरे को सिर्फ़ उन इमेज तक सीमित करने के लिए किया जाता है जो किसी दिए गए क्षेत्र से जुड़ी हैं. इससे एक्सप्रेशन को ऑप्टिमाइज़ करने में मदद मिलती है.
इमेज पिक्सल को फ़ीचर कलेक्शन में कैसे बदलें, जिसमें हर पिक्सल के लिए एक फ़ीचर हो?
ee.Image.sample() फ़ंक्शन का इस्तेमाल करें. फ़ंक्शन के एपीआई के रेफ़रंस पेज पर, इस्तेमाल के उदाहरण देखें.
ee.ImageCollection.merge() और ee.ImageCollection.combine() में क्या अंतर है?
ee.ImageCollection.merge() फ़ंक्शन, दो कलेक्शन की सभी इमेज को एक कलेक्शन में मर्ज करता है. भले ही, उनकी इमेज में एक जैसे बैंड, मेटाडेटा, सीआरएस या स्केल हों या न हों. यह दो कलेक्शन का यूनियन होता है. combine() तरीके में, दो कलेक्शन की मिलती-जुलती इमेज के बैंड को एक कलेक्शन में मिलाया जाता है. मिलती-जुलती इमेज का आईडी (system:index प्रॉपर्टी) एक ही होता है. यह इमेज आईडी के आधार पर, दो कलेक्शन का इनर जॉइन होता है. इसमें मिलती-जुलती इमेज के बैंड को एक साथ जोड़ा जाता है. मिलती-जुलती इमेज के लिए, दूसरी इमेज के बैंड को पहली इमेज में जोड़ा जाता है. हालांकि, पहली इमेज को दूसरी इमेज से बदलना ज़रूरी नहीं है. अगर मिलती-जुलती कोई इमेज नहीं है, तो खाली कलेक्शन दिखाया जाता है.
तारीख की अलग-अलग सीमाओं के हिसाब से, इमेज कलेक्शन को कैसे फ़िल्टर करें?
GIS Stack Exchange की यह थ्रेड देखें.
merge() एक साथ कई कलेक्शन इस्तेमाल करें या ee.Filter.or() का इस्तेमाल करें.
किसी पॉइंट के चारों ओर बाउंडिंग बॉक्स कैसे बनाएं?
// Buffer the point by a chosen radius and then get the bounding box.
var LNG = -117.298;
var LAT = 45.162;
var point = ee.Geometry.Point([LNG, LAT]);
var buffer = point.buffer(30000); // half of box width as buffer input
var box = buffer.bounds(); // draw a bounding box around the buffered point
Map.centerObject(box);
Map.addLayer(point);
Map.addLayer(box);
// Map the buffer and bounds procedure over a point feature collection.
var pointCol = ee.FeatureCollection([
ee.Feature(ee.Geometry.Point([LNG + 1, LAT])),
ee.Feature(ee.Geometry.Point([LNG - 1, LAT]))
]);
var boxCol = pointCol.map(function(feature) {
var box = feature.buffer(30000).bounds();
return feature.setGeometry(box.geometry());
});
Map.addLayer(boxCol);
डेटा कैटलॉग
क्या डेटासेट X जोड़ा जा सकता है?
डेटासेट के अनुरोध से जुड़ी गाइड में दिए गए निर्देशों का पालन करके, डेटासेट के अनुरोध से जुड़ी गड़बड़ी की शिकायत करें.
Earth Engine के होम फ़ोल्डर में भी डेटा अपलोड किया जा सकता है. रास्टर डेटा इंपोर्ट करना और टेबल डेटा इंपोर्ट करना लेख पढ़ें.
किसी मौजूदा डेटासेट का नया वर्शन उपलब्ध है
डेटासेट के अनुरोध से जुड़ी गाइड में दिए गए तरीके से, डेटासेट में मौजूद गड़बड़ी की शिकायत करें. साथ ही, बताएं कि आपको डेटासेट को अपडेट करने का अनुरोध करना है.
मौजूदा डेटासेट अपडेट नहीं किया गया है या उसमें ऐसेट मौजूद नहीं हैं
किसी समस्या की शिकायत करने से पहले, अगर हो सके, तो पुष्टि करें कि चुनी गई ऐसेट, डेटासेट उपलब्ध कराने वाली कंपनी की साइट पर मौजूद हैं. ज़्यादा जानकारी के लिए, इमेज मौजूद न होने की समस्या से जुड़ी गाइड देखें.
अगर आपको ImageCollection को फ़िल्टर करके कोई ऐसेट ढूंढनी है, तो पक्का करें कि आपके फ़िल्टर बहुत ज़्यादा पाबंदियों वाले न हों.
खास तौर पर, ध्यान दें कि:
ईएसए ने शुरुआती लेवल 1 की इमेज के लिए, सेंटिनल-2 एसआर (लेवल 2 का डेटा) नहीं बनाया था.
साल 2000 से पहले, Landsat की इमेज पूरी दुनिया के लिए उपलब्ध नहीं थीं.
किसी मौजूदा डेटासेट में गलत वैल्यू मौजूद हैं
डेवलपर फ़ोरम पर पोस्ट करें. ऐसी स्क्रिप्ट शामिल करें जो ऐसेट के ओरिजनल रिज़ॉल्यूशन को ज़ूम इन करती हो. इससे यह साफ़ तौर पर पता चलता है कि कौनसी वैल्यू गलत हैं. बताएं कि आपको वैकल्पिक वैल्यू कहां मिली.
मैं डेटासेट के बारे में और कहां पूछ सकता/सकती हूं?
नासा के डेटासेट के बारे में सवाल पूछने के लिए, नासा अर्थ डेटा फ़ोरम पर जाएं.
अगर आपको कोपरनिकस के डेटासेट पर काम करने वाले टूलबॉक्स के बारे में सवाल पूछने हैं, तो S1, S2, और S3 फ़ोरम देखें.
ईई कैटलॉग कितना बड़ा है?
अक्टूबर 2023 तक, कैटलॉग में 1,000 से ज़्यादा डेटासेट मौजूद हैं. डिस्क पर इसका साइज़ 90 पेटाबाइट से ज़्यादा है. इसमें बिना किसी नुकसान के कंप्रेस करने की सुविधा का इस्तेमाल किया गया है.
EE में मौजूद डेटा को कितनी बार अपडेट किया जाता है?
आम तौर पर, सभी चालू डेटासेट को कम से कम हर दिन अपडेट किया जाता है. हालांकि, ऐसा ज़रूरी नहीं है कि हर दिन सभी डेटासेट में नया डेटा उपलब्ध हो. कुछ डेटासेट को एक दिन में कई बार अपडेट किया जाता है. हालांकि, ऐसी कोई नीति नहीं है जिससे यह पक्का किया जा सके कि कैटलॉग में सबसे नई ऐसेट मौजूद हैं.
मैं प्रोग्राम के हिसाब से, EE कैटलॉग का कॉन्टेंट कैसे देखूं?
डेटासेट की सूची को STAC फ़ॉर्मैट में, Google Cloud Storage बकेट gs://earthengine-stac में एक्सपोर्ट किया जाता है.
एंट्री फ़ाइल catalog.json है.
क्या विश्लेषण के लिए, Google Maps के डेटा या इमेज का इस्तेमाल किया जा सकता है?
Google, विश्लेषण के लिए बेस मैप डेटा का लाइसेंस नहीं देता है और न ही इसे बेचता है.
मैं किसी ऐसेट के अपलोड होने की तारीख कैसे देखूं?
'system:version' ऐसेट प्रॉपर्टी, डेटा को शामिल करने का टाइमस्टैंप है. इसे Unix epoch के बाद से माइक्रोसेकंड के तौर पर फ़ॉर्मैट किया जाता है. यहां एक उदाहरण दिया गया है, जिसमें Landsat इमेज के डेटा को शामिल करने के टाइमस्टैंप को ऐसे फ़ॉर्मैट में बदला गया है जिसे आसानी से पढ़ा जा सकता है.
var image = ee.Image('LANDSAT/LC08/C02/T1_L2/LC08_044034_20210508');
print('Ingest date', ee.Date(image.getNumber('system:version').divide(1000)));
क्या Earth Engine के कैटलॉग में JSON-LD मेटाडेटा मौजूद है?
हां, JSON-LD मेटाडेटा, कैटलॉग के एचटीएमएल पेजों में एम्बेड किए जाते हैं. उदाहरण के लिए, Sentinel-2 पेज में यह ब्लॉक शामिल है:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Earth Engine Data Catalog",
"item": "https://developers.google.com/earth-engine/datasets"
},{
"@type": "ListItem",
"position": 2,
"name": "Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C",
"item": "https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED"
}]
}
</script>
Landsat
simpleComposite एल्गोरिदम कैसे लागू किया जाता है?
सर्वर-साइड पर लागू किया गया कोड, इस JavaScript कोड के बराबर होता है.
मैं लैंडसैट के सर्फ़ेस रिफ़्लेक्टेंस डेटा से, क्लाउड फ़्री कंपोज़िट कैसे बनाऊं?
Landsat Level 2 (सतह से परावर्तित होने वाली रोशनी) डेटा में कई क्वालिटी बैंड होते हैं. इनका इस्तेमाल करके, बादलों और इमेज में मौजूद अन्य अवांछित चीज़ों को छिपाया जा सकता है. Landsat 8 SR इमेज को प्रोसेस करने और बादलों से ढके बिना कंपोज़िट इमेज बनाने के लिए, इन बैंड का इस्तेमाल करने का उदाहरण GIS Stack Exchange की इस पोस्ट में दिया गया है. डेवलपर गाइड में, निगरानी में किए गए क्लासिफ़िकेशन के उदाहरणों में इस्तेमाल करने के लिए, बादलों से मुक्त कंपोज़िट बनाने के लिए भी इसी तरीके का इस्तेमाल किया जाता है.
क्या अलग-अलग सेंसर वाले Landsat डेटा के लिए, सतह के रिफ़्लेक्टेंस को एक जैसा करना ज़रूरी है?
रॉय और अन्य, 2016 में, Landsat 7-8 टीओए और सर्फ़ेस रिफ़्लेक्टेंस के बीच रिफ़्लेक्टेंस के अंतर का विश्लेषण शामिल था. उन्होंने ओएलएस और आरएमए कोएफ़िशिएंट पब्लिश किए, ताकि पाठक एक सेंसर के डेटा की रिफ़्लेक्टेंस वैल्यू को दूसरे सेंसर के डेटा में बदल सकें. पेपर की आखिरी लाइन में कहा गया है: "सेंसर में अंतर बहुत कम होने के बावजूद, Landsat डेटा के इस्तेमाल के आधार पर, इसका काफ़ी असर पड़ सकता है." हालांकि, यह विश्लेषण, डेटा इकट्ठा होने से पहले के डेटा पर आधारित था.
कलेक्शन 1 और कलेक्शन 2 को फिर से प्रोसेस करने के दौरान किए गए सुधारों से, सेंसर के बीच के संबंध पर असर पड़ सकता है. हालांकि, हमारी जानकारी के मुताबिक, कलेक्शन 1 या कलेक्शन 2 के डेटा के लिए, रॉय वगैरह (2016) के जैसे कोई विश्लेषण नहीं किए गए हैं. कोई औपचारिक विश्लेषण न होने के बावजूद, Landsat का इस्तेमाल करने वाले प्रभावशाली लोगों के बीच इस बात पर आम सहमति है कि Collection 2, Level 2 (सतह से परावर्तित होने वाली रोशनी) के डेटा में सुधार करने की ज़रूरत नहीं है. उदाहरण के लिए, Landsat Science Team के माइक वुल्डर ने Collection 2, Level 2 के डेटा को एक जैसा बनाने की ज़रूरत के बारे में पूछे गए सवाल के जवाब में बताया कि ज़मीन के इस्तेमाल की मैपिंग और बदलाव का पता लगाने जैसे ऐप्लिकेशन के लिए, Collection 2 के सर्फ़ेस रिफ़्लेक्टेंस प्रॉडक्ट बहुत सही और भरोसेमंद हैं. इसके लिए, अलग-अलग सेंसर के डेटा को एक जैसा बनाने की ज़रूरत नहीं होती.
मैं एमएसएस इमेज में बादलों और उनकी परछाइयों को कैसे मास्क करूं?
JavaScript Code Editor के लिए, तीसरे पक्ष के msslib मॉड्यूल में MSScvm एल्गोरिदम को लागू किया गया है. साथ ही, इसमें MSS डेटा को एक्सप्लोर करने और तैयार करने के लिए अन्य मददगार फ़ंक्शन भी शामिल हैं.
डेटा प्रबंधन
मैंने जो डेटा अपलोड किया है उसका मालिकाना हक किसके पास है?
Earth Engine की सेवा की शर्तों के मुताबिक, ग्राहकों के पास उस डेटा का मालिकाना हक होता है जिसे वे Earth Engine पर अपलोड करते हैं.
मैं डेटा अपलोड नहीं कर पा रहा/रही हूं!
कोड एडिटर के सबसे ऊपर दाएं कोने में मौजूद, टास्क पैनल में जाकर अपलोड किए जा रहे टास्क का स्टेटस देखें. टास्क के लिए बने पेज पर जाकर भी टास्क देखे जा सकते हैं.
अगर कोई टास्क नहीं है, तो हो सकता है कि आपने Code Editor के ज़रिए फ़ाइल अपलोड करने की कोशिश की हो. हालांकि, नेटवर्क की समस्या की वजह से फ़ाइल अपलोड नहीं हो पाई. इसलिए, टास्क नहीं बनाया गया. किसी दूसरे ब्राउज़र या कंप्यूटर का इस्तेमाल करके देखें.
अगर कोई टास्क पूरा नहीं हुआ है, तो उसमें दिखने वाली गड़बड़ी की जांच करें. अगर कोई खास गड़बड़ी का मैसेज नहीं दिखता है, तो पहले यह पुष्टि करें कि आपकी फ़ाइल खराब नहीं है. इसके लिए, रास्टर फ़ाइलों के लिए gdalinfo या वेक्टर फ़ाइलों के लिए ogr2ogr चलाएं.
ये कमांड, सोर्स फ़ाइलों से सारा डेटा पढ़ने की कोशिश करेंगी. अगर फ़ाइलें करप्ट हैं, तो गड़बड़ियां दिखेंगी.
gdalinfo कॉल का उदाहरण:
gdalinfo -mm -stats -checksum file.tif
ogr2ogr कॉल का उदाहरण, जो in.shp को out.csv में बदल देगा:
ogr2ogr -lco GEOMETRY=AS_WKT -f CSV out.csv in.shp
अगर फ़ाइल मान्य है, तो टास्क आईडी को टेक्स्ट के तौर पर पोस्ट करें. इसे स्क्रीनशॉट के तौर पर पोस्ट न करें. इसके लिए, डेवलपर की ईमेल सूची का इस्तेमाल करें.
टास्क आईडी इस फ़ॉर्मैट में होते हैं: 4C25GIJBMB52PXTEJTF4JLGL. अगर हो सके, तो अपनी सोर्स फ़ाइल को सार्वजनिक रूप से पढ़ने के लिए उपलब्ध कराएं. अगर यह कोई निजी फ़ाइल है, तो इसे सिर्फ़ earthengine@google.com के साथ शेयर करें. ऐसा तब करें, जब आपको Earth Engine टीम से इसकी जांच करानी हो. अगर सोर्स फ़ाइल शेयर नहीं की जा सकती, तो कम से कम gdalinfo -mm -stats -checksum का आउटपुट दें.
अगर Earth Engine किसी प्रोजेक्शन के साथ काम नहीं करता है, तो आपको डेटा अपलोड करने से पहले उसे फिर से प्रोजेक्ट करना होगा. इसके लिए, उदाहरण के लिए, gdalwarp का इस्तेमाल करें.
मैं NetCDF या किसी अन्य ऐसे रास्टर फ़ॉर्मैट में फ़ाइल कैसे अपलोड करूं जिसका इस्तेमाल नहीं किया जा सकता?
Earth Engine में सिर्फ़ GeoTIFF फ़ाइलें अपलोड की जा सकती हैं. GDAL के साथ काम करने वाले अन्य फ़ॉर्मैट को gdal_translate का इस्तेमाल करके, GeoTIFF में बदला जा सकता है. उदाहरण:
gdal_translate -co COMPRESS=DEFLATE file.nc file.tif
ध्यान दें कि कुछ NetCDF या HDF फ़ाइलों में कई सब डेटासेट होते हैं. इन्हें gdalinfo की मदद से खोजा जा सकता है. इस मामले में, gdal_translate कमांड कुछ इस तरह दिखेगी (ध्यान दें कि डबल कोट के बीच का पाथ):
gdal_translate HDF4_EOS:EOS_GRID:"/tmp/MCD12Q1.A2001001.h00v08.005.2011055224312.hdf":MOD12Q1:Land_Cover_Type_1 file.tif
कभी-कभी NetCDF फ़ाइलों में ऐसा प्रोजेक्शन नहीं होता जिसे GDAL पहचानता है. इस मामले में, आपको gdal_translate कमांड लाइन में प्रोजेक्शन और स्पैटियल एक्सटेंट सेट करना होगा. उदाहरण:
gdal_translate -a_srs EPSG:4326 -a_ullr -180 90 180 -90 file.nc file.tid
अपलोड किए गए GeoTIFF के लिए, कंप्रेस करने के किन एल्गोरिदम का इस्तेमाल किया जा सकता है?
अपलोड करने के लिए, GeoTIFF फ़ाइलों को DEFLATE, JPEG, JPEG-XL/JXL, LERC, LERC_DEFLATE, LERC_ZSTD, LZMA, LZW, WEBP या ZSTD का इस्तेमाल करके कंप्रेस किया जा सकता है. लाइव COG रीडिंग के लिए, DEFLATE, JPEG, LZW या ZSTD का इस्तेमाल किया जा सकता है. ZSTD, एक अच्छा विकल्प है. ऐसा इसलिए, क्योंकि यह ज़्यादातर इमेज को कंप्रेस करने के साथ-साथ, उन्हें तेज़ी से डीकंप्रेस भी करता है.
gdal_translate का इस्तेमाल करते समय ZSTD कंप्रेशन लागू करने के लिए, इन विकल्पों को जोड़ें. अगर डेटा में फ़्लोटिंग पॉइंट वैल्यू हैं, तो PREDICTOR को 3 पर सेट करें.
gdal_translate in.tif out.tif \
-co COPY_SRC_OVERVIEWS=YES \
-co TILED=YES \
-co BLOCKXSIZE=512 \
-co BLOCKYSIZE=512 \
-co COMPRESS=ZSTD \
-co PREDICTOR=2 \
-co ZSTD_LEVEL=22 \
-co INTERLEAVE=BAND \
-co NUM_THREADS=ALL_CPUS
मेरे रास्टर डेटा को प्रोसेस करने में कई दिन लग गए हैं और यह अब तक पूरा नहीं हुआ है.
gdalinfo का इस्तेमाल करके देखें कि आपकी फ़ाइल में GDAL का यह विकल्प सेट है या नहीं:
INTERLEAVE=PIXEL. इस विकल्प और कई बैंड वाली फ़ाइलों के लिए, डेटा ट्रांसफ़र कभी पूरा नहीं हो सकता. ऐसा इसलिए, क्योंकि इन फ़ाइलों के लेआउट की वजह से डेटा बहुत धीरे-धीरे पढ़ा जाता है.
ऐसी फ़ाइलों को अपलोड करने से पहले, बैंड-इंटरलीव्ड लेआउट में बदलें:
gdal_translate -co "INTERLEAVE=BAND" src.tif dst.tif
अपलोड किए गए मेरे रास्टर, बेस मैप से मेल नहीं खाते.
अगर डेटा, बेस मैप से थोड़ा अलग है, तो हो सकता है कि प्रोजेक्शन में गलत डेटम (पृथ्वी के आकार के बारे में अनुमान) हो.
ऐसा अक्सर साइनसोडल प्रोजेक्शन के साथ होता है. इसे GDAL मेटाडेटा में पूरी तरह से एन्कोड नहीं किया जा सकता. अगर आपको पता है कि टारगेट प्रोजेक्शन क्या होना चाहिए (जैसे, MODIS साइनसोडल प्रोजेक्शन का इस्तेमाल करने वाली फ़ाइलों के लिए SR-ORG:6974), तो कमांड-लाइन अपलोड के दौरान --crs फ़्लैग या अपलोड मेनिफ़ेस्ट के crs फ़ील्ड को सेट करें.
अगर डेटा बहुत ज़्यादा खराब दिखता है या पूरी तरह से गलत जगह पर दिखता है, तो हो सकता है कि प्रोजेक्शन या अफ़ाइन ट्रांसफ़ॉर्म गलत हो.
मेरा रास्टर सिर्फ़ पूर्वी गोलार्ध पर दिखता है.
आपने शायद ऐसा ग्लोबल रास्टर अपलोड किया है जो देशांतर की रेंज [0, 360] में फैला हुआ है. हालांकि, Earth Engine के लिए रास्टर को [-180, 180] की रेंज में होना ज़रूरी है. डेटा को प्रोसेस करने से पहले, रास्टर के बाएं और दाएं हिस्सों को स्वैप करें. GIS Stack Exchange के ये सुझाव देखें.
मेरी क्लासिफ़िकेशन इमेज में धब्बे क्यों दिख रहे हैं?
आपने शायद डिफ़ॉल्ट MEAN
पिरामिडिंग नीति का इस्तेमाल किया है.
क्लासिफ़िकेशन इमेज के लिए, MODE पिरामिडिंग नीति का इस्तेमाल किया जाना चाहिए. QA/बिटमैस्क इमेज के लिए, MODE पिरामिडिंग नीति का इस्तेमाल किया जाना चाहिए.SAMPLE
मुझे यह गड़बड़ी का मैसेज मिला है: No data value -128.0 cannot be applied to band #0 of type Short<0, 255>.
GDAL, सिंगल-बाइट बैंड को साइंड इंटिजर के तौर पर नहीं मान सकता. इसलिए, यह ऐसे बैंड को अनसाइंड इंटिजर के तौर पर पढ़ता है. इससे, 'कोई डेटा नहीं' के लिए नेगेटिव वैल्यू का इस्तेमाल करने से जुड़ी नीति का उल्लंघन होगा.
अगर आपकी वैल्यू पर सही तरीके से हस्ताक्षर किए गए पूर्णांक हैं, तो मैनिफ़ेस्ट अपलोड का इस्तेमाल करें और इसे अपनी फ़ाइल वाले टाइलसेट सेक्शन में जोड़ें: data_type: "INT8"
अगर आपकी वैल्यू बिना साइन वाली पूर्णांक संख्याएं हैं, तो आपकी फ़ाइल में nodata वैल्यू गलत है. अपलोड करते समय, सही डेटा वैल्यू (या ऐसी वैल्यू जो कभी नहीं होती, अगर कोई मौजूद है) का इस्तेमाल करके इसे बदला जा सकता है. nodata वैल्यू बदलने के लिए, gdal_translate -a_nodata का इस्तेमाल किया जा सकता है. इसे हटाने के लिए, gdal_edit.py -unsetnodata का इस्तेमाल करें.
मैं GeoJSON या किसी ऐसे वेक्टर फ़ॉर्मैट में फ़ाइल कैसे अपलोड करूं जिसका इस्तेमाल नहीं किया जा सकता?
OGR के साथ काम करने वाले फ़ॉर्मैट को CSV या SHP में बदलने के लिए, ogr2ogr का इस्तेमाल करें. उदाहरण:
or2ogr -f "ESRI Shapefile" file.shp file.kml
ध्यान दें कि CSV फ़ाइल अपलोड करने पर, ज्यामिति कॉलम में GeoJSON शामिल हो सकता है.
मुझे Python का इस्तेमाल करके डेटा अपलोड करना है या एक साथ कई फ़ाइलें अपलोड करनी हैं.
कमांड-लाइन अपलोड का इस्तेमाल करें. इस तरह के अपलोड के लिए, सोर्स फ़ाइलों को पहले GCS (Google Cloud Storage) बकेट में रखना ज़रूरी है. अगर GCS का इस्तेमाल, बिना शुल्क वाले टियर की सीमाओं के अंदर किया जाता है, तो इसके लिए कोई शुल्क नहीं देना पड़ता. इसके बारे में जानने के लिए, कीमत की जानकारी वाला पेज देखें.
मुझे एक बड़ी रास्टर मोज़ेक इमेज अपलोड करनी है, जिसे कई टाइलों में बांटा गया है.
अगर सभी फ़ाइलों का प्रोजेक्शन और पिक्सल साइज़ एक जैसा है, तो उन्हें एक ही ऐसेट में एक साथ अपलोड करें. वे अपने-आप मोज़ेक हो जाएंगी.
अगर फ़ाइलों के प्रोजेक्शन या पिक्सल साइज़ अलग-अलग हैं, तो उन्हें एक ही रास्टर ऐसेट में मोज़ेक नहीं किया जा सकता. इसके बजाय, हर टाइल को एक अलग ऐसेट के तौर पर उसी ImageCollection में अपलोड करें. इसे ImageCollection.mosaic() का इस्तेमाल करके मोज़ेक किया जा सकता है
मुझे एक मोज़ेक अपलोड करना है. हालांकि, मुझे टाइलें मैच न होने से जुड़ी गड़बड़ियां मिल रही हैं.
Earth Engine रास्टर मोज़ेक के लिए टाइल का प्रोजेक्शन और पिक्सल साइज़ एक जैसा होना चाहिए. इसके अलावा, टाइलें पिक्सल की सीमाओं पर सटीक तरीके से अलाइन होनी चाहिए.
मुझे GCS बकेट से कोई फ़ाइल अपलोड करनी है, लेकिन Earth Engine को वह नहीं मिल रही है.
ऐसा हो सकता है कि आपने GCS में डेटा अपलोड करने और Earth Engine से कनेक्ट करने के लिए, अलग-अलग Google खातों का इस्तेमाल किया हो. पक्का करें कि GCS फ़ाइल को उस खाते से पढ़ा जा सकता हो जिसका इस्तेमाल Earth Engine से कनेक्ट करने के लिए किया जाता है. अगर ब्राउज़र में एक से ज़्यादा खातों से लॉग इन करने की वजह से आपको समस्या आ रही है, तो गुप्त ब्राउज़र विंडो में Earth Engine से कनेक्ट करें.
मुझे एक साथ कई ऐसेट एक्सपोर्ट करनी हैं.
आपको हर इमेज को अलग-अलग एक्सपोर्ट करना होगा.
मुझे एक ही निर्देश से Folder या ImageCollection को मिटाना है या उसकी जगह बदलनी है.
आपको सबसे पहले हर ऐसेट को दूसरी जगह ले जाना या मिटाना होगा. इसके बाद, पैरंट फ़ोल्डर या कलेक्शन को दूसरी जगह ले जाएं या मिटाएं. अगर बहुत सारी चाइल्ड ऐसेट हैं, तो उन पर बार-बार कार्रवाई करने के लिए, शेल या Python लूप लिखें.
मुझे EE के बाहर से Earth Engine का डेटा सीधे तौर पर ऐक्सेस करना है.
QGIS में Earth Engine प्लगिन होता है.
GDAL में Earth Engine ड्राइवर होता है.
अन्य सिस्टम, EE REST API का इस्तेमाल कर सकते हैं.
मुझे अपनी Earth Engine ऐसेट के किसी हिस्से को अपडेट करना है. इसके लिए, मुझे इसे पूरी तरह से फिर से शामिल नहीं करना है.
EE में अपलोड किए गए रास्टर या वेक्टर डेटा को अपडेट नहीं किया जा सकता. सिर्फ़ ऐसेट के मेटाडेटा की प्रॉपर्टी अपडेट की जा सकती हैं.
मुझे अपने खाते का ऐक्सेस नहीं मिल रहा है. मैं अपनी ऐसेट का क्या करूं?
अगर मूल खाते की नीतियां, डेटा ट्रांसफ़र करने की अनुमति देती हैं, तो कृपया अपनी ऐसेट को किसी दूसरे खाते के साथ शेयर करें. इसके बाद, उन ऐसेट को कॉपी करें जिनका मालिकाना हक नए खाते के पास होना चाहिए. अगर आपको कई ऐसेट ट्रांसफ़र करनी हैं, तो कमांड-लाइन कॉपी यूटिलिटी का इस्तेमाल करें.
किसी खाते को मिटाने पर, उससे जुड़ी ऐसेट को ऐक्सेस नहीं किया जा सकता.
एक्सपोर्ट की गई मेरी इमेज गलत जगह पर है.
कुछ प्रोजेक्शन, जैसे कि साइनसोडल या कोनिकल के लिए, GeoTIFF फ़ाइलें कभी-कभी सभी ज़रूरी प्रोजेक्शन पैरामीटर सेव नहीं कर पाती हैं. इस वजह से, एक्सपोर्ट की गई फ़ाइल को डेस्कटॉप जीआईएस टूल में देखने पर, वह गलत जगह पर दिखती है. इसके अलावा, इसे EE में फिर से शामिल करने पर भी ऐसा होता है.
इस समस्या को ठीक करने के लिए, एक्सपोर्ट crs पैरामीटर तय करें. यह पैरामीटर, GeoTIFF फ़ाइलों के साथ अच्छी तरह से काम करता है. उदाहरण के लिए, अपने इलाके के यूटीएम ज़ोन के लिए EPSG कोड का इस्तेमाल करें.
मुझे COG ऐसेट सेव करने के लिए, Cloud Storage के किस बकेट लोकेशन का इस्तेमाल करना चाहिए?
इसका जवाब इस बात पर निर्भर करता है कि आपको किस चीज़ के लिए ऑप्टिमाइज़ करना है. अगर आपको कम इंतज़ार के समय में कंप्यूटेशन ऐक्सेस के लिए ऑप्टिमाइज़ करना है, तो COG ऐसेट को सेव करने के लिए सबसे अच्छी GCS बकेट लोकेशन US-CENTRAL* है. अन्य बातों के बारे में जानने के लिए, बकेट की लोकेशन पेज देखें.
एक्सपोर्ट की गई फ़ीचर कलेक्शन ऐसेट में, मेरी सेट की गई प्रॉपर्टी सेव नहीं होती हैं.
कोई भी Export.table.* फ़ंक्शन, आउटपुट में टेबल-लेवल की प्रॉपर्टी को सुरक्षित नहीं रखता.
कई आउटपुट फ़ॉर्मैट (जैसे, CSV, GeoJSON) के लिए, इस तरह के मेटाडेटा का इस्तेमाल नहीं किया जा सकता. Export.table.toAsset फ़ंक्शन, टेबल-लेवल की प्रॉपर्टी के साथ काम कर सकता है. हालांकि, फ़िलहाल ऐसा नहीं है.
Drive में CSV फ़ॉर्मैट में एक्सपोर्ट की गई टेबल, XLSX फ़ॉर्मैट में बदल जाती हैं.
Google Drive की सेटिंग के आधार पर, Earth Engine से एक्सपोर्ट की गई CSV टेबल को XLSX फ़ाइलों में बदला जा सकता है. इससे डेटा टाइप कन्वर्ज़न जैसे अनचाहे बदलाव हो सकते हैं. इसके बाद के एक्सपोर्ट के लिए, इस तरीके का इस्तेमाल करके बदलाव करें.
- वेब पर Google Drive में, सबसे ऊपर दाईं ओर मौजूद सेटिंग वाले कॉग पर क्लिक करें.
- सेटिंग पर क्लिक करें.
- स्क्रोल करके, "अपलोड की गई फ़ाइलों को Google Docs एडिटर फ़ॉर्मैट में बदलें" पर जाएं और इसे बंद करें.
कोड एडिटर
मैं कोड एडिटर में साइन इन नहीं कर पा रहा हूं, क्योंकि यह मुझे गलत खाते का इस्तेमाल करने के लिए कह रहा है.
लॉग आउट करें. इसके बाद, "कोई खाता चुनें" पेज पर जाकर, वह खाता चुनें जो Earth Engine का इस्तेमाल करने के लिए रजिस्टर किया गया है. इसके बाद, "Earth Engine Code Editor का इस्तेमाल जारी रखने के लिए कोई खाता चुनें" पेज पर जाकर, उसी खाते को फिर से चुनें. इस पेज पर दिए गए शब्दों में थोड़ा बदलाव हो सकता है.
मुझे किसी ग्लोबल मैप का स्क्रीनशॉट लेना है, लेकिन मुझे वेब मर्केटर प्रोजेक्शन पसंद नहीं है.
Code Editor में इस्तेमाल किया गया मैप प्रोजेक्शन, Web Mercator
('EPSG:3857') है. यह भूमध्य रेखा से दूर मौजूद ऑब्जेक्ट के साइज़ को बड़ा कर देता है. इससे ज़्यादा अक्षांश वाले इलाके, भूमध्य रेखा के आस-पास के इलाकों की तुलना में काफ़ी बड़े दिखते हैं. कोड एडिटर के मैप कैनवस के प्रोजेक्शन को बदला नहीं जा सकता. हालांकि, ee.Image.changeProj तरीके का इस्तेमाल करके, अपनी पसंद के प्रोजेक्शन में मौजूद इमेज को Web Mercator कैनवस में "पेंट" किया जा सकता है.
रॉबिन्सन प्रोजेक्शन में, कोड एडिटर के मैप पर ग्लोबल DEM दिखाने के उदाहरण के लिए, इस तरीके का एपीआई रेफ़रंस पेज देखें.
ध्यान दें कि इस तकनीक का इस्तेमाल सिर्फ़ विज़ुअलाइज़ेशन के लिए किया जाना चाहिए, क्योंकि कोड एडिटर के इंस्पेक्टर और ड्रॉइंग टूल अब भी वेब मर्कटर में काम कर रहे हैं.
मेरी स्क्रिप्ट सेव नहीं होती (Script error: Unknown commit).
अगर स्क्रिप्ट सेव करते समय आपको Script error: Unknown commit मैसेज मिलता है, तो इसका मतलब है कि जिस रिपॉज़िटरी में स्क्रिप्ट सेव की जा रही है वह सिंक नहीं है.
इस स्थिति की वजह अलग-अलग हो सकती है और इसका पता लगाना मुश्किल होता है. इस समस्या को हल करने के लिए, स्क्रिप्ट टैब में सबसे ऊपर दाएं कोने में मौजूद बटन का इस्तेमाल करके, स्क्रिप्ट की सूची को रीफ़्रेश करें. अगर इससे समस्या हल नहीं होती है, तो स्क्रिप्ट टैब में मौजूद 'नया' बटन पर क्लिक करके, नई रिपॉज़िटरी बनाएं और अपनी स्क्रिप्ट को वहां सेव करें. आपको स्क्रिप्ट को सिंक नहीं की गई रिपॉज़िटरी से नई रिपॉज़िटरी में ले जाना पड़ सकता है.