Ingurumenaren monitorizazioa, nekazaritza, hirigintza, hondamendien kudeaketa eta klima-aldaketaren azterketek satelite bidezko irudien analisiaren etekina atera dute.
Gure planetaren ezaugarriei, aldaketei eta dinamikari buruzko informazio esanguratsuak lor ditzakegu Lurra behatzeko sateliteek grabatutako datu-kopuru masiboa baliatuz.
Python-ek, programazio-lengoaia polifazetikoa eta sendoa, satelite bidezko irudien prozesamendu azkar eta eraginkorretarako liburutegi eta tresnen ekosistema aberatsa eskaintzen du.
Erabilera satelite bidezko irudien analisia aukera mundu bat irekitzen du. Satelite-argazkietatik informazio erabilgarria ateratzeko aukera ematen digu, hala nola lur-estalduraren kategorizazioa, landarediaren osasunaren ebaluazioa, hiri-hedapenaren jarraipena eta itsasertzaren mapak.
Satelite-irudiak erraz prozesatu, bistaratu eta aztertu ditzakegu Python-en aldakortasuna eta rasterio, numpy eta matplotlib bezalako moduluak baliatuz.
Python satelite bidezko irudien analisirako erabiltzearen abantail nagusietako bat datu geoespazialen prozesatzeko moduluen sorta zabala da.
Rasteriok, esaterako, raster informazioa irakurtzeko eta aldatzeko interfaze sinplea du, satelite bidezko irudien fitxategiekin lan egiteko egokia da.
Numpy moduluak array eragiketa sofistikatuak eskaintzen ditu argazkien datuen gaineko kalkulu eta estatistikak azkar egiteko. Matplotlib-ek ikus-entzunezko garrantzitsuak sortzeko aukera ere ematen digu, emaitza analitikoen interpretazioan eta komunikazioan laguntzeko.
Hurrengo ataletan, benetako adibideak eta kode zatiak ikusiko ditugu Python satelite bidezko argazkiak aztertzeko nola erabil daitekeen erakusteko.
Satelite bidezko argazkiak nola ireki, irudi-datuak bistaratu, metadatuak atera, banda-estatistikak kalkulatu eta analisi bereziak egingo ditugu, adibidez, Normalized Difference Vegetation Index (NDVI).
Adibide hauek Python-ekin satelite-irudien analisiaren gai interesgarrian hasten lagunduko dizute.
Lehenik eta behin, liburutegi batzuk inportatu behar ditugu gure zereginean laguntzeko.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Satelite-irudia bistaratzea eta irekitzea
Atal honetan Rasterio liburutegia erabiliko dugu satelite_irudiaren_bidea-k emandako satelite-irudira sartzeko.
Irudi-fitxategia rasterio.open() metodoa erabiliz irekitzen da, eta ondoriozko objektuak, satelite_irudia, irekitako irudia adierazten du.
Zeregin honetarako, esteka honetako irudia erabili dut: https://unsplash.com/photos/JiuVoQd-ZLk eta nire ordenagailuan gorde dut “satellite.jpg” gisa.
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Irudia ireki ondoren, array gisa irakurtzen dugu satelite_image objektuaren read() funtzioa erabiliz. Satelite-irudien banda bakoitzeko pixel-balioak irudi-matrizean gordetzen dira.
# Read the image as an array
image_array = satellite_image.read()
Satelitearen irudia bisualki ebaluatzeko, matplotlib.pyplot tresna erabiltzen dugu 10×10 hazbeteko irudi bat sortzeko.
Irudi-matrizea imshow() metodoa erabiliz erakusten da. Transpose(1, 2, 0) eragiketa irudi-matrizearen dimentsioak berrantolatzeko erabiltzen da imshow(k) aurreikusitako ordenara egokitzeko.
Azkenik, axis('off') ardatzaren etiketak ezkutatzen ditu, satelite-irudiaren ikuspegi garbia emanez.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Metadatuen erauzketa
Satelite-irudiari buruzko metadatuen funtsezko informazioa ateratzen dugu ireki eta erakutsi ondoren. Informazio honek irudiaren ezaugarriak ulertzen laguntzen digu eta etorkizuneko ikerketarako testuingurua eskaintzen du.
image_width = satellite_image.width
image_height = satellite_image.height
image_crs = satellite_image.crs
image_count = satellite_image.count
print("Image Width:", image_width)
print("Image Height:", image_height)
print("Coordinate Reference System:", image_crs)
print("Number of Bands:", image_count)
satelite_irudia objektuaren zabalera eta altuera atributuak erabiliz, irudiaren zabalera eta altuera ateratzen ditugu. crs propietatea irudiaren koordenatuen erreferentzia-sistema (CRS) berreskuratzeko erabiltzen da.
CRS-k irudiaren erreferentzia-sistema espazialari buruzko informazioa ematen du, irudien koordenatuak mundu errealeko tokiekin lotzeko aukera emanez.
Azkenik, satelite_irudia objektuaren count atributua erabiltzen dugu irudiko banda kopurua kalkulatzeko. Datu hau kritikoa da geroago aztertzeko, irudi-matrizeko banda bakoitzeko pixel-balioak lortzeko aukera ematen digulako.
3. Banden Estatistika Kalkulua
Irudi-matrizeko banda bakoitzeko estatistikak kalkulatzen ditugu zati honetan. Begizta bat errepikatzen da banda bakoitzean, eta numpy liburutegiaren min, max, mean eta std funtzioak erabiltzen dira estatistika horiek kalkulatzeko.
Hiztegien zerrenda batek banda bakoitzaren estatistikak gordetzen ditu.
band_stats = []
for band in range(image_count):
band_data = image_array[band]
band_min = np.min(band_data)
band_max = np.max(band_data)
band_mean = np.mean(band_data)
band_std = np.std(band_data)
band_stats.append({'Band': band+1, 'Min': band_min, 'Max': band_max, 'Mean': band_mean, 'Std': band_std})
print("Band Statistics:")
for stats in band_stats:
print(stats)
Begizta zikloak banda bakoitzean zehar, banda aldakorrak banda indizea adierazten du. image_array[band] erabiliz, pixel-balioak ateratzen ditugu irudi-matrizetik banda bakoitzeko.
Ondoren, uneko bandarako, np.min(), np.max(), np.mean() eta np.std() funtzioak erabiltzen dira pixelaren gutxieneko, gehienezko, batez besteko eta desbideratze estandarra zehazteko. balioak.
Banda bakoitzeko kalkulatutako datuak hiztegi batean gordetzen dira 'Band', 'Min', 'Max', 'Mean' eta 'Std. Hiztegi bakoitza bandaren estatistiken zerrendari eransten zaio. Azkenik, banda bakoitzaren datuak kontsolan inprimatzen dira.
4. NDVI (Normalized Difference Vegetation Index) Kalkulua
NDVI landareen osasuna neurtzeko neurri ezaguna da. Atal honetan, irudiak gutxienez lau banda dituen egiaztatzen dugu, NDVI konputaziorako beharrezkoak direnak.
red_band = None
nir_band = None
if image_count >= 4:
red_band = image_array[2] # assuming red band is at index 2
nir_band = image_array[3] # assuming near-infrared band is at index 3
if red_band is not None and nir_band is not None:
ndvi = (nir_band - red_band) / (nir_band + red_band)
# Visualize the NDVI
plt.figure(figsize=(10, 10))
plt.imshow(ndvi, cmap='RdYlGn')
plt.colorbar(label='NDVI')
plt.title('Normalized Difference Vegetation Index (NDVI)')
plt.axis('off')
plt.show()
else:
print("Error: The satellite image does not have the required bands for NDVI calculation.")
Hasteko, red_band eta nir_band aldagaiak None gisa ezarri ditugu. Irudia_zenbaketa aldagaia erabiltzen da irudiak gutxienez lau banda dituen zehazteko.
Hala bada, banda gorria 2 indizea dela ondorioztatzen dugu eta infragorri hurbila (NIR) banda 3 indizea. Irudi-matrizeko bat datozen bandak red_band eta nir_band aldagaiei esleitzen zaizkie.
Gorria eta NIR banda biak eskuragarri badira, NDVIa (NIR – Gorria) / (NIR + Gorria) formula erabiliz kalkulatzen da. Emaitza duten NDVI zenbakiek irudiko pixel bakoitzeko landaredi indizea adierazten dute.
Ondoren, NDVIa ikusiko dugu irudi berri bat sortuz eta NDVI array-a imshow() erabiliz bistaratuz. Colorbar() metodoak kolore barra bat gehitzen dio grafikoari, NDVI balioei erreferentzia bisual bat emanez.
NDVI pantailan erabat zentratzeko, gainera, grafikoaren epigrafe bat zehazten dugu eta ardatzaren etiketak kentzen ditugu axis('off') duten. Azkenik, plt.show() bidez erakusten da grafikoa.
Errore-mezu bat idazten da kontsolan, irudiak NDVI kalkulatzeko beharrezko bandarik ez badu (hau da, lau banda baino gutxiago).
5. Satelite-irudia hurbiltzea
Praktika onena da itxi() funtzioa erabiltzea satelite bidezko irudi fitxategia analisia eta ikusi ondoren. Honek irudi fitxategiari lotutako sistemaren baliabideak askatzen ditu.
satellite_image.close()
Hona hemen nire irtenbidea:
Hori da!
Final Oharrak
Python-ek datu multzo masibo hauen azterketan laguntzeko eginkizuna gero eta garrantzitsuagoa da satelite bidezko irudien erabilgarritasuna eta bereizmena handitu ahala.
Satelite-irudiak atzitzeko, prozesatzeko, aztertzeko eta erakusteko Python erabiltzeko gaitasunak aldaketa ona eta gure munduaren ezagutza handiagoa eragin dezaketen sormen-aplikazio eta ikuspegietarako bidea eskaintzen du.
Gogoratu Python erabiliz satelite bidezko irudien analisian zure abenturan jarraitzen duzun bitartean eskuragarri dauden baliabideen, tutorialen eta liburutegien aukeraketa handia arakatzea zure ezagutzak eta gaitasunak areagotzeko.
Jarraitu interesatzen, arakatu eta erabili Python-en gaitasunak sateliteen irudietan lurperatutako misterioak argitzeko.
Utzi erantzun bat