Monitorimi i mjedisit, bujqësia, planifikimi urban, menaxhimi i fatkeqësive dhe studimet e ndryshimeve klimatike kanë përfituar të gjitha nga analizat e imazheve satelitore.
Ne mund të fitojmë njohuri të rëndësishme për karakteristikat, ndryshimet dhe dinamikën e planetit tonë duke shfrytëzuar sasinë masive të të dhënave të regjistruara nga satelitët që vëzhgojnë Tokën.
Python, një gjuhë programimi e gjithanshme dhe e fortë, ofron një ekosistem të pasur bibliotekash dhe mjetesh për përpunim të shpejtë dhe efektiv të imazheve satelitore.
Përdorimi i analiza e imazheve satelitore hap një botë mundësish. Ai na mundëson të nxjerrim informacione të dobishme nga fotot satelitore, të tilla si kategorizimi i mbulesës së tokës, vlerësimi i shëndetit të bimësisë, gjurmimi i zgjerimit urban dhe harta e vijës bregdetare.
Ne mund të përpunojmë, shfaqim dhe analizojmë lehtësisht imazhet satelitore duke shfrytëzuar shkathtësinë dhe modulet e Python si rasterio, numpy dhe matplotlib.
Një nga përfitimet kryesore të përdorimit të Python për analizën e imazheve satelitore është gama e gjerë e moduleve të përpunimit të të dhënave gjeohapësinore.
Rasterio, për shembull, ka një ndërfaqe të thjeshtë për leximin dhe modifikimin e informacionit raster, duke e bërë atë të përshtatshëm për të punuar me skedarët e imazheve satelitore.
Moduli numpy ofron operacione të sofistikuara të grupit për kryerjen e llogaritjeve dhe statistikave të shpejta mbi të dhënat e figurës. Matplotlib gjithashtu na mundëson të gjenerojmë imazhe përkatëse për të ndihmuar në interpretimin dhe komunikimin e rezultateve analitike.
Në seksionet e mëposhtme, ne do të shikojmë shembujt aktualë dhe copat e kodit për të treguar se si Python mund të përdoret për të analizuar fotot satelitore.
Ne do të shqyrtojmë se si të hapim fotografi satelitore, të vizualizojmë të dhënat e imazhit, të nxjerrim meta të dhënat, të llogarisim statistikat e brezit dhe të kryejmë analiza të veçanta si Indeksi i Vegjetacionit të Diferencës së Normalizuar (NDVI).
Këta shembuj do t'ju ndihmojnë të filloni në temën intriguese të analizës së imazheve satelitore me Python.
Së pari, ne duhet të importojmë disa biblioteka për të na ndihmuar në detyrën tonë.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Vizualizimi dhe hapja e imazhit satelitor
Ne do të bibliotekën Rasterio në këtë seksion për të hyrë në imazhin satelitor të dhënë nga sateliti_image_path.
Skedari i imazhit hapet duke përdorur metodën rasterio.open() dhe objekti rezultues, sateliti_image, përfaqëson imazhin e hapur.
Për këtë detyrë, unë kam përdorur imazhin nga kjo lidhje: https://unsplash.com/photos/JiuVoQd-ZLk dhe e kam ruajtur në kompjuterin tim si "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Pas hapjes së figurës, ne e lexojmë atë si një grup duke përdorur funksionin read() të objektit satelit_image. Vlerat e pikselit për çdo brez të fotografive satelitore ruhen në grupin e imazheve.
# Read the image as an array
image_array = satellite_image.read()
Për të vlerësuar vizualisht figurën satelitore, ne përdorim mjetin matplotlib.pyplot për të gjeneruar një figurë 10×10 inç.
Vargu i fotografive shfaqet duke përdorur metodën imshow(). Operacioni transpose(1, 2, 0) përdoret për të riorganizuar dimensionet e grupit të figurave për t'iu përshtatur renditjes së parashikuar nga imshow().
Së fundi, boshti ('off') fsheh etiketat e aksit, duke dhënë një pamje të qartë të figurës satelitore.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Nxjerrja e meta të dhënave
Ne nxjerrim informacione jetike të meta të dhënave rreth figurës satelitore pas hapjes dhe shfaqjes së saj. Ky informacion na ndihmon të kuptojmë cilësitë e imazhit dhe ofron kontekst për hetimin e ardhshëm.
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)
Duke përdorur atributet gjerësi dhe lartësi të objektit satelit_imazh, ne nxjerrim gjerësinë dhe lartësinë e imazhit. Vetia crs përdoret për të marrë sistemin e referencës së koordinatave të imazhit (CRS).
CRS jep informacion mbi sistemin e referencës hapësinore të figurës, duke na lejuar të përputhim koordinatat e imazhit me vendet e botës reale.
Së fundi, ne përdorim atributin count të objektit satelit_image për të llogaritur numrin e brezave në imazh. Këto të dhëna janë kritike për analiza të mëvonshme sepse na lejojnë të marrim vlerat e pikselit për çdo brez në grupin e fotografive.
3. Llogaritja e statistikave të brezit
Ne llogarisim statistikat për çdo brez në grupin e figurave në këtë pjesë. Një lak përsëritet në çdo brez dhe funksionet min, max, mesatare dhe std të bibliotekës numpy përdoren për të llogaritur këto statistika.
Një listë fjalorësh ruan statistikat për çdo grup.
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)
Cikli qarkullon në çdo brez, me brezin e ndryshueshëm që përfaqëson indeksin e brezit. Duke përdorur image_array[band], ne nxjerrim vlerat e pikselit nga grupi i imazhit për çdo brez.
Më pas, për brezin aktual, funksionet np.min(), np.max(), np.mean() dhe np.std() përdoren për të përcaktuar devijimin minimal, maksimal, mesatar dhe standard të pikselit. vlerat.
Të dhënat e llogaritura për çdo brez ruhen në një fjalor me çelësa si 'Band', 'Min', 'Max', 'Mean' dhe 'Std. Çdo fjalor i bashkëngjitet listës së statistikave të grupit. Së fundi, të dhënat e çdo brezi shtypen në tastierë.
4. Llogaritja NDVI (Indeksi i diferencës së normalizuar të vegjetacionit).
NDVI është një masë popullore për matjen e shëndetit të bimëve. Në këtë seksion, ne kontrollojmë nëse fotografia përfshin të paktën katër breza, të cilat kërkohen për llogaritjen NDVI.
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.")
Për të filluar, ne vendosëm variablat red_band dhe nir_band në None. Variabla image_count më pas përdoret për të përcaktuar nëse imazhi përmban të paktën katër breza.
Nëse është kështu, ne nxjerrim përfundimin se brezi i kuq është indeksi 2 dhe brezi afër infra të kuqe (NIR) është indeksi 3. Brezat që përputhen nga grupi i figurave u caktohen variablave red_band dhe nir_band.
Nëse të dy brezat e kuq dhe NIR janë të aksesueshëm, NDVI llogaritet duke përdorur formulën (NIR – Red) / (NIR + Red). Numrat NDVI që rezultojnë tregojnë indeksin e vegjetacionit për çdo piksel në figurë.
Më pas shohim NDVI duke krijuar një figurë të re dhe duke shfaqur grupin NDVI duke përdorur imshow(). Metoda colorbar() shton një shirit ngjyrash në grafik, duke i dhënë vlerave NDVI një referencë vizuale.
Për t'u fokusuar tërësisht në ekranin NDVI, ne specifikojmë gjithashtu një titull për grafikun dhe heqim etiketat e boshtit me boshtin ('off'). Së fundi, grafiku tregohet me plt.show().
Një mesazh gabimi shkruhet në tastierë nëse fotografisë i mungojnë brezat e nevojshëm për llogaritjen NDVI (dmth. më pak se katër breza).
5. Mbyllja e imazhit satelitor
Është praktika më e mirë të përdoret funksioni close() për të mbyllur skedarin e fotografisë satelitore pas kryerjes së analizës dhe shikimit. Kjo çliron çdo burim të sistemit të lidhur me skedarin e figurës.
satellite_image.close()
Këtu është zgjidhja ime:
Kjo eshte!
Shënime përfundimtare
Roli i Python në ndihmën për studimin e këtyre grupeve masive të të dhënave po bëhet gjithnjë e më i rëndësishëm me rritjen e disponueshmërisë dhe rezolucionit të imazheve satelitore.
Aftësia për të përdorur Python për të hyrë, përpunuar, analizuar dhe shfaqur imazhet satelitore ofron rrugën për aplikime dhe njohuri krijuese që mund të nxisin ndryshime të mira dhe njohuri më të mëdha për botën tonë.
Mos harroni të eksploroni përzgjedhjen e madhe të burimeve, mësimeve dhe bibliotekave të disponueshme për të rritur njohuritë dhe aftësitë tuaja ndërsa vazhdoni në aventurën tuaj në analizën e imazheve satelitore duke përdorur Python.
Vazhdoni të jeni të interesuar, eksploroni dhe përdorni aftësitë e Python për të zbuluar misteret e varrosura brenda fotografive satelitore.
Lini një Përgjigju