Ëmweltiwwerwaachung, Landwirtschaft, Stadplanung, Katastrophemanagement, a Klimawandelstudien hunn all vun der Satellitebildanalyse profitéiert.
Mir kënne bedeitend Abléck an d'Charakteristiken, d'Verännerungen an d'Dynamik vun eisem Planéit kréien andeems mir déi massiv Quantitéit un Daten ausnotzen, déi vun Äerdobservatiounssatelliten opgeholl goufen.
Python, eng villsäiteg a staark Programméierungssprooch, bitt e räiche Ökosystem vu Bibliothéiken an Tools fir séier an effektiv Satellitebildveraarbechtung.
D'Benotze vu Satellitebildanalyse mécht eng Welt vu Méiglechkeeten op. Et erlaabt eis nëtzlech Informatioun aus Satellitefotoen ze extrahieren, sou wéi Landdeckkategoriséierung, Vegetatiounsgesondheetsbewäertung, Verfollegung vun urbaner Expansioun, a Küstekarte.
Mir kënne ganz einfach Satellitebiller veraarbecht, weisen an analyséieren andeems d'Python seng Villsäitegkeet a Moduler wéi Rasterio, numpy a Matplotlib ausnotzen.
Ee vun de primäre Virdeeler vum Gebrauch vu Python fir Satellitebildanalyse ass seng breet Palette vu geospatialen Dateveraarbechtungsmoduler.
Rasterio, zum Beispill, huet en einfachen Interface fir Rasterinformatioun ze liesen an z'änneren, sou datt et gëeegent ass fir mat Satellitebilddateien ze schaffen.
Den numpy Modul bitt raffinéiert Array-Operatiounen fir séier Berechnungen a Statistiken iwwer Bilddaten auszeféieren. Matplotlib erlaabt eis och relevant Visuals ze generéieren fir an der Interpretatioun an der Kommunikatioun vun analytesche Resultater ze hëllefen.
An de folgende Sektioune wäerte mir aktuell Beispiller a Code Snippets kucken fir ze weisen wéi Python ka benotzt ginn fir Satellitefotoen ze analyséieren.
Mir ginn iwwer wéi Satellitefotoen opmaachen, Bilddaten visualiséieren, Metadaten extrahéieren, Bandstatistike berechnen, a speziell Analyse lafen wéi den Normalized Difference Vegetation Index (NDVI).
Dës Beispiller hëllefen Iech unzefänken am intriganten Thema vun der Satellitebildanalyse mat Python.
Als éischt musse mir e puer Bibliothéiken importéieren fir eis mat eiser Aufgab ze hëllefen.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Visualiséieren an d'Satellittbild opmaachen
Mir wäerten d'Rasterio Bibliothéik an dëser Sektioun fir Zougang zum Satellitebild ze kréien, dee vum satellite_image_path geliwwert gëtt.
D'Bilddatei gëtt opgemaach mat der Rasterio.open () Method, an de resultéierende Objet, satellite_image, representéiert dat opgemaacht Bild.
Fir dës Aufgab hunn ech d'Bild vun dësem Link benotzt: https://unsplash.com/photos/JiuVoQd-ZLk an et op mengem Computer als "satellite.jpg" gespäichert.
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Nodeems mir d'Bild opgemaach hunn, liesen mir et als Array mat der Funktioun vum Satellite_image Objekt liesen (). D'Pixelwäerter fir all Band vun de Satellitebiller ginn am Bildarray gespäichert.
# Read the image as an array
image_array = satellite_image.read()
Fir d'Satellittbild visuell ze bewäerten, benotze mir d'matplotlib.pyplot-Tool fir eng 10 × 10-Zoll Figur ze generéieren.
D'Bildarray gëtt mat der imshow () Method gewisen. D'Transpose (1, 2, 0) Operatioun gëtt benotzt fir d'Dimensioune vun der Bildarray nei ze arrangéieren fir d'Uerdnung ze passen, déi vun imshow () erwaart gëtt.
Schlussendlech verstoppt d'Achs ('off') d'Achseetiketten, wat eng kloer Vue op d'Satellittbild gëtt.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Metadaten Extraktioun
Mir extrahéieren vital Metadateninformatioun iwwer d'Satellittbild no der Ouverture an der Affichage. Dës Informatioun hëlleft eis d'Qualitéiten vum Bild ze verstoen a bitt Kontext fir zukünfteg Enquête.
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)
Mat der Breet an Héicht Attributer vum Satellite_image Objet extrahéieren mir d'Bild Breet an Héicht. D'CRS Eegeschafte gëtt benotzt fir de Koordinate Referenzsystem (CRS) vum Bild ze recuperéieren.
De CRS gëtt Informatioun iwwer de raimleche Referenzsystem vum Bild, wat eis erlaabt d'Bildkoordinaten op d'real Welt Plazen ze passen.
Schlussendlech benotze mir d'Zuel Attribut vum Satellite_image Objet fir d'Zuel vun de Bands am Bild ze berechnen. Dës Donnéeën si kritesch fir spéider Analyse well et eis erlaabt d'Pixelwäerter fir all Band an der Bildarray ze kréien.
3. Band Statistics Berechnung
Mir berechnen Statistike fir all Band am Bild Array an dësem Deel. Eng Loop iteréiert iwwer all Band, an d'Numpy Bibliothéik min, max, mëttler an std Funktiounen gi benotzt fir dës Statistike ze berechnen.
Eng Lëscht vun Dictionnairen Geschäfter d'Statistike fir all Band.
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)
D'Loop zyklen iwwer all Band, mat der verännerlecher Band, déi de Bandindex representéiert. Mat Image_array [Band] extrahéieren mir d'Pixelwäerter aus der Bildarray fir all Band.
Dann, fir déi aktuell Band, ginn d'np.min (), np.max (), np.mean () an np.std () Funktiounen benotzt fir de Minimum, Maximum, Moyenne a Standarddeviatioun vum Pixel ze bestëmmen Wäerter.
Déi berechent Donnéeën fir all Band ginn an engem Wierderbuch gespäichert mat Schlësselen wéi 'Band', 'Min', 'Max', 'Mean' an 'Std. All Wierderbuch gëtt op d'Lëscht vun de Bandstatistiken bäigefüügt. Endlech ginn d'Donnéeën vun all Band op d'Konsol gedréckt.
4. NDVI (normaliséiert Differenz Vegetatioun Index) Berechnung
Den NDVI ass eng populär Moossnam fir d'Gesondheet vu Planzen ze moossen. An dëser Rubrik, mir kucken ob d'Bild op d'mannst véier Bands enthält, déi fir NDVI Berechnung néideg sinn.
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.")
Fir unzefänken, setzen mir d'red_band an nir_band Variabelen op None. D'image_count Variabel gëtt dann benotzt fir ze bestëmmen ob d'Bild op d'mannst véier Bands enthält.
Wa jo, ofgeleet mir datt de roude Band Index 2 ass an d'NIR-Band Index 3 ass.
Wann souwuel déi rout wéi och NIR Bands zougänglech sinn, gëtt den NDVI mat der Formel (NIR - Red) / (NIR + Red) berechent. D'NDVI Zuelen déi resultéieren weisen de Vegetatiounsindex fir all Pixel am Bild un.
Mir gesinn dann den NDVI andeems Dir eng nei Figur erstellt an d'NDVI-Array mat imshow () weist. D'Colorbar () Method füügt eng Faarfbar un de Komplott, wat den NDVI Wäerter eng visuell Referenz gëtt.
Fir ganz op den NDVI Display ze fokusséieren, spezifizéiere mir zousätzlech eng Iwwerschrëft fir de Komplott an entfernen d'Achseetiketten mat der Achs ('Off'). Endlech gëtt de Komplott mat plt.show () gewisen.
Eng Fehlermeldung gëtt op d'Konsole geschriwwe wann d'Bild déi néideg Bands fir NDVI Berechnung feelt (dh manner wéi véier Bands).
5. Bréngt d'Satellittbild op en Enn
Et ass bescht Praxis fir d'Funktion Close () ze benotzen fir d'Satellittbilddatei zouzemaachen nodeems Dir d'Analyse an d'Kuckt gemaach hutt. Dëst befreit all Systemressourcen verbonne mat der Bilddatei.
satellite_image.close()
Hei ass meng Léisung:
Dat ass et!
Final Notes
Dem Python seng Roll bei der Hëllef vun der Studie vun dëse massiven Datesätze gëtt ëmmer méi wichteg wéi d'Disponibilitéit an d'Resolutioun vu Satellitebiller eropgeet.
D'Kapazitéit fir Python ze benotzen fir Zougang zu, veraarbecht, analyséieren a weisen Satellitebiller bitt de Wee fir kreativ Uwendungen an Abléck, déi e gudde Changement a méi Wëssen iwwer eis Welt féieren.
Denkt drun déi grouss Auswiel u Ressourcen, Tutorials a Bibliothéiken ze entdecken fir Äert Wëssen a Fäegkeeten ze vergréisseren wann Dir weider op Är Aventure an der Satellitebildanalyse benotzt Python.
Bleift weider interesséiert, entdeckt a benotzt dem Python seng Fäegkeeten fir d'Geheimnisser ze entdecken, déi a Satellitebiller begruewe sinn.
Hannerlooss eng Äntwert