Siveyans anviwònman, agrikilti, planifikasyon iben, jesyon dezas, ak etid chanjman klima yo tout te benefisye de analiz imaj satelit.
Nou ka jwenn apèsi enpòtan sou karakteristik, chanjman, ak dinamik planèt nou an nan eksplwate kantite masiv done ki anrejistre pa satelit obsèvasyon Latè.
Python, yon langaj pwogramasyon versatile ak fò, ofri yon ekosistèm rich nan bibliyotèk ak zouti pou pwosesis simagri satelit rapid ak efikas.
Itilize nan analiz imaj satelit ouvri yon mond posiblite. Li pèmèt nou ekstrè enfòmasyon itil nan foto satelit yo, tankou kategorizasyon kouvèti tè, evalyasyon sante vejetasyon, swiv ekspansyon iben, ak kat litoral.
Nou ka fasilman trete, montre, ak analize imaj satelit lè nou eksplwate adaptabilite ak modil Python tankou rasterio, numpy, ak matplotlib.
Youn nan benefis prensipal yo nan itilize Python pou analiz simagri satelit se gwo ranje li yo nan modil pwosesis done jeospasyo.
Rasterio, pou egzanp, gen yon koòdone senp pou li ak modifye enfòmasyon raster, ki fè li apwopriye pou travay ak fichye simagri satelit.
Modil la numpy bay operasyon etalaj sofistike pou fè kalkil rapid ak estatistik sou done foto. Matplotlib tou pèmèt nou jenere vizyèl ki enpòtan pou ede nan entèpretasyon ak kominikasyon rezilta analitik yo.
Nan seksyon sa yo, nou pral gade ekzanp aktyèl yo ak fragments kòd pou montre kijan Python ka itilize pou analize foto satelit yo.
Nou pral ale sou fason pou louvri foto satelit yo, vizyalize done imaj, ekstrè metadata, kalkile estatistik gwoup, epi fè analiz patikilye tankou Endèks Vejetasyon Diferans Nòmalize (NDVI).
Egzanp sa yo pral ede w kòmanse nan sijè curieux analiz imaj satelit ak Python.
Premyèman, nou bezwen enpòte kèk bibliyotèk pou ede nou ak travay nou an.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Vizyalize ak louvri imaj satelit la
Nou pral bibliyotèk la Rasterio nan seksyon sa a jwenn aksè nan imaj satelit yo bay satelit_image_path la.
Fichye imaj la louvri lè l sèvi avèk metòd rasterio.open(), epi objè a, satelit_image, reprezante imaj la louvri.
Pou travay sa a, mwen te itilize imaj ki soti nan lyen sa a: https://unsplash.com/photos/JiuVoQd-ZLk epi sove li sou òdinatè mwen an kòm "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Apre ou fin louvri foto a, nou li li kòm yon etalaj lè l sèvi avèk fonksyon read() objè satelit_image la. Valè pixel pou chak gwoup foto satelit yo estoke nan etalaj imaj la.
# Read the image as an array
image_array = satellite_image.read()
Pou evalye vizyèlman foto satelit la, nou itilize zouti matplotlib.pyplot pou jenere yon figi 10 × 10-pous.
Yo montre etalaj foto a lè l sèvi avèk metòd imshow(). Operasyon transpose(1, 2, 0) yo itilize pou reranje dimansyon etalaj foto a pou anfòm lòd imshow() prevwa a.
Finalman, aks('off') kache etikèt yo aks, bay yon gade klè nan foto satelit la.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Metadata ekstraksyon
Nou ekstrè enfòmasyon enpòtan metadata sou foto satelit la apre ou fin louvri epi montre li. Enfòmasyon sa a ede nou konprann kalite imaj la epi li ofri kontèks pou envestigasyon nan lavni.
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)
Sèvi ak atribi lajè ak wotè nan objè satelit_image, nou ekstrè lajè ak wotè imaj la. Yo itilize pwopriyete crs la pou rekipere sistèm referans kowòdone imaj la (CRS).
CRS a bay enfòmasyon sou sistèm referans espasyal foto a, sa ki pèmèt nou matche kowòdone imaj ak kote ki nan mond reyèl la.
Finalman, nou itilize atribi konte nan objè satelit_image pou kalkile kantite bann ki nan imaj la. Done sa yo enpòtan pou analiz pita paske li pèmèt nou jwenn valè pixel pou chak gwoup nan etalaj foto a.
3. Bann Statistik Kalkil
Nou kalkile estatistik pou chak gwoup nan etalaj foto a nan pati sa a. Yon bouk itere atravè chak gwoup, epi yo itilize fonksyon min, max, mean, ak std bibliyotèk numpy la pou kalkile estatistik sa yo.
Yon lis diksyonè yo estoke estatistik yo pou chak gwoup.
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)
Sik bouk yo atravè chak gwoup, ak gwoup varyab ki reprezante endèks la. Sèvi ak image_array[band], nou ekstrè valè pixel yo nan etalaj imaj la pou chak gwoup.
Lè sa a, pou gwoup aktyèl la, np.min(), np.max(), np.mean(), ak np.std() fonksyon yo itilize pou detèmine minimòm, maksimòm, mwayen ak estanda devyasyon pixel la. valè.
Done yo kalkile pou chak gwoup yo sove nan yon diksyonè ak kle tankou 'Band,' 'Min,' 'Max,' 'Mean,' ak 'Std. Chak diksyonè yo ajoute nan lis estatistik gwoup la. Finalman, done chak gwoup yo enprime nan konsole a.
4. Kalkil NDVI (Endèks Vejetasyon Diferans Nòmalize).
NDVI a se yon mezi popilè pou mezire sante plant yo. Nan seksyon sa a, nou tcheke pou wè si foto a gen ladan omwen kat gwoup, ki nesesè pou kalkil 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.")
Pou kòmanse, nou mete varyab red_band ak nir_band nan None. Lè sa a, varyab image_count la itilize pou detèmine si imaj la gen omwen kat gwoup.
Si se konsa, nou dedwi bann wouj la se endèks 2 ak bann tou pre-enfrawouj (NIR) se endèks 3. Gwoup ki matche yo nan etalaj foto a yo asiyen nan varyab red_band ak nir_band.
Si tou de bann wouj ak NIR yo aksesib, NDVI a kalkile ak fòmil (NIR – Wouj) / (NIR + Wouj). Nimewo NDVI ki rezilta yo endike endèks vejetasyon pou chak pixel nan foto a.
Lè sa a, nou wè NDVI a lè nou kreye yon nouvo figi epi montre etalaj NDVI a lè l sèvi avèk imshow(). Metòd colorbar() ajoute yon ba koulè nan konplo a, bay valè NDVI yo yon referans vizyèl.
Pou konsantre antyèman sou ekspozisyon NDVI a, anplis nou presize yon tit pou trase a epi retire etikèt aks yo ak aks('off'). Finalman, yo montre trase a ak plt.show().
Yo ekri yon mesaj erè nan konsole a si foto a manke gwoup ki nesesè pou kalkil NDVI (sa vle di, mwens pase kat gwoup).
5. Pote imaj satelit la nan yon fèmen
Li pi bon pratik pou itilize fonksyon fèmen () pou fèmen fichye foto satelit la apre yo fin fè analiz la ak gade. Sa a libere nenpòt resous sistèm ki lye ak dosye foto a.
satellite_image.close()
Men solisyon mwen an:
Sa a li!
Nòt Final
Wòl Python nan ede etid la nan seri done masiv sa yo ap vin de pli zan pli enpòtan kòm disponiblite a ak rezolisyon nan imaj satelit yo ogmante.
Kapasite pou itilize Python pou jwenn aksè, trete, analize, epi montre imaj satelit yo ofri chemen pou aplikasyon kreyatif ak konesans ki ka mennen bon chanjman ak pi gwo konesans sou mond nou an.
Sonje eksplore gwo seleksyon resous, leson patikilye, ak bibliyotèk ki disponib pou ogmante konesans ou ak kapasite w pandan w ap kontinye nan avanti w nan analiz imaj satelit ak Python.
Kontinye enterese, eksplore, epi sèvi ak kapasite Python pou dekouvri mistè yo antere andedan foto satelit yo.
Kite yon Reply