Маніторынг навакольнага асяроддзя, сельская гаспадарка, гарадское планаванне, барацьба са стыхійнымі бедствамі і даследаванні змены клімату атрымалі карысць ад аналізу спадарожнікавых здымкаў.
Мы можам атрымаць значнае ўяўленне пра характарыстыкі, змены і дынаміку нашай планеты, выкарыстоўваючы велізарную колькасць даных, запісаных спадарожнікамі для назірання за Зямлёй.
Python, універсальная і моцная мова праграмавання, прапануе багатую экасістэму бібліятэк і інструментаў для хуткай і эфектыўнай апрацоўкі спадарожнікавых здымкаў.
Ужыванне аналіз спадарожнікавых здымкаў адкрывае свет магчымасцей. Гэта дазваляе нам здабываць карысную інфармацыю са спадарожнікавых фатаграфій, такую як катэгарызацыя наземнага покрыва, ацэнка здароўя расліннасці, адсочванне пашырэння гарадоў і картаграфаванне берагавой лініі.
Мы можам лёгка апрацоўваць, адлюстроўваць і аналізаваць спадарожнікавыя выявы, выкарыстоўваючы ўніверсальнасць Python і такія модулі, як rasterio, numpy і matplotlib.
Адной з галоўных пераваг выкарыстання Python для аналізу спадарожнікавых здымкаў з'яўляецца шырокі спектр модуляў апрацоўкі геапрасторавых даных.
Напрыклад, Rasterio мае просты інтэрфейс для чытання і змены растравай інфармацыі, што робіць яго прыдатным для працы з файламі спадарожнікавых здымкаў.
Модуль numpy забяспечвае складаныя аперацыі з масівамі для выканання хуткіх вылічэнняў і статыстыкі даных малюнкаў. Matplotlib таксама дазваляе нам ствараць адпаведныя візуальныя элементы, якія дапамагаюць у інтэрпрэтацыі і перадачы аналітычных вынікаў.
У наступных раздзелах мы разгледзім рэальныя прыклады і фрагменты кода, каб паказаць, як можна выкарыстоўваць Python для аналізу спадарожнікавых фатаграфій.
Мы раскажам, як адкрываць спадарожнікавыя фатаграфіі, візуалізаваць даныя здымкаў, здабываць метаданыя, вылічваць статыстыку паласы і праводзіць пэўны аналіз, напрыклад, нармалізаваны індэкс расліннасці (NDVI).
Гэтыя прыклады дапамогуць вам пачаць займацца інтрыгуючай тэмай аналізу спадарожнікавых здымкаў з дапамогай Python.
Па-першае, нам трэба імпартаваць некаторыя бібліятэкі, каб дапамагчы нам з нашай задачай.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. Візуалізацыя і адкрыццё спадарожнікавага здымка
У гэтым раздзеле мы выкарыстоўваем бібліятэку Rasterio для доступу да спадарожнікавага здымка, атрыманага па шляху path_image_path.
Файл выявы адкрываецца з дапамогай метаду rasterio.open(), а выніковы аб'ект, satellite_image, прадстаўляе адкрыты малюнак.
Для гэтага задання я выкарыстаў выяву па гэтай спасылцы: https://unsplash.com/photos/JiuVoQd-ZLk і захаваў яе на сваім камп'ютары як "satellite.jpg".
# Open the satellite image using rasterio
satellite_image_path = 'satellite.jpg'
satellite_image = rasterio.open(satellite_image_path)
Адкрыўшы малюнак, мы чытаем яго як масіў з дапамогай функцыі read() аб'екта satellite_image. Значэнні пікселяў для кожнай паласы спадарожнікавых здымкаў захоўваюцца ў масіве малюнкаў.
# Read the image as an array
image_array = satellite_image.read()
Для візуальнай ацэнкі спадарожнікавага здымка мы выкарыстоўваем інструмент matplotlib.pyplot для стварэння фігуры памерам 10×10 цаляў.
Масіў малюнкаў паказваецца з дапамогай метаду imshow(). Аперацыя transpose(1, 2, 0) выкарыстоўваецца для змены памераў масіва малюнкаў у адпаведнасці з парадкам, прадугледжаным imshow().
Нарэшце, axis('off') хавае меткі восяў, даючы выразны від на спадарожнікавым здымку.
# Visualize the image
plt.figure(figsize=(10, 10))
plt.imshow(image_array.transpose(1, 2, 0))
plt.axis('off')
plt.show()
2. Выманне метададзеных
Мы здабываем жыццёва важныя метаданыя інфармацыі пра спадарожнікавы здымак пасля яго адкрыцця і адлюстравання. Гэтая інфармацыя дапамагае нам зразумець якасці выявы і прапануе кантэкст для будучага расследавання.
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)
Выкарыстоўваючы атрыбуты width і height аб'екта satellite_image, мы здабываем шырыню і вышыню выявы. Уласцівасць crs выкарыстоўваецца для атрымання сістэмы адліку каардынатаў выявы (CRS).
CRS дае інфармацыю аб сістэме прасторавай адліку выявы, што дазваляе супаставіць каардынаты выявы з месцамі ў рэальным свеце.
Нарэшце, мы выкарыстоўваем атрыбут count аб'екта satellite_image для разліку колькасці палос на малюнку. Гэтыя даныя вельмі важныя для наступнага аналізу, таму што яны дазваляюць нам атрымаць значэнні пікселяў для кожнай паласы ў масіве малюнкаў.
3. Разлік паласы статыстыкі
Мы разлічваем статыстыку для кожнай паласы ў масіве малюнкаў у гэтай частцы. Цыкл праходзіць па кожнай паласе, а функцыі min, max, mean і std бібліятэкі numpy выкарыстоўваюцца для вылічэння гэтай статыстыкі.
Спіс слоўнікаў захоўвае статыстыку для кожнага дыяпазону.
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)
Цыкл праходзіць па кожнай паласе, прычым зменная паласа ўяўляе сабой індэкс паласы. Выкарыстоўваючы image_array[band], мы здабываем значэнні пікселяў з масіва малюнкаў для кожнай паласы.
Затым для бягучага дыяпазону выкарыстоўваюцца функцыі np.min(), np.max(), np.mean() і np.std() для вызначэння мінімальнага, максімальнага, сярэдняга і стандартнага адхіленняў пікселя. каштоўнасці.
Вылічаныя даныя для кожнага дыяпазону захоўваюцца ў слоўніку з такімі ключамі, як «Дыяпазон», «Мін.», «Макс.», «Сярэдняе» і «Стандарт. Кожны слоўнік дадаецца да спісу статыстыкі групы. Нарэшце, дадзеныя кожнай групы друкуюцца на кансолі.
4. Разлік NDVI (нармалізаваны індэкс расліннасці).
NDVI - гэта папулярная мера для вымярэння здароўя раслін. У гэтым раздзеле мы правяраем, ці змяшчае малюнак як мінімум чатыры дыяпазоны, неабходныя для вылічэння 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.")
Для пачатку мы ўсталявалі зменныя red_band і nir_band у None. Зменная image_count затым выкарыстоўваецца для вызначэння таго, ці змяшчае выява як мінімум чатыры паласы.
Калі так, мы робім выснову, што чырвоная паласа мае індэкс 2, а дыяпазон блізкага інфрачырвонага (NIR) - індэкс 3. Адпаведныя паласы з масіва выявы прысвойваюцца зменным red_band і nir_band.
Калі і чырвоны, і NIR дыяпазоны даступныя, NDVI разлічваецца па формуле (NIR – чырвоны) / (NIR + чырвоны). Атрыманыя лічбы NDVI паказваюць індэкс расліннасці для кожнага пікселя на малюнку.
Затым мы бачым NDVI, ствараючы новую фігуру і адлюстроўваючы масіў NDVI з дапамогай imshow(). Метад colorbar() дадае каляровую паласу на графік, даючы значэнням NDVI візуальную спасылку.
Каб цалкам сканцэнтравацца на дысплеі NDVI, мы дадаткова вызначаем загаловак для графіка і выдаляем меткі восяў з дапамогай axis('off'). Нарэшце, сюжэт паказваецца з дапамогай plt.show().
Паведамленне пра памылку запісваецца на кансоль, калі на малюнку адсутнічаюць паласы, неабходныя для вылічэння NDVI (г.зн., менш за чатыры паласы).
5. Набліжэнне спадарожнікавага здымка
Лепш за ўсё выкарыстоўваць функцыю close(), каб закрыць файл спадарожнікавага здымка пасля правядзення аналізу і прагляду. Гэта вызваляе ўсе сістэмныя рэсурсы, звязаныя з файлам малюнка.
satellite_image.close()
Вось маё рашэнне:
Вось так!
Заключныя Заўвагі
Роля Python у аказанні дапамогі ў вывучэнні гэтых масіўных набораў даных становіцца ўсё больш важнай па меры росту даступнасці і разрознасці спадарожнікавых здымкаў.
Магчымасць выкарыстання Python для доступу, апрацоўкі, аналізу і паказу спадарожнікавых здымкаў адкрывае шлях для творчых прыкладанняў і разумення, якія могуць спрыяць добрым зменам і больш глыбокаму веданню нашага свету.
Не забудзьце вывучыць вялікі выбар даступных рэсурсаў, навучальных дапаможнікаў і бібліятэк, каб пашырыць свае веды і здольнасці, працягваючы свае прыгоды ў аналізе спадарожнікавых здымкаў з дапамогай Python.
Працягвайце цікавіцца, даследуйце і выкарыстоўвайце здольнасці Python, каб раскрыць таямніцы, якія хаваюцца ў спадарожнікавых здымках.
Пакінуць каментар