Il-monitoraġġ ambjentali, l-agrikoltura, l-ippjanar urban, il-ġestjoni tad-diżastri, u l-istudji dwar it-tibdil fil-klima kollha bbenefikaw minn analiżi ta’ xbihat bis-satellita.
Nistgħu nakkwistaw għarfien sinifikanti dwar il-karatteristiċi, il-bidliet u d-dinamika tal-pjaneta tagħna billi nisfruttaw l-ammont kbir ta 'dejta rreġistrata mis-satelliti li josservaw id-Dinja.
Python, lingwa ta' programmar versatili u b'saħħitha, toffri ekosistema rikka ta' libreriji u għodod għall-ipproċessar rapidu u effettiv ta' xbihat bis-satellita.
L-użu ta ' analiżi ta' xbihat bis-satellita jiftaħ dinja ta’ possibbiltajiet. Jippermettilna nieħdu informazzjoni utli minn ritratti bis-satellita, bħall-kategorizzazzjoni tal-kopertura tal-art, l-evalwazzjoni tas-saħħa tal-veġetazzjoni, it-traċċar tal-espansjoni urbana, u l-immappjar tax-xatt.
Nistgħu faċilment nipproċessaw, nuru, u nanalizzaw immaġini bis-satellita billi nisfruttaw il-versatilità u l-moduli ta 'Python bħal rasterio, numpy u matplotlib.
Wieħed mill-benefiċċji primarji tal-użu ta 'Python għall-analiżi ta' xbihat bis-satellita huwa l-firxa wiesgħa ta 'moduli tal-ipproċessar tad-dejta ġeospazjali tiegħu.
Rasterio, pereżempju, għandu interface sempliċi biex jaqra u jimmodifika l-informazzjoni raster, li jagħmilha adattata biex taħdem ma 'fajls ta' xbihat bis-satellita.
Il-modulu numpy jipprovdi operazzjonijiet ta 'array sofistikati għat-twettiq ta' kalkoli u statistika mgħaġġla fuq data ta 'stampa. Matplotlib jippermettilna wkoll niġġeneraw viżwali rilevanti biex jgħinu fl-interpretazzjoni u l-komunikazzjoni tar-riżultati analitiċi.
Fis-sezzjonijiet li ġejjin, se nħarsu lejn eżempji reali u siltiet ta’ kodiċi biex nuru kif Python jista’ jintuża biex janalizza ritratti bis-satellita.
Aħna ser nimxu fuq kif tiftaħ ritratti bis-satellita, Ħares data ta 'l-immaġini, estratt metadata, tikkalkula l-istatistika band, u nwettqu analiżi partikolari bħall-Indiċi ta' Veġetazzjoni tad-Differenza Normalizzata (NDVI).
Dawn l-eżempji jgħinuk tibda fis-suġġett intriganti tal-analiżi tal-immaġini bis-satellita b'Python.
L-ewwel, għandna bżonn li jimportaw xi libreriji biex jgħinuna fil-kompitu tagħna.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Viżwalizzazzjoni u Ftuħ tal-Immaġni tas-Satellita
Aħna se l-librerija Rasterio f'din it-taqsima biex jaċċessaw l-immaġni tas-satellita fornuta mill-satellita_image_path.
Il-fajl tal-immaġni jinfetaħ bl-użu tal-metodu rasterio.open(), u l-oġġett li jirriżulta, satellite_image, jirrappreżenta l-immaġni miftuħa.
Għal dan il-kompitu, użajt l-immaġni minn din il-link: https://unsplash.com/photos/JiuVoQd-ZLk u ssalvajtha fuq il-kompjuter tiegħi bħala "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Wara li niftħu l-istampa, naqrawha bħala firxa billi tuża l-funzjoni read() tal-oġġett satellite_image. Il-valuri tal-pixel għal kull medda ta 'l-istampi tas-satellita huma maħżuna fil-firxa ta' l-immaġini.
# Read the image as an array
image_array = satellite_image.read()
Biex nevalwaw viżwalment l-istampa bis-satellita, nużaw l-għodda matplotlib.pyplot biex niġġeneraw figura ta '10 × 10 pulzieri.
Il-firxa tal-istampa hija murija bl-użu tal-metodu imshow(). L-operazzjoni traspose(1, 2, 0) tintuża biex tirranġa mill-ġdid id-dimensjonijiet tal-firxa tal-istampa biex taqbel mal-ordni antiċipat minn imshow().
Fl-aħħarnett, axis('off') jaħbi t-tikketti tal-assi, u jagħti ħarsa ċara tal-istampa bis-satellita.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Estrazzjoni tal-metadata
Aħna estratt informazzjoni vitali metadata dwar l-istampa satellita wara li niftħu u juruha. Din l-informazzjoni tgħinna nifhmu l-kwalitajiet tal-immaġni u toffri kuntest għal investigazzjoni futura.
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)
Bl-użu tal-attributi tal-wisa 'u l-għoli tal-oġġett satellite_image, aħna estratt il-wisa' u l-għoli tal-immaġni. Il-proprjetà crs tintuża biex tkun irkuprata s-sistema ta' referenza tal-koordinati (CRS) tal-immaġni.
Is-CRS jagħti informazzjoni dwar is-sistema ta 'referenza spazjali tal-istampa, li jippermettilna nqabblu l-koordinati tal-immaġni ma' postijiet tad-dinja reali.
Fl-aħħarnett, nużaw l-attribut tal-għadd tal-oġġett satellite_image biex nikkalkulaw in-numru ta 'meded fl-immaġini. Din id-dejta hija kritika għal analiżi aktar tard għaliex tippermettilna niksbu l-valuri tal-pixel għal kull medda fil-firxa tal-istampa.
3. Kalkolu tal-Istatistika tal-Banda
Aħna nikkalkulaw l-istatistika għal kull medda fil-firxa ta 'stampa f'din il-parti. Loop itenni fuq kull medda, u l-funzjonijiet min, max, medja, u std tal-librerija numpy jintużaw biex tikkalkula din l-istatistika.
Lista ta' dizzjunarji taħżen l-istatistika għal kull medda.
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)
Iċ-ċikli tal-linja tul kull medda, bil-faxxa varjabbli tirrappreżenta l-indiċi tal-medda. Bl-użu image_array[band], aħna estratt il-valuri tal-pixel mill-array tal-immaġni għal kull faxxa.
Imbagħad, għall-medda attwali, il-funzjonijiet np.min(), np.max(), np.mean(), u np.std() jintużaw biex jiddeterminaw id-devjazzjoni minima, massima, medja u standard tal-pixel valuri.
Id-dejta kkalkulata għal kull medda tiġi ssejvjata f'dizzjunarju b'ċwievet bħal 'Band,' 'Min,' 'Max,' 'Mean,' u 'Std. Kull dizzjunarju huwa mehmuż mal-lista ta 'stats band. Fl-aħħarnett, id-dejta ta 'kull band hija stampata fuq il-console.
4. Kalkolu NDVI (Indiċi ta' Veġetazzjoni tad-Differenza Normalizzata).
L-NDVI huwa miżura popolari għall-kejl tas-saħħa tal-pjanti. F'din it-taqsima, niċċekkjaw biex naraw jekk l-istampa tinkludix mill-inqas erba 'meded, li huma meħtieġa għall-komputazzjoni 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.")
Biex tibda, aħna waqqafna l-varjabbli red_band u nir_band għal Xejn. Il-varjabbli image_count imbagħad tintuża biex tiddetermina jekk l-immaġni fiha mill-inqas erba 'meded.
Jekk iva, niddeduċu li l-faxxa ħamra hija indiċi 2 u l-faxxa tal-infra-aħmar qrib (NIR) hija indiċi 3. Il-meded li jaqblu mill-firxa tal-istampa huma assenjati għall-varjabbli red_band u nir_band.
Jekk iż-żewġ meded ħomor u NIR huma aċċessibbli, l-NDVI jiġi kkalkulat bl-użu tal-formula (NIR – Aħmar) / (NIR + Aħmar). In-numri NDVI li jirriżultaw jindikaw l-indiċi tal-veġetazzjoni għal kull pixel fl-istampa.
Imbagħad naraw l-NDVI billi noħolqu figura ġdida u nuru l-firxa NDVI billi tuża imshow(). Il-metodu colorbar() iżid colorbar mal-plott, u jagħti lill-valuri NDVI referenza viżwali.
Biex niffukaw kompletament fuq il-wiri NDVI, aħna wkoll nispeċifikaw caption għall-plott u neħħi t-tikketti tal-assi bl-assi('off'). Fl-aħħarnett, il-plott jidher bi plt.show().
Messaġġ ta 'żball jinkiteb lill-console jekk l-istampa m'għandhiex il-meded meħtieġa għall-komputazzjoni NDVI (jiġifieri, inqas minn erba' meded).
5. Tressaq l-Immaġni tas-Satellita għall-Agħlaq
Hija l-aħjar prattika li tuża l-funzjoni close() biex tagħlaq il-fajl tal-istampa bis-satellita wara li twettaq l-analiżi u l-wiri. Dan jeħles kwalunkwe riżorsi tas-sistema marbuta mal-fajl tal-istampa.
satellite_image.close()
Hawn is-soluzzjoni tiegħi:
Dak hu!
Noti Finali
Ir-rwol ta 'Python biex jgħin fl-istudju ta' dawn is-settijiet ta 'dejta massivi qed isir dejjem aktar importanti hekk kif id-disponibbiltà u r-riżoluzzjoni tal-immaġini bis-satellita jiżdiedu.
Il-ħila li tuża Python biex taċċessa, tipproċessa, tanalizza u turi immaġini bis-satellita toffri t-triq għal applikazzjonijiet kreattivi u għarfien li jistgħu jmexxu bidla tajba u għarfien akbar tad-dinja tagħna.
Ftakar li tesplora l-għażla kbira ta’ riżorsi, tutorials, u libreriji disponibbli biex iżżid l-għarfien u l-abbiltajiet tiegħek hekk kif tkompli l-avventura tiegħek fl-analiżi ta’ xbihat bis-satellita bl-użu ta’ Python.
Kompli interessat, esplora, u uża l-abbiltajiet ta 'Python biex tikxef il-misteri midfuna ġewwa stampi bis-satellita.
Ħalli Irrispondi