Python ইনস্টলেশন - Colab নোটবুক

Earth Engine Python API, Google Colaboratory নোটবুকে ডিপ্লয় করা যেতে পারে। Colab নোটবুক হল Jupyter নোটবুক যা ক্লাউডে রান করে এবং Google Drive-এর সাথে অত্যন্ত ইন্টিগ্রেটেড, তাই এগুলি সেট-আপ, অ্যাক্সেস ও শেয়ার করা সহজ। আপনি যদি Google Colab বা Jupyter নোটবুক সম্পর্কে না জানেন, তাহলে Colab স্বাগত সাইট এক্সপ্লোর করার জন্য কিছুটা সময় দিন।

নিম্নলিখিত বিভাগগুলি Google Colab-এ Earth Engine ডিপ্লয় করা এবং থার্ড‑পার্টি Python প্যাকেজ ব্যবহার করে ম্যাপ ও চার্ট ভিজ্যুয়ালাইজ করার বর্ণনা দেয়।

Colab নোটবুক খোলা

Google Drive বা Colaboratory ইন্টারফেস থেকে নোটবুক খোলা যাবে।

নতুন নোটবুক

Google Drive

Google Drive খুলে নতুন ফাইল তৈরি করুন।

  • নতুন > আরও > Colaboratory
  • কোনও ফোল্ডারে ডানদিকের বোতামে ক্লিক করুন এবং প্রসঙ্গ মেনু থেকে আরও > Colaboratory বেছে নিন।

Colab ইন্টারফেস

Colab সাইট ভিজিট করুন এবং নতুন ফাইল তৈরি করুন।

  • ফাইল > নতুন > নতুন Python 3 নোটবুক
  • আপনি আগে Colab ব্যবহার করে থাকলে, উপরে লিঙ্ক করা সাইটে গেলে আপনি ফাইল এক্সপ্লোরার দেখতে পাবেন, যেখানে উইন্ডোর নিচে ড্রপডাউন মেনু ব্যবহার করে আপনি নতুন ফাইল তৈরি করতে পারবেন।

আগে থেকে থাকা নোটবুক

আগে থেকে থাকা নোটবুক ফাইল (.ipynb) Google Drive এবং Colab ইন্টারফেস থেকে খোলা যেতে পারে।

Google Drive

নোটবুক ফাইল কোথায় তৈরি করা হয়েছে তার উপর নির্ভর করে Google Drive-এর বিভিন্ন ফোল্ডারে Colab নোটবুক থাকতে পারে। Google Drive-এ তৈরি করা নোটবুক যে ফোল্ডারে তৈরি করা হয়েছে বা সরানো হয়েছে, সেখানেই থাকবে। Colab ইন্টারফেস থেকে তৈরি করা নোটবুক ডিফল্ট হিসেবে 'Colab Notebooks' নামের ফোল্ডারে সেভ হবে। আপনি Colab ব্যবহার করা শুরু করলে, এই ফোল্ডারটি আপনার Google Drive-এর 'আমার ড্রাইভ' ফোল্ডারে অটোমেটিক যোগ হয়ে যাবে।

Colab ফাইল হলুদ রঙের 'CO' চিহ্ন এবং '.ipynb' ফাইল এক্সটেনশন দ্বারা শনাক্ত করা যেতে পারে। ফাইল খুলতে, সেটির উপর ডবল ক্লিক করুন এবং ফলাফল পৃষ্ঠার উপরে দেখানো বোতাম থেকে এর মাধ্যমে খুলুন > Colaboratory বিকল্প বেছে নিন অথবা ফাইলে ডানদিকের বোতামে ক্লিক করে ফাইলটির সংশ্লিষ্ট মেনু থেকে এর মাধ্যমে খুলুন > Colaboratory বিকল্প বেছে নিন।

Colab ইন্টারফেস

Colab ইন্টারফেস থেকে নোটবুক খুললে, আপনি Google Drive, GitHub ও লোকাল হার্ডওয়্যার থেকে আগে থেকে থাকা ফাইল অ্যাক্সেস করতে পারবেন। প্রাথমিক ব্যবহারের পরে Colab ইন্টারফেস ভিজিট করলে, ফাইল এক্সপ্লোরার মডাল দেখানো হবে। ফাইল এক্সপ্লোরারের সবচেয়ে উপরে থাকা ট্যাব থেকে, একটি সোর্স বেছে নিন এবং আপনি যে .ipynb ফাইল খুলতে চান সেটিতে নেভিগেট করুন। এছাড়াও, Colab ইন্টারফেস থেকে ফাইল > নোটবুক খুলুন বিকল্প বেছে নিয়ে অথবা কীবোর্ডে Ctrl+O একসাথে প্রেস করে ফাইল এক্সপ্লোরার অ্যাক্সেস করা যেতে পারে।

API ইমপোর্ট করুন এবং ক্রেডেনশিয়াল পান

এই বিভাগে Earth Engine Python API ইমপোর্ট করা এবং অ্যাক্সেস যাচাই করার পদ্ধতি দেখানো হয়েছে। এই কন্টেন্ট Colab নোটবুক হিসেবেও উপলভ্য:

Google Colaboratory-তে Earth Engine API ডিফল্ট হিসেবে অন্তর্ভুক্ত থাকে, তাই শুধু ইমপোর্ট ও যাচাইকরণ করলেই হয়। প্রতিটি নতুন Colab সেশনের জন্য অথবা আপনি Colab কার্নেল রিস্টার্ট করলে অথবা কোনও অ্যাক্টিভিটি না থাকার কারণে আপনার Colab ভার্চুয়াল মেশিন রিসাইকেল করা হলে, এইসব ধাপ সম্পূর্ণ করতে হবে।

API ইমপোর্ট করুন

আপনার সেশনে API ইমপোর্ট করতে নিম্নলিখিত সেল রান করুন।

import ee

যাচাই ও ইনিশিয়ালাইজ করুন

Earth Engine সার্ভারে আপনার অ্যাক্সেস যাচাই করতে ee.Authenticate ফাংশন রান করুন এবং এটি শুরু করতে ee.Initialize রান করুন। একটি কোড সেল যোগ করুন, নিম্নলিখিত লাইনগুলি লিখুন, প্রোজেক্ট এডিট করুন এবং সেলটি রান করুন।

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

আপনার Earth Engine অ্যাকাউন্ট অ্যাক্সেস করার জন্য আপনাকে অনুমতি দিতে বলা হবে। এই ধাপ সম্পূর্ণ করতে সেলে প্রিন্ট করা নির্দেশাবলী অনুসরণ করুন।

API টেস্ট করুন

মাউন্ট এভারেস্টের উচ্চতা প্রিন্ট করে API পরীক্ষা করুন। মনে রাখবেন যে API ব্যবহার করার আগে আপনাকে অবশ্যই এটি শুরু করতে হবে। নতুন সেলে নিম্নলিখিত Python স্ক্রিপ্ট রান করুন।

# Print the elevation of Mount Everest.
dem = ee.Image('NASA/NASADEM_HGT/001')
xy = ee.Geometry.Point([86.9250, 27.9881])
elev = dem.sample(xy, 30).first().get('elevation').getInfo()
print('Mount Everest elevation (m):', elev)

ম্যাপ ভিজ্যুয়ালাইজেশন

ee.Image অবজেক্ট নোটবুক আউটপুট সেলে দেখানো যেতে পারে। নিচের দুটি উদাহরণে স্ট্যাটিক ছবি ও ইন্টার‍্যাক্টিভ ম্যাপ দেখানো হয়েছে।

স্থির ছবি

IPython.display মডিউলে Image ফাংশন আছে, যা Earth Engine getThumbUrl ফাংশনে কল করার মাধ্যমে তৈরি হওয়া ছবিকে উপস্থাপন করে এমন URL-এর ফলাফল দেখাতে পারে। নিম্নলিখিত স্ক্রিপ্টটি একটি গ্লোবাল এলিভেশন মডেলের থাম্বনেল প্রদর্শন করবে।

# Import libraries.
import ee
from IPython.display import Image

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Import a DEM and display a thumbnail of it.
dem = ee.Image('NASA/NASADEM_HGT/001').select('elevation')
Image(url=dem.updateMask(dem.gt(0))
  .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512,
                'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))

ইন্টারঅ্যাক্টিভ ম্যাপ

folium প্যাকেজটি ইন্টার‍্যাক্টিভ Leaflet ম্যাপে ee.Image অবজেক্ট দেখানোর জন্য ব্যবহার করা যেতে পারে। Earth Engine থেকে টাইল ম্যানেজ করার জন্য Folium-এর কোনও ডিফল্ট পদ্ধতি নেই, তাই ব্যবহারের আগে একটি পদ্ধতি অবশ্যই সংজ্ঞায়িত করতে হবে এবং folium.Map মডিউলে যোগ করতে হবে।

নিম্নলিখিত স্ক্রিপ্টটি Earth Engine টাইল হ্যান্ডেল করার জন্য একটি পদ্ধতি যোগ করার এবং একটি Leaflet ম্যাপে একটি উচ্চতা মডেল প্রদর্শন করতে এটি ব্যবহার করার একটি উদাহরণ প্রদান করে।

# Import libraries.
import ee
import folium

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the library.
ee.Initialize(project='my-project')

# Define a method for displaying Earth Engine image tiles to folium map.
def add_ee_layer(self, ee_image_object, vis_params, name):
  map_id_dict = ee.Image(ee_image_object).getMapId(vis_params)
  folium.raster_layers.TileLayer(
    tiles = map_id_dict['tile_fetcher'].url_format,
    attr = "Map Data © Google Earth Engine",
    name = name,
    overlay = True,
    control = True
  ).add_to(self)

# Add EE drawing method to folium.
folium.Map.add_ee_layer = add_ee_layer

# Fetch an elevation model.
dem = ee.Image('NASA/NASADEM_HGT/001').select('elevation')
# Set visualization parameters.
vis_params = {
  'min': 0,
  'max': 4000,
  'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}

# Create a folium map object.
my_map = folium.Map(location=[20, 0], zoom_start=3)

# Add the elevation model to the map object.
my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM')

# Add a layer control panel to the map.
my_map.add_child(folium.LayerControl())

# Display the map.
display(my_map)

চার্ট ভিজ্যুয়ালাইজেশন

কিছু Earth Engine ফাংশন সারণীবদ্ধ ডেটা তৈরি করে যা matplotlib-এর মতো ডেটা ভিজ্যুয়ালাইজেশন প্যাকেজ দ্বারা প্লট করা যেতে পারে। নিচের উদাহরণে Earth Engine থেকে সারণীবদ্ধ ডেটা স্ক্যাটার প্লট হিসেবে দেখানো হয়েছে। আরও তথ্যের জন্য Colaboratory-তে চার্ট করা দেখুন।

# Import libraries.
import ee
import matplotlib.pyplot as plt

# Trigger the authentication flow.
ee.Authenticate()

# Initialize the Earth Engine module.
ee.Initialize(project='my-project')

# Fetch a Landsat TOA image.
img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913')

# Select Red and NIR bands, scale them, and sample 500 points.
samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500)

# Arrange the sample as a list of lists.
samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4'])
samp_list = ee.List(samp_dict.get('list'))

# Save server-side ee.List as a client-side Python list.
samp_data = samp_list.getInfo()

# Display a scatter plot of Red-NIR sample pairs using matplotlib.
plt.scatter(samp_data[0], samp_data[1], alpha=0.2)
plt.xlabel('Red', fontsize=12)
plt.ylabel('NIR', fontsize=12)
plt.show()