آموزش محاسبه NDVI از تصاویر Landsat8 با پایتون 3 و Rasterio :: بیسین - سایت تخصصی مهندسی آب

آموزش محاسبه NDVI از تصاویر Landsat8 با پایتون 3 و Rasterio


NDVI یک شاخص گیاهی است که به طور گسترده ای برای ارزیابی اثرات زیست محیطی، ارزیابی کشاورزی و معیارهای تغییر کاربری زمین مورد استفاده قرار می گیرد. روش محاسبه NDVI در نرم افزارهای سیستم اطلاعات جغرافیایی (GIS) به عنوان QGIS ساده و مستقیم است. با این حال، کارایی تنها مربوط به یک تصویر است، اما اگر یک سری از تصاویر را تجزیه و تحلیل کنیم یا اگر تصاویری با منابع محاسباتی محدود داشته باشیم، ما باید برخی از فیلترهای سفارشی و پیش پردازش را به مجموعه داده ها اعمال نماییم، سپس ما باید روش های دیگری را برای محاسبه NDVI در یک روش سریع تر و کارآمدتر با توجه به منابع محاسباتی در دسترس بررسی کنیم.


تصاویر ماهواره ای georasters هستند، این تصاویر یک آرایه منظم از ستون ها و ردیف ها (یک ماتریس در هر باند) است. پایتون زبان برنامه نویسی و تجزیه و تحلیل داده ها برای جبر ماتریس با کتابخانه Numpy بسیار متنوع است، اما هیچ روش ایده آل و ساده برای پردازش georaster تا زمان توسعه بسته Rasterio وجود ندارد.


Rasterio یک کتابخانه برای باز کردن، نوشتن، بررسی و تجزیه و تحلیل georasters در پایتون است. این کتابخانه از تصاویر GeoTIFF همراه با فرمت های دیگر استفاده می کند و قادر به کار با تصاویر ماهواره ای، مدل های ارتفاعی دیجیتال و تصاویر تولید شده از هواپیماهای بدون سرنشین است.


این آموزش روش کامل برای تجزیه و تحلیل NDVI از یک تصویر Landsat 8 با پایتون 3 و Rasterio را نشان می دهد. اسکریپت و نمایندگی بر روی یک محیط تعاملی به نام Jupyter Notebook انجام شد، در نهایت نتیجه georaster در QGIS باز شد و در مقایسه با برخی از تصاویر پس زمینه بدست آمد.


داده های ورودی

شما می توانید داده های ورودی و اسکریپت های مورد استفاده برای آموزش در این لینک را دانلود کنید.


کد پایتون (دانلود این کد):


#import required libraries

import rasterio

from rasterio import plot

import matplotlib.pyplot as plt

import numpy as np

%matplotlib inline

import os

os.listdir('../Landsat8/')

#import bands as separate 1 band raster

band4 = rasterio.open('../Landsat8/LC08_L1TP_042035_20180603_20180615_01_T1_B4_clip.tif') #red

band5 = rasterio.open('../Landsat8/LC08_L1TP_042035_20180603_20180615_01_T1_B5_clip.tif') #nir

#number of raster rows

band4.height

#number of raster columns

band4.width

#plot band 

plot.show(band4)

#type of raster byte

band4.dtypes[0]

#raster sytem of reference

band4.crs

#raster transform parameters

band4.transform

#raster values as matrix array

band4.read(1)

#multiple band representation

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 6))

plot.show(band4, ax=ax1, cmap='Blues') #red

plot.show(band5, ax=ax2, cmap='Blues') #nir

fig.tight_layout()

#generate nir and red objects as arrays in float64 format

red = band4.read(1).astype('float64')

nir = band5.read(1).astype('float64')


nir

#ndvi calculation, empty cells or nodata cells are reported as 0

ndvi=np.where(

    (nir+red)==0., 

    0, 

    (nir-red)/(nir+red))

ndvi[:5,:5]

#export ndvi image

ndviImage = rasterio.open('../Output/ndviImage.tiff','w',driver='Gtiff',

                          width=band4.width, 

                          height = band4.height, 

                          count=1, crs=band4.crs, 

                          transform=band4.transform, 

                          dtype='float64')

ndviImage.write(ndvi,1)

ndviImage.close()

#plot ndvi

ndvi = rasterio.open('../Output/ndviImage.tiff')

fig = plt.figure(figsize=(18,12))

plot.show(ndvi)






نظرات (۰)

فرم ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی


درباره بهترين هاي بيسيـــن بدانيد...

Bird

يکي از مهمترين اهداف اين سايت تهيه آموزش هاي روان از ابزارهاي کاربردي علوم آب است.

اهميت مطالعات محيطي با ابزارهاي نوين در چيست؟

امروز با فارغ التحصيلي جمع کثير دانشجويان سالهاي گذشته و حال، با گذر از کمي گرايي ديگر صرف وجود مدارک دانشگاهي حرف اول را در بازار کار نمي زند؛ بلکه سنجش ديگري ملاک؛ و شايسته سالاري به ناچار! باب خواهد شد. يکي از مهم ترين لوازم توسعه علمي در هر کشور و ارائه موضوعات ابتکاري، بهره گيري از ابزار نوين است، بيسين با همکاري مخاطبان مي تواند در حيطه علوم آب به معرفي اين مهم بپردازد.

جستجو در بيسين


بیسین - سایت تخصصی مهندسی آب

سایت مهندسی آب بیسین با معرفی مهم ترین و کاربردی ترین نرم افزارها و مدل های شبیه سازی در حیطه مهندسی آب، تلاش به تهیه خدمات یکپارچه و محلی از محاسبات هیدرولوژیکی و هیدرولیکی می کند

W3Schools


اطلاعات سايت

  • behzadsarhadi@gmail.com
  • بهزاد سرهادي
  • شناسه تلگرام: SubBasin
  • شماره واتساپ: 09190622992-098
  • شماره تماس: 09190622992-098

W3Schools