Ufuatiliaji wa mazingira, kilimo, mipango miji, usimamizi wa maafa, na tafiti za mabadiliko ya hali ya hewa zote zimenufaika kutokana na uchanganuzi wa picha za satelaiti.
Tunaweza kupata maarifa muhimu kuhusu sifa, mabadiliko na mienendo ya sayari yetu kwa kutumia kiasi kikubwa cha data iliyorekodiwa na satelaiti zinazoangalia Dunia.
Python, lugha ya programu yenye matumizi mengi na dhabiti, inatoa mfumo tajiri wa ikolojia wa maktaba na zana za uchakataji wa haraka na bora wa picha za setilaiti.
matumizi ya uchambuzi wa picha za satelaiti inafungua ulimwengu wa uwezekano. Inatuwezesha kupata taarifa muhimu kutoka kwa picha za setilaiti, kama vile uainishaji wa eneo la ardhi, tathmini ya afya ya mimea, kufuatilia upanuzi wa miji na ramani ya ufuo.
Tunaweza kuchakata, kuonyesha, na kuchambua picha za setilaiti kwa urahisi kwa kutumia uwezo wa Python na moduli nyingi kama vile rasterio, numpy na matplotlib.
Mojawapo ya faida za msingi za kutumia Python kwa uchanganuzi wa picha za satelaiti ni anuwai ya moduli za usindikaji wa data za kijiografia.
Rasterio, kwa mfano, ina kiolesura rahisi cha kusoma na kurekebisha taarifa mbaya, na kuifanya kufaa kwa kufanya kazi na faili za picha za satelaiti.
Moduli ya numpy hutoa uendeshaji wa safu ya kisasa kwa kufanya hesabu za haraka na takwimu kwenye data ya picha. Matplotlib pia hutuwezesha kutoa taswira zinazofaa ili kusaidia katika tafsiri na mawasiliano ya matokeo ya uchanganuzi.
Katika sehemu zifuatazo, tutaangalia mifano halisi na vijisehemu vya msimbo ili kuonyesha jinsi Python inaweza kutumika kuchanganua picha za setilaiti.
Tutapitia jinsi ya kufungua picha za setilaiti, kuibua data ya upigaji picha, kutoa metadata, kukokotoa takwimu za bendi, na kufanya uchanganuzi maalum kama Kielezo cha Kawaida cha Uoto wa Kawaida (NDVI).
Mifano hii itakusaidia kuanza katika mada ya kuvutia ya uchanganuzi wa picha za satelaiti na Python.
Kwanza, tunahitaji kuagiza baadhi ya maktaba ili zitusaidie katika kazi yetu.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Kutazama na Kufungua Picha ya Satellite
Tutafanya maktaba ya Rasterio katika sehemu hii kufikia picha ya setilaiti inayotolewa na satellite_image_path.
Faili ya picha inafunguliwa kwa kutumia njia ya rasterio.open(), na kitu cha matokeo, satellite_image, inawakilisha picha iliyofunguliwa.
Kwa kazi hii, nimetumia picha kutoka kwa kiungo hiki: https://unsplash.com/photos/JiuVoQd-ZLk na kuihifadhi kwenye kompyuta yangu kama "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Baada ya kufungua picha, tunaisoma kama safu kwa kutumia kitendakazi cha satellite_image object's read(). Thamani za pikseli kwa kila bendi ya picha za setilaiti zimehifadhiwa katika safu ya picha.
# Read the image as an array
image_array = satellite_image.read()
Ili kutathmini picha ya setilaiti kwa macho, tunatumia zana ya matplotlib.pyplot kutengeneza kielelezo cha inchi 10×10.
Safu ya picha inaonyeshwa kwa kutumia imshow() njia. Uendeshaji wa transpose(1, 2, 0) hutumika kupanga upya vipimo vya safu ya picha ili kupatana na mpangilio unaotarajiwa na imshow().
Mwishowe, mhimili('off') huficha lebo za mhimili, ikitoa mwonekano wazi wa picha ya setilaiti.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Uchimbaji wa Metadata
Tunatoa maelezo muhimu ya metadata kuhusu picha ya setilaiti baada ya kuifungua na kuionyesha. Maelezo haya hutusaidia kuelewa sifa za picha na hutoa muktadha wa uchunguzi wa siku zijazo.
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)
Kwa kutumia sifa za upana na urefu wa kitu cha satellite_image, tunatoa upana wa picha na urefu. Sifa ya crs inatumika kupata mfumo wa marejeleo wa kuratibu wa picha (CRS).
CRS hutoa maelezo kuhusu mfumo wa marejeleo ya anga wa picha, huturuhusu kulinganisha viwianishi vya picha na maeneo ya ulimwengu halisi.
Hatimaye, tunatumia sifa ya hesabu ya kitu cha satellite_image kuhesabu idadi ya bendi kwenye picha. Data hii ni muhimu kwa uchanganuzi wa baadaye kwa sababu huturuhusu kupata thamani za pikseli kwa kila bendi kwenye safu ya picha.
3. Hesabu ya Takwimu za Bendi
Tunahesabu takwimu kwa kila bendi kwenye safu ya picha katika sehemu hii. Kitanzi kinajirudia katika kila bendi, na numpy's min, max, mean, na std vitendakazi vya maktaba numpy hutumika kukokotoa takwimu hizi.
Orodha ya kamusi huhifadhi takwimu za kila bendi.
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)
Mizunguko ya kitanzi katika kila bendi, na bendi ya kutofautisha inayowakilisha faharasa ya bendi. Kwa kutumia image_array[bendi], tunatoa thamani za pikseli kutoka kwa safu ya picha kwa kila bendi.
Kisha, kwa bendi ya sasa, np.min(), np.max(), np.mean(), na np.std() chaguo za kukokotoa hutumika kubainisha kiwango cha chini kabisa, cha juu zaidi, cha wastani, na mkengeuko wa kawaida wa saizi. maadili.
Data iliyokokotwa kwa kila bendi huhifadhiwa katika kamusi yenye funguo kama vile 'Bendi,' 'Min,' 'Max,' 'Mean,' na 'Std. Kila kamusi imeongezwa kwa orodha ya takwimu za bendi. Hatimaye, data ya kila bendi huchapishwa kwenye kiweko.
4. NDVI (Kielezo cha Kawaida cha Tofauti ya Uoto) Kukokotoa
NDVI ni kipimo maarufu cha kupima afya ya mimea. Katika sehemu hii, tunaangalia ikiwa picha inajumuisha angalau bendi nne, ambazo zinahitajika kwa hesabu ya 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.")
Kuanza, tunaweka vigeuzo vya red_band na nir_band kuwa Hakuna. Kigezo cha picha_hesabu basi kinatumiwa kubainisha ikiwa picha ina angalau bendi nne.
Ikiwa ndivyo, tunakisia kuwa bendi nyekundu ni fahirisi 2 na bendi ya karibu ya infrared (NIR) ni fahirisi 3. Mikanda inayolingana kutoka kwa safu ya picha imepewa vigeu red_band na nir_band.
Ikiwa bendi zote nyekundu na NIR zinapatikana, NDVI inakokotolewa kwa kutumia fomula (NIR - Nyekundu) / (NIR + Nyekundu). Nambari za NDVI zinazotokana zinaonyesha faharasa ya mimea kwa kila pikseli kwenye picha.
Kisha tunaona NDVI kwa kuunda takwimu mpya na kuonyesha safu ya NDVI kwa kutumia imshow(). Njia ya colorbar() inaongeza upau wa rangi kwenye njama, ikitoa maadili ya NDVI rejeleo la kuona.
Ili kuangazia kabisa onyesho la NDVI, kwa kuongeza tunabainisha maelezo mafupi ya njama na kuondoa lebo za mhimili zenye mhimili('off'). Hatimaye, njama inaonyeshwa na plt.show().
Ujumbe wa hitilafu huandikwa kwa koni ikiwa picha haina bendi zinazohitajika kwa ukokotoaji wa NDVI (yaani, chini ya bendi nne).
5. Kuleta Picha ya Satellite Karibu
Ni vyema kutumia kitendakazi cha close() kufunga faili ya picha ya satelaiti baada ya kufanya uchanganuzi na kutazama. Hii huweka huru rasilimali zozote za mfumo zilizounganishwa na faili ya picha.
satellite_image.close()
Hapa kuna suluhisho langu:
Hiyo ni!
Maelezo mwisho
Jukumu la Python katika kusaidia utafiti wa hifadhidata hizi kubwa linazidi kuwa muhimu kadri upatikanaji na azimio la picha za satelaiti unavyoongezeka.
Uwezo wa kutumia Python kufikia, kuchakata, kuchanganua na kuonyesha picha za setilaiti hutoa njia ya programu bunifu na maarifa ambayo yanaweza kuleta mabadiliko mazuri na maarifa zaidi ya ulimwengu wetu.
Kumbuka kuchunguza uteuzi mkubwa wa nyenzo, mafunzo, na maktaba zinazopatikana ili kuongeza ujuzi na uwezo wako unapoendelea na matukio yako ya uchanganuzi wa picha za setilaiti kwa kutumia Python.
Endelea kupendezwa, kuchunguza, na kutumia uwezo wa Python kufichua mafumbo yaliyozikwa ndani ya picha za satelaiti.
Acha Reply