Ny fanaraha-maso ny tontolo iainana, ny fambolena, ny drafitry ny tanàn-dehibe, ny fitantanana ny loza, ary ny fandalinana ny fiovan'ny toetr'andro dia samy nahazo tombony tamin'ny famakafakana sary avy amin'ny zanabolana.
Afaka mahazo fanazavana manan-danja momba ny toetran'ny planetantsika isika, ny fiovana ary ny fihetsehan'ny planetantsika amin'ny alalan'ny fanararaotana ny habetsaky ny angon-drakitra voarakitry ny zanabolana mpanara-maso ny tany.
Python, fiteny maro be sy matanjaka amin'ny fandaharana, dia manolotra tontolo iainana manankarena amin'ny tranomboky sy fitaovana ho an'ny fanodinana sary amin'ny zanabolana haingana sy mahomby.
Ny fampiasana ny famakafakana sary amin'ny zanabolana manokatra tontolon'ny fahafaha-manao. Izy io dia ahafahantsika maka vaovao mahasoa avy amin'ny sarin'ny zanabolana, toy ny fanasokajiana ny rakotry ny tany, ny fanombanana ny fahasalaman'ny zavamaniry, ny fanaraha-maso ny fanitarana ny tanàna, ary ny fanaovana sarintany amoron-dranomasina.
Afaka manodina, mampiseho, ary manadihady mora foana ny sarin'ny zanabolana isika amin'ny alàlan'ny fitrandrahana ny fahaizan'ny Python sy ny maody toy ny rasterio, numpy, ary matplotlib.
Ny iray amin'ireo tombony voalohany amin'ny fampiasana Python amin'ny famakafakana sary amin'ny zanabolana dia ny maodely fanodinana data geospatial.
Rasterio, ohatra, dia manana interface tsotra amin'ny famakiana sy fanovana ny mombamomba ny raster, ka mahatonga azy io ho mety amin'ny fiasana amin'ny rakitra sary amin'ny zanabolana.
Ny maodely numpy dia manome hetsi-panoherana be pitsiny hanaovana kajy haingana sy antontan'isa momba ny angona sary. Matplotlib ihany koa dia ahafahantsika mamorona sary mifanaraka amin'izany hanampy amin'ny fandikana sy fampitana ny valin'ny famakafakana.
Ao amin'ny fizarana manaraka dia hijery ohatra tena izy sy sombin-kaody isika mba hampisehoana ny fomba mety hampiasana ny Python hamakafaka ny sarin'ny zanabolana.
Hojerentsika ny fomba fanokafana sary avy amin'ny zanabolana, sary an-tsaina ny angon-drakitra sary, fakana metadata, kajy ny antontan'isa tarika, ary hanao fanadihadiana manokana toy ny Normalized Difference Vegetation Index (NDVI).
Ireo ohatra ireo dia hanampy anao hanomboka amin'ny lohahevitra mahaliana momba ny famakafakana sary amin'ny zanabolana miaraka amin'ny Python.
Voalohany, mila manafatra tranomboky vitsivitsy isika hanampy antsika amin'ny asantsika.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Fijerena sy fanokafana ny sary zanabolana
Hiditra ao amin'ny tranomboky Rasterio amin'ity fizarana ity izahay mba hidirana amin'ny sary zanabolana omen'ny satellite_image_path.
Ny fisie sary dia misokatra amin'ny alàlan'ny fomba rasterio.open(), ary ny zavatra azo, satellite_image, dia maneho ny sary misokatra.
Ho an'ity asa ity dia nampiasa ny sary avy amin'ity rohy ity aho: https://unsplash.com/photos/JiuVoQd-ZLk ary notehiriziko tao amin'ny ordinaterako ho "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Aorian'ny fanokafana ny sary dia mamaky azy io ho toy ny array isika amin'ny fampiasana ny famakian'ny satellite_image object (). Ny sandan'ny piksel ho an'ny tarika tsirairay amin'ny sary zanabolana dia voatahiry ao amin'ny laharan-tsary.
# Read the image as an array
image_array = satellite_image.read()
Mba hanombanana ara-pahitana ny sarin'ny zanabolana dia mampiasa ny fitaovana matplotlib.pyplot izahay mba hamoronana tarehimarika 10×10-inch.
Ny laharan-tsary dia aseho amin'ny fampiasana ny fomba imshow(). Ny fandidiana transpose(1, 2, 0) dia ampiasaina handaminana ny refin'ny laharan-tsary mba hifanaraka amin'ny baiko andrasan'ny imshow().
Farany, ny axis('off') dia manafina ny mari-pamantarana axis, manome fijery mazava ny sarin'ny zanabolana.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Fitrandrahana Metadata
Maka fampahalalana metadata tena ilaina momba ny sarin'ny zanabolana izahay rehefa nosokafana sy nasehonay. Ity fampahalalana ity dia manampy antsika amin'ny fahatakarana ny toetran'ilay sary ary manolotra teny manodidina ho an'ny fanadihadiana ho avy.
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)
Amin'ny fampiasana ny toetran'ny sakany sy ny haavon'ny zavatra satellite_image, dia alaintsika ny sakany sy ny haavony. Ny fananana crs dia ampiasaina haka ny rafitra fanondroana fandrindrana ny sary (CRS).
Ny CRS dia manome fampahalalana momba ny rafitra fanondroana habakabaka an'ny sary, ahafahantsika mampifanaraka ny fandrindrana sary amin'ny toerana tena misy.
Farany, mampiasa ny toetran'ny fanisana an'ny zavatra satellite_image izahay hanisa ny isan'ny tarika ao amin'ny sary. Ity angona ity dia tena ilaina amin'ny famakafakana any aoriana satria ahafahantsika mahazo ny sandan'ny piksel ho an'ny tarika tsirairay ao amin'ny laharan-tsary.
3. Fanisana Statistique Band
Kajy ny antontan'isa ho an'ny tarika tsirairay ao amin'ny laharan-tsary amin'ity ampahany ity. Miverimberina manerana ny tarika tsirairay ny tadivavarana, ary ny fampiasa min, max, mean, ary std an'ny numpy no ampiasaina hanisa ireo antontan'isa ireo.
Ny lisitry ny rakibolana dia mitahiry ny antontan'isa ho an'ny tarika tsirairay.
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)
Mihodina manerana ny tarika tsirairay ny tadivavarana, miaraka amin'ny tarika miovaova maneho ny tondro tarika. Amin'ny fampiasana image_array[band], dia maka ny soatoavina piksel avy amin'ny laharan-tsary ho an'ny tarika tsirairay.
Avy eo, ho an'ny tarika amin'izao fotoana izao, ny np.min(), np.max(), np.mean(), ary np.std() dia ampiasaina hamaritana ny fivilian'ny pixel kely indrindra, ambony indrindra, mean, ary mahazatra. soatoavina.
Ny angona kajy ho an'ny tarika tsirairay dia voatahiry ao anaty rakibolana misy fanalahidy toy ny 'Band' 'Min' 'Max' 'Mean' ary 'Std. Ny rakibolana tsirairay dia ampiana amin'ny lisitry ny antontan'isa tarika. Farany, atao pirinty amin'ny console ny angon'ny tarika tsirairay.
4. Fikajiana NDVI (Tondron'ny zava-maniry mahazatra mahazatra).
Ny NDVI dia fepetra malaza amin'ny fandrefesana ny fahasalaman'ny zavamaniry. Ato amin'ity fizarana ity, jereo raha toa ka misy tarika efatra farafahakeliny ny sary, izay takiana amin'ny kajy 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.")
Hanombohana dia mametraka ny fari-piadidiana mena_mena sy nir_band ho Tsy misy. Avy eo dia ampiasaina hamaritana raha misy tarika efatra farafahakeliny ilay sary.
Raha izany no izy, dia ataontsika fa ny tarika mena dia fanondro 2 ary ny tarika akaiky-infraroda (NIR) dia tondro 3. Ny tarika mifanandrify amin'ny laharan-tsary dia omena amin'ny fari-pitsipika mena_mena sy nir_band.
Raha toa ka azo idirana ny tarika mena sy ny NIR, ny NDVI dia kajy amin'ny fampiasana ny formula (NIR – Red) / (NIR + Red). Ny laharan'ny NDVI vokatr'izany dia manondro ny fanondroana zavamaniry ho an'ny piksel tsirairay amin'ny sary.
Avy eo dia mahita ny NDVI isika amin'ny famoronana tarehimarika vaovao ary mampiseho ny NDVI array mampiasa imshow(). Ny fomba colorbar() dia manampy colorbar amin'ny tetika, manome ny soatoavin'ny NDVI ho fanondro hita maso.
Mba hifantohana tanteraka amin'ny fampisehoana NDVI, dia anondro koa ny lohateny ho an'ilay tetika ary esorinay ireo etikety axe misy axe('off'). Farany, aseho amin'ny plt.show() ilay tetika.
Misy hafatra diso voasoratra ao amin'ny console raha tsy ampy ny tarika ilaina amin'ny kajy NDVI (izany hoe, bandy latsaky ny efatra).
5. Famaranana ny sarin'ny zanabolana
Fomba fanao tsara indrindra ny mampiasa ny close() asa hanakatona ny sarin'ny zanabolana rakitra aorian'ny fanaovana ny fanadihadiana sy ny fijerena. Izany dia manafaka izay loharanon'ny rafitra mifandray amin'ny rakitra sary.
satellite_image.close()
Ity ny vahaolana azoko:
Dia izay!
Final Notes
Ny anjara asan'i Python amin'ny fanampiana ny fandalinana ireo angona goavana ireo dia miha-mitombo hatrany satria mihamitombo ny fisiana sy ny famahana ny sary amin'ny zanabolana.
Ny fahaizana mampiasa Python hidirana, handinihana, hamakafaka, ary hampisehoana sary avy amin'ny zanabolana dia manome ny lalana ho an'ny fampiharana famoronana sy hevitra izay mety hitondra fiovana tsara sy fahalalana bebe kokoa momba ny tontolontsika.
Tsarovy ny hitrandraka ireo loharanon-karena, fampianarana ary tranomboky betsaka azo ampiasaina hampitomboana ny fahalalanao sy ny fahaizanao rehefa manohy ny dianao amin'ny famakafakana sary amin'ny zanabolana mampiasa Python ianao.
Tohizo ny liana, mikaroka ary mampiasa ny fahaizan'i Python hamoahana ireo mistery nalevina ao anaty sarin'ny zanabolana.
Leave a Reply