Πώς να κάνετε την JavaScript του Google Earth Engine σας να τρέχει πιο γρήγορα

Optimization

Βελτιστοποίηση του χρόνου εκτέλεσης των σεναρίων του Google Earth Engine

Το Google Earth Engine (GEE) είναι μια ισχυρή πλατφόρμα για την ανάλυση γεωχωρικών δεδομένων μεγάλης κλίμακας. Ωστόσο, οι χρήστες συχνά αντιμετωπίζουν προβλήματα με το χρόνο εκτέλεσης, ακόμη και όταν τα σενάρια τους εμφανίζονται βασικά. Ένα σενάριο που διαρκεί αρκετά λεπτά για να εκτελεστεί μπορεί να επηρεάσει την παραγωγικότητα και να καθυστερήσει τις πληροφορίες.

Σε αυτήν την περίπτωση, ένας χρήστης έχει δημιουργήσει ένα απλό σενάριο για την επεξεργασία δεδομένων Sentinel και Landsat 8. Παρά την απλότητά του, το σενάριο χρειάζεται περίπου 3-5 λεπτά για να εκτελεστεί. Η κατανόηση του γιατί συμβαίνει αυτό και ο τρόπος βελτιστοποίησης του σεναρίου είναι απαραίτητη για την αποτελεσματική επεξεργασία δεδομένων.

Η απόδοση ενός σεναρίου GEE εξαρτάται από διάφορους παράγοντες, όπως το μέγεθος των δεδομένων, το φιλτράρισμα και την υπολογιστική πολυπλοκότητα. Η μείωση του χρόνου εκτέλεσης περιλαμβάνει τον εντοπισμό σημείων συμφόρησης μέσα στο σενάριο, όπως περιττές λειτουργίες ή μεγάλα σύνολα δεδομένων που επιβραδύνουν την επεξεργασία.

Αυτό το άρθρο θα διερευνήσει τις πιθανές αιτίες των αργών χρόνων εκτέλεσης στο GEE και θα παρέχει πρακτικές συμβουλές για τη βελτιστοποίηση του συγκεκριμένου σεναρίου. Εφαρμόζοντας αυτές τις στρατηγικές, οι χρήστες μπορούν να βελτιώσουν σημαντικά την ταχύτητα και την απόδοση των εργασιών τους ανάλυσης γεωχωρικών δεδομένων.

Εντολή Παράδειγμα χρήσης
normalizedDifference() Αυτή η συνάρτηση χρησιμοποιείται για τον υπολογισμό δεικτών όπως NDVI, NDWI και NDSI υπολογίζοντας τη διαφορά μεταξύ δύο ζωνών, διαιρεμένη με το άθροισμά τους. Είναι ειδικά για την ανάλυση τηλεπισκόπησης όπου χρειάζονται δείκτες βλάστησης, νερού και χιονιού.
filterBounds() Φιλτράρει μια συλλογή εικόνων για να περιλαμβάνει μόνο εικόνες που τέμνουν μια δεδομένη γεωμετρία. Σε αυτήν την περίπτωση, περιορίζει τα δορυφορικά δεδομένα στην περιοχή γύρω από το καθορισμένο σημείο ενδιαφέροντος, καθιστώντας την επεξεργασία πιο αποτελεσματική αποκλείοντας άσχετα δεδομένα.
filterDate() Αυτή η εντολή περιορίζει τη συλλογή εικόνων σε ένα συγκεκριμένο εύρος ημερομηνιών. Για το πρόβλημά μας, είναι σημαντικό να αναλύσουμε τις διαφορές μεταξύ της ίδιας χρονικής περιόδου για τα σύνολα δεδομένων Sentinel και Landsat.
addBands() Προσθέτει νέες υπολογιζόμενες ζώνες (όπως NDVI, NDWI και NDSI) σε κάθε εικόνα της συλλογής. Αυτό είναι απαραίτητο για την εφαρμογή πολλαπλών δεικτών στην ίδια συλλογή εικόνων χωρίς τη δημιουργία ξεχωριστών συνόλων δεδομένων.
unmask() Γεμίζει τα καλυμμένα εικονοστοιχεία με μια καθορισμένη τιμή. Στο σενάριό μας, χρησιμοποιείται για την αποκάλυψη μόνιμων υδάτινων περιοχών, διασφαλίζοντας ότι η επεξεργασία των δεδομένων γίνεται με συνέπεια σε ολόκληρη την περιοχή.
reduce() Μειώνει μια συλλογή εικόνων χρησιμοποιώντας μια καθορισμένη λειτουργία μειωτήρα, όπως το ee.Reducer.percentile(). Εδώ, χρησιμοποιείται για τον υπολογισμό του 30ου εκατοστημόριου των τιμών των pixel, βελτιστοποιώντας τη δημιουργία σύνθετης εικόνας.
clip() Κλιπ μια εικόνα στα όρια της καθορισμένης περιοχής ενδιαφέροντος. Αυτό διασφαλίζει ότι γίνεται επεξεργασία μόνο δεδομένων σχετικά με την περιοχή, γεγονός που επιταχύνει την εκτέλεση.
gt() Αυτή η εντολή σημαίνει "μεγαλύτερο από" και χρησιμοποιείται για τη δημιουργία δυαδικών εικόνων με βάση ένα όριο. Σε αυτή την περίπτωση, προσδιορίζει περιοχές με συχνότητα νερού μεγαλύτερη από 80%.
map() Εφαρμόζει μια συνάρτηση σε κάθε εικόνα της συλλογής. Στο παράδειγμά μας, εφαρμόζει τη συνάρτηση addIndices για τον υπολογισμό των NDVI, NDWI και NDSI σε όλες τις εικόνες της συλλογής, βελτιστοποιώντας τη ροή εργασίας.

Βελτιστοποίηση σεναρίων GEE για βελτιωμένη απόδοση

Στο παρεχόμενο σενάριο, ο στόχος είναι η εξαγωγή και η επεξεργασία δορυφορικών εικόνων από δύο διαφορετικές πηγές: Sentinel και Landsat. Ο Η πλατφόρμα επιτρέπει στους χρήστες να έχουν πρόσβαση σε τεράστιες ποσότητες δορυφορικών δεδομένων και να εφαρμόζουν διάφορες λειτουργίες όπως φιλτράρισμα, ευρετηρίαση και οπτικοποίηση. Ένα από τα βασικά χαρακτηριστικά που χρησιμοποιούνται σε αυτό το σενάριο είναι το συνάρτηση, η οποία χρησιμοποιείται για τον υπολογισμό σημαντικών δεικτών όπως NDVI, NDWI και NDSI. Αυτοί οι δείκτες είναι ζωτικής σημασίας για την ανάλυση της βλάστησης, του νερού και της χιονοκάλυψης στην καθορισμένη περιοχή. Το σενάριο ξεκινά ορίζοντας ένα σημείο ενδιαφέροντος και κεντράρει τον χάρτη σε αυτό χρησιμοποιώντας τις συντεταγμένες που παρέχονται.

Το σενάριο εφαρμόζει πολλά φίλτρα, όπως π.χ και , για μείωση του όγκου των δεδομένων που υποβάλλονται σε επεξεργασία, βελτιώνοντας έτσι τον χρόνο εκτέλεσης. Για παράδειγμα, filterBounds() διασφαλίζει ότι περιλαμβάνονται μόνο οι εικόνες που τέμνουν την περιοχή ενδιαφέροντος, ενώ filterDate() περιορίζει τις εικόνες σε ένα συγκεκριμένο εύρος ημερομηνιών. Αυτό είναι απαραίτητο για την επεξεργασία μεγάλων συνόλων δεδομένων όπως οι εικόνες Sentinel και Landsat, καθώς ελαχιστοποιεί τον υπολογιστικό φόρτο. Επιπλέον, το για την κάλυψη cloud βοηθά στην απόρριψη εικόνων που έχουν πολύ σύννεφο, διασφαλίζοντας καλύτερη ποιότητα ανάλυσης.

Μια σημαντική πτυχή του σεναρίου είναι η συνάρτηση, η οποία προσθέτει υπολογισμένους δείκτες (NDVI, NDWI, NDSI) στις εικόνες, καθιστώντας τις προσβάσιμες για περαιτέρω ανάλυση. Το σενάριο ενσωματώνει επίσης μια μόνιμη μάσκα νερού χρησιμοποιώντας δεδομένα από το σύνολο δεδομένων του JRC Global Surface Water. Η μάσκα νερού βοηθά στον αποκλεισμό περιοχών με υψηλή συχνότητα εμφάνισης νερού (πάνω από 80%), κάτι που διαφορετικά θα μπορούσε να αλλοιώσει τα αποτελέσματα της ανάλυσης βλάστησης και χιονιού. Αυτό γίνεται μέσω του και λειτουργίες, οι οποίες επιτρέπουν στο σενάριο να απομονώνει περιοχές με βάση τις τιμές pixel.

Τέλος, το σενάριο χρησιμοποιεί το λειτουργεί με τον μειωτήρα εκατοστημόριου για τη δημιουργία μιας σύνθετης εικόνας που αντιπροσωπεύει το 30ο εκατοστημόριο των επιλεγμένων τιμών pixel. Αυτή η σύνθετη εικόνα στη συνέχεια κόβεται στην περιοχή ενδιαφέροντος και απεικονίζεται στον χάρτη χρησιμοποιώντας το λειτουργία. Οι οπτικές παράμετροι ορίζονται και για τα σύνθετα Sentinel και Landsat, επιτρέποντας στον χρήστη να τα δει με τις κατάλληλες ρυθμίσεις χρώματος. Συνδυάζοντας διάφορα στάδια επεξεργασίας εικόνας, όπως φιλτράρισμα, κάλυψη και σύνθετη δημιουργία, αυτό το σενάριο παρέχει έναν αποτελεσματικό τρόπο ανάλυσης δορυφορικών εικόνων, αν και θα μπορούσε να εφαρμοστεί περαιτέρω βελτιστοποίηση για τη μείωση του χρόνου εκτέλεσης.

Βελτιστοποίηση της εκτέλεσης σεναρίου του Google Earth Engine για ταχύτερη επεξεργασία

Αυτή η λύση χρησιμοποιεί το Google Earth Engine (GEE) με έμφαση στη βελτιστοποίηση της απόδοσης μειώνοντας τους χρόνους ανάκτησης δεδομένων και απλοποιώντας τις λειτουργίες. Η JavaScript χρησιμοποιείται ως γλώσσα σεναρίου.

var pointJSP = ee.Geometry.Point([86.465263, 20.168076]);
Map.centerObject(pointJSP, 14);
// Combine date variables for flexibility
var startDate = '2024-02-01';
var endDate = '2024-03-01';
// Function to add NDVI, NDWI, NDSI
var addIndices = function(image) {
  var ndvi = image.normalizedDifference(['NIR', 'RED']).rename('NDVI');
  var ndwi = image.normalizedDifference(['NIR', 'SWIR1']).rename('NDWI');
  var ndsi = image.normalizedDifference(['SWIR1', 'SWIR2']).rename('NDSI');
  return image.addBands(ndvi).addBands(ndwi).addBands(ndsi);
};
// Use fewer data points by filtering for cloud-free pixels only once
var sentinel = ee.ImageCollection('COPERNICUS/S2_SR')
  .filterBounds(pointJSP)
  .filterDate(startDate, endDate)
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30));

Χρήση αποτελεσματικής επεξεργασίας δεδομένων για το GEE για την ελαχιστοποίηση των καθυστερήσεων σεναρίων

Αυτή η λύση ενσωματώνει βελτιστοποιημένο χειρισμό δεδομένων συνδυάζοντας υπολογισμούς δεικτών και ορίων. Το JavaScript εφαρμόζεται για την επεξεργασία του Google Earth Engine.

var landsat8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
  .filterBounds(pointJSP)
  .filterDate(startDate, endDate)
  .filter(ee.Filter.lt('CLOUD_COVER', 30));
// Apply water mask for permanent water areas
var waterMask = ee.Image('JRC/GSW1_4/GlobalSurfaceWater').select('occurrence').gt(80).unmask();
// Add indices to Landsat 8 imagery
var landsatIndices = landsat8.map(addIndices);
var composite = landsatIndices.reduce(ee.Reducer.percentile([30])).clip(pointJSP).mask(waterMask.eq(0));
Map.addLayer(composite, {bands: ['RED', 'GREEN', 'BLUE'], min: 0, max: 3000}, 'Landsat Composite');
Map.addLayer(waterMask, {min: 0, max: 1, palette: ['white', 'blue']}, 'Water Mask', false);

Βελτίωση της αποτελεσματικότητας των σεναρίων τηλεπισκόπησης

Ένα βασικό στοιχείο που λαμβάνεται υπόψη όταν εργάζεστε με σενάρια του Google Earth Engine (GEE) είναι η διασφάλιση του αποτελεσματικού χειρισμού των λειτουργιών. Ενώ η χρήση μεγάλων συνόλων δεδομένων όπως το Sentinel και το Landsat είναι συνηθισμένη στην περιβαλλοντική ανάλυση, ο τεράστιος όγκος δεδομένων μπορεί να επιβραδύνει την εκτέλεση σεναρίου. Μια μέθοδος για τη βελτίωση της απόδοσης είναι να διασφαλιστεί ότι υφίστανται επεξεργασία μόνο τα απαραίτητα δεδομένα. Χρησιμοποιώντας εντολές όπως και ελαχιστοποιεί το μέγεθος του συνόλου δεδομένων, το οποίο βοηθά στον εξορθολογισμό των υπολογισμών. Η επιλογή συγκεκριμένων περιοχών ημερομηνιών και γεωγραφικών περιοχών μπορεί να μειώσει σημαντικά τον χρόνο εκτέλεσης.

Μια άλλη πτυχή που επηρεάζει την απόδοση του σεναρίου GEE είναι ο τρόπος επεξεργασίας των δεδομένων. Το παράδειγμα σεναρίου χρησιμοποιεί μια συνάρτηση για τον υπολογισμό σημαντικών δεικτών όπως NDVI, NDWI και NDSI. Αυτοί οι δείκτες προστίθενται ως ζώνες στις συλλογές εικόνων, γεγονός που επιτρέπει μια πιο ενδελεχή ανάλυση. Ωστόσο, ένα συνηθισμένο λάθος είναι η εφαρμογή τέτοιων συναρτήσεων σε ένα ολόκληρο σύνολο δεδομένων χωρίς πρώτα να φιλτράρετε. Είναι σημαντικό να εφαρμόζονται τέτοιες λειτουργίες μετά το φιλτράρισμα για να αποφευχθούν περιττοί υπολογισμοί σε άσχετα δεδομένα.

Η οπτικοποίηση είναι ένα άλλο στοιχείο του σεναρίου που μπορεί να βελτιστοποιηθεί. Η προσθήκη πάρα πολλών επιπέδων ή πολύπλοκων απεικονίσεων μπορεί να μειώσει τον χρόνο επεξεργασίας. Το σενάριο χρησιμοποιεί προκαθορισμένες οπτικές παραμέτρους για την απόδοση των σύνθετων υλικών, αλλά η απόδοση μπορεί να βελτιωθεί με την απενεργοποίηση ορισμένων επιπέδων, εκτός εάν χρειάζονται ρητά. Αυτό βοηθά στο να διατηρείται το σενάριο ελαφρύ, διατηρώντας παράλληλα τη λειτουργικότητά του. Χρησιμοποιώντας εντολές διασφαλίζει επίσης ότι αποδίδεται μόνο η απαραίτητη περιοχή, μειώνοντας τη συνολική επιβάρυνση επεξεργασίας.

  1. Πώς μπορώ να βελτιώσω την απόδοση των σεναρίων GEE μου;
  2. Βελτιστοποιήστε τη χρήση του , και μειώστε το μέγεθος του συνόλου δεδομένων σας πριν από την επεξεργασία.
  3. Γιατί το σενάριο GEE μου αργεί να εκτελεστεί;
  4. Μεγάλα σύνολα δεδομένων και πολύπλοκοι υπολογισμοί μπορούν να επιβραδύνουν την εκτέλεση. Χρήση και να περιοριστεί η επεξεργασία σε σχετικούς τομείς.
  5. Μπορώ να μειώσω τον αριθμό των εικόνων που υποβάλλονται σε επεξεργασία στο GEE;
  6. Ναι, κάνοντας αίτηση για κάλυψη νεφών και να επικεντρωθεί σε συγκεκριμένες περιόδους.
  7. Πώς μπορώ να απλοποιήσω τους υπολογισμούς ευρετηρίου στο σενάριο μου;
  8. Χρησιμοποιήστε μια συνάρτηση όπως για να απλοποιήσετε την προσθήκη πολλαπλών δεικτών (π.χ. NDVI, NDWI) σε ένα βήμα.
  9. Είναι δυνατόν να απεικονιστούν μόνο τα βασικά στρώματα;
  10. Ναι, απενεργοποιήστε τα περιττά επίπεδα και χρησιμοποιήστε απλοποιημένες παραμέτρους οπτικοποίησης με για καλύτερη απόδοση.

Η βελτιστοποίηση των σεναρίων του Google Earth Engine περιλαμβάνει αποτελεσματικό χειρισμό μεγάλων συνόλων δεδομένων, έγκαιρη εφαρμογή φίλτρων και μείωση των περιττών λειτουργιών δεδομένων. Εστίαση σε βασικούς τομείς όπως το φιλτράρισμα κατά και η τοποθεσία μπορεί να μειώσει σημαντικά τον χρόνο επεξεργασίας.

Με την ενσωμάτωση λειτουργιών όπως και χρησιμοποιώντας μάσκες κατωφλίου για την εξάλειψη άσχετων δεδομένων, η απόδοση του σεναρίου μπορεί να βελτιωθεί περαιτέρω. Αυτές οι τεχνικές μπορούν να εξορθολογίσουν την εκτέλεση, προσφέροντας ταχύτερα αποτελέσματα και καλύτερη χρήση της πλατφόρμας Google Earth Engine.

  1. Αυτό το άρθρο δημιουργήθηκε με χρήση περιεχομένου που βασίζεται στην επίσημη τεκμηρίωση του Google Earth Engine, η οποία παρέχει πληροφορίες για τις τεχνικές βελτιστοποίησης σεναρίων. Οδηγοί μηχανών Google Earth
  2. Πρόσθετες πληροφορίες συγκεντρώθηκαν από το φόρουμ της κοινότητας GEE, προσφέροντας συζητήσεις και λύσεις για τη βελτίωση της απόδοσης σε πολύπλοκα σενάρια. Κοινότητα Google Earth Engine
  3. Οι βέλτιστες πρακτικές για το χειρισμό μεγάλων συνόλων δεδομένων αναφέρθηκαν από τη βιβλιογραφία και τα εκπαιδευτικά προγράμματα τηλεπισκόπησης που είναι διαθέσιμα στον ακόλουθο σύνδεσμο. Παρατηρητήριο Γης της NASA