ການຕິດຕາມສິ່ງແວດລ້ອມ, ການກະສິກໍາ, ການວາງແຜນຜັງເມືອງ, ການຄຸ້ມຄອງໄພພິບັດ, ແລະການສຶກສາການປ່ຽນແປງດິນຟ້າອາກາດທັງຫມົດໄດ້ຮັບຜົນປະໂຫຍດຈາກການວິເຄາະຮູບພາບດາວທຽມ.
ພວກເຮົາສາມາດໄດ້ຮັບຄວາມເຂົ້າໃຈທີ່ສໍາຄັນກ່ຽວກັບລັກສະນະ, ການປ່ຽນແປງ, ແລະການເຄື່ອນໄຫວຂອງດາວຂອງພວກເຮົາໂດຍການຂຸດຄົ້ນຈໍານວນຫຼາຍຂອງຂໍ້ມູນທີ່ບັນທຶກໄວ້ໂດຍດາວທຽມສັງເກດເບິ່ງໂລກ.
Python, ເປັນພາສາການຂຽນໂປຼແກຼມທີ່ຫຼາກຫຼາຍ ແລະແຂງແຮງ, ສະໜອງລະບົບນິເວດທີ່ອຸດົມສົມບູນຂອງຫ້ອງສະໝຸດ ແລະເຄື່ອງມືສຳລັບການປະມວນຜົນພາບດາວທຽມຢ່າງວ່ອງໄວ ແລະມີປະສິດທິພາບ.
ການນໍາໃຊ້ຂອງ ການວິເຄາະຮູບພາບດາວທຽມ ເປີດໂລກຂອງຄວາມເປັນໄປໄດ້. ມັນຊ່ວຍໃຫ້ພວກເຮົາສາມາດສະກັດຂໍ້ມູນທີ່ເປັນປະໂຫຍດຈາກຮູບດາວທຽມ, ເຊັ່ນ: ການຈັດປະເພດພື້ນທີ່ປົກຄຸມ, ການປະເມີນສຸຂະພາບຂອງພືດ, ການຕິດຕາມການຂະຫຍາຍຕົວເມືອງ, ແລະການສ້າງແຜນທີ່ແຄມຝັ່ງ.
ພວກເຮົາສາມາດປະມວນຜົນ, ສະແດງ, ແລະວິເຄາະຮູບພາບດາວທຽມໄດ້ຢ່າງງ່າຍດາຍໂດຍການໃຊ້ປະໂຫຍດຂອງ Python versatility ແລະໂມດູນເຊັ່ນ rasterio, numpy, ແລະ matplotlib.
ຫນຶ່ງໃນຜົນປະໂຫຍດຕົ້ນຕໍຂອງການນໍາໃຊ້ Python ສໍາລັບການວິເຄາະຮູບພາບດາວທຽມແມ່ນລະດັບຄວາມກ້ວາງຂອງໂມດູນການປະມວນຜົນຂໍ້ມູນ geospatial.
Rasterio, ສໍາລັບການຍົກຕົວຢ່າງ, ມີການໂຕ້ຕອບງ່າຍດາຍສໍາລັບການອ່ານແລະດັດແກ້ຂໍ້ມູນ raster, ເຮັດໃຫ້ມັນເຫມາະສົມສໍາລັບການເຮັດວຽກກັບໄຟລ໌ຮູບພາບດາວທຽມ.
ໂມດູນ numpy ສະຫນອງການດໍາເນີນງານ array sophisticated ສໍາລັບການປະຕິບັດການຄິດໄລ່ໄວແລະສະຖິຕິກ່ຽວກັບຂໍ້ມູນຮູບພາບ. Matplotlib ຍັງຊ່ວຍໃຫ້ພວກເຮົາສາມາດສ້າງສາຍຕາທີ່ກ່ຽວຂ້ອງເພື່ອຊ່ວຍໃນການຕີຄວາມຫມາຍແລະການສື່ສານຜົນໄດ້ຮັບການວິເຄາະ.
ໃນພາກຕໍ່ໄປນີ້, ພວກເຮົາຈະເບິ່ງຕົວຢ່າງຕົວຈິງແລະຕົວຢ່າງຂອງລະຫັດເພື່ອສະແດງໃຫ້ເຫັນວ່າ Python ອາດຈະຖືກນໍາໃຊ້ໃນການວິເຄາະຮູບພາບດາວທຽມ.
ພວກເຮົາຈະໄປເບິ່ງວິທີການເປີດຮູບພາບດາວທຽມ, ເບິ່ງເຫັນຂໍ້ມູນຮູບພາບ, ສະກັດ metadata, ຄິດໄລ່ສະຖິຕິແຖບ, ແລະດໍາເນີນການວິເຄາະໂດຍສະເພາະເຊັ່ນ Normalized Difference Vegetation Index (NDVI).
ຕົວຢ່າງເຫຼົ່ານີ້ຈະຊ່ວຍໃຫ້ທ່ານເລີ່ມຕົ້ນໃນຫົວຂໍ້ທີ່ຫນ້າສົນໃຈຂອງການວິເຄາະຮູບພາບດາວທຽມກັບ Python.
ກ່ອນອື່ນ, ພວກເຮົາຕ້ອງນໍາເຂົ້າຫ້ອງສະຫມຸດຈໍານວນຫນຶ່ງເພື່ອຊ່ວຍພວກເຮົາໃນວຽກງານຂອງພວກເຮົາ.
import rasterio
import matplotlib.pyplot as plt
import numpy as np
1. ເຫັນພາບ ແລະ ເປີດພາບດາວທຽມ
ພວກເຮົາຈະຫ້ອງສະຫມຸດ Rasterio ໃນພາກນີ້ເພື່ອເຂົ້າເຖິງຮູບພາບດາວທຽມທີ່ສະຫນອງໂດຍ satellite_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)
ຫຼັງຈາກເປີດຮູບພາບ, ພວກເຮົາອ່ານມັນເປັນ array ການນໍາໃຊ້ຟັງຊັນ satellite_image object ຂອງ read(). ຄ່າຂອງ pixels ລວງຂອງແຕ່ລະແຖບຂອງຮູບດາວທຽມຈະຖືກເກັບໄວ້ໃນ array ຮູບພາບ.
# Read the image as an array
image_array = satellite_image.read()
ເພື່ອປະເມີນພາບດາວທຽມ, ພວກເຮົາໃຊ້ເຄື່ອງມື matplotlib.pyplot ເພື່ອສ້າງຕົວເລກ 10×10 ນິ້ວ.
array ຮູບແມ່ນສະແດງໂດຍໃຊ້ວິທີການ 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. ການສະກັດຂໍ້ມູນ Metadata
ພວກເຮົາສະກັດຂໍ້ມູນ metadata ທີ່ສໍາຄັນກ່ຽວກັບຮູບດາວທຽມຫຼັງຈາກເປີດແລະສະແດງມັນ. ຂໍ້ມູນນີ້ຊ່ວຍພວກເຮົາໃນການເຂົ້າໃຈຄຸນນະພາບຂອງຮູບພາບແລະສະຫນອງສະພາບການສໍາລັບການສືບສວນໃນອະນາຄົດ.
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)
ການນໍາໃຊ້ຄຸນລັກສະນະຄວາມກວ້າງແລະຄວາມສູງຂອງວັດຖຸ satellite_image, ພວກເຮົາສະກັດຄວາມກວ້າງແລະຄວາມສູງຂອງຮູບພາບ. ຄຸນສົມບັດ crs ຖືກນໍາໃຊ້ເພື່ອດຶງຂໍ້ມູນລະບົບການອ້າງອີງການປະສານງານ (CRS).
CRS ໃຫ້ຂໍ້ມູນກ່ຽວກັບລະບົບການອ້າງອິງທາງກວ້າງຂອງຮູບພາບ, ເຮັດໃຫ້ພວກເຮົາສາມາດຈັບຄູ່ພິກັດຮູບພາບກັບສະຖານທີ່ທີ່ແທ້ຈິງໃນໂລກ.
ສຸດທ້າຍ, ພວກເຮົາໃຊ້ຄຸນລັກສະນະການນັບຂອງວັດຖຸ satellite_image ເພື່ອຄິດໄລ່ຈໍານວນແຖບໃນຮູບພາບ. ຂໍ້ມູນນີ້ແມ່ນສໍາຄັນສໍາລັບການວິເຄາະຕໍ່ມາເພາະວ່າມັນອະນຸຍາດໃຫ້ພວກເຮົາໄດ້ຮັບຄ່າ pixels ລວງສໍາລັບແຕ່ລະແຖບໃນ array ຮູບ.
3. ການຄິດໄລ່ສະຖິຕິແຖບ
ພວກເຮົາຄິດໄລ່ສະຖິຕິສໍາລັບແຕ່ລະແຖບໃນ array ຮູບໃນສ່ວນນີ້. loop ຊ້ຳໆໃນທົ່ວແຕ່ລະແຖບ, ແລະຟັງຊັນ 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], ພວກເຮົາສະກັດຄ່າ pixels ລວງຈາກ array ຮູບພາບສໍາລັບແຕ່ລະແຖບ.
ຈາກນັ້ນ, ສໍາລັບແຖບປັດຈຸບັນ, ຟັງຊັນ np.min(), np.max(), np.mean(), ແລະ np.std() ຖືກນໍາໃຊ້ເພື່ອກໍານົດຄ່າຕໍາ່ສຸດທີ່, ສູງສຸດ, ຄ່າສະເລ່ຍ, ແລະມາດຕະຖານ deviation ຂອງ pixels ລວງ. ຄຸນຄ່າ.
ຂໍ້ມູນການຄິດໄລ່ສໍາລັບແຕ່ລະແຖບຈະຖືກບັນທຶກໄວ້ໃນວັດຈະນານຸກົມທີ່ມີກະແຈເຊັ່ນ 'Band,' 'Min,' 'Max,' 'Mean,' ແລະ 'Std. ວັດຈະນານຸກົມແຕ່ລະອັນຖືກໃສ່ເຂົ້າກັບລາຍຊື່ສະຖິຕິແຖບ. ສຸດທ້າຍ, ຂໍ້ມູນຂອງແຕ່ລະແຖບຈະຖືກພິມໃສ່ console.
4. NDVI (Normalized Difference Vegetation Index) ການຄິດໄລ່
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 ທີ່ສະແດງເຖິງດັດຊະນີພືດສໍາລັບແຕ່ລະ pixels ໃນຮູບ.
ຫຼັງຈາກນັ້ນ, ພວກເຮົາເບິ່ງ NDVI ໂດຍການສ້າງຕົວເລກໃຫມ່ແລະສະແດງ NDVI array ໂດຍໃຊ້ imshow(). ວິທີການ colorbar() ເພີ່ມແຖບສີໃສ່ດິນຕອນ, ໃຫ້ຄ່າ NDVI ເປັນການອ້າງອີງທາງສາຍຕາ.
ເພື່ອເນັ້ນໃສ່ຈໍສະແດງຜົນ NDVI ທັງໝົດ, ພວກເຮົາຍັງລະບຸຄໍາບັນຍາຍສໍາລັບຕອນນັ້ນ ແລະເອົາປ້າຍແກນທີ່ມີແກນ ('ປິດ'). ສຸດທ້າຍ, ດິນຕອນຖືກສະແດງດ້ວຍ plt.show().
ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຖືກຂຽນໃສ່ console ຖ້າຮູບພາບຂາດແຖບທີ່ຕ້ອງການສໍາລັບການຄິດໄລ່ NDVI (ເຊັ່ນ: ຫນ້ອຍກວ່າສີ່ແຖບ).
5. ການນຳເອົາພາບຖ່າຍດາວທຽມເຂົ້າມາໃກ້
ມັນເປັນການປະຕິບັດທີ່ດີທີ່ສຸດທີ່ຈະໃຊ້ຟັງຊັນ close() ເພື່ອປິດໄຟລ໌ຮູບດາວທຽມຫຼັງຈາກດໍາເນີນການວິເຄາະແລະການເບິ່ງ. ນີ້ຈະປົດປ່ອຍຊັບພະຍາກອນລະບົບໃດໆທີ່ເຊື່ອມຕໍ່ກັບໄຟລ໌ຮູບພາບ.
satellite_image.close()
ນີ້ແມ່ນການແກ້ໄຂຂອງຂ້ອຍ:
That's it!
ຫມາຍເຫດສຸດທ້າຍ
ບົດບາດຂອງ Python ໃນການຊ່ວຍໃນການສຶກສາຊຸດຂໍ້ມູນຂະໜາດໃຫຍ່ເຫຼົ່ານີ້ແມ່ນມີຄວາມສຳຄັນຫຼາຍຂຶ້ນຍ້ອນວ່າການມີ ແລະຄວາມລະອຽດຂອງພາບດາວທຽມເພີ່ມຂຶ້ນ.
ຄວາມສາມາດໃນການນໍາໃຊ້ Python ເພື່ອເຂົ້າເຖິງ, ປະມວນຜົນ, ວິເຄາະ, ແລະສະແດງຮູບພາບດາວທຽມສະເຫນີເສັ້ນທາງສໍາລັບຄໍາຮ້ອງສະຫມັກທີ່ສ້າງສັນແລະຄວາມເຂົ້າໃຈທີ່ອາດຈະຂັບລົດການປ່ຽນແປງທີ່ດີແລະຄວາມຮູ້ທີ່ຍິ່ງໃຫຍ່ຂອງໂລກຂອງພວກເຮົາ.
ຢ່າລືມສຳຫຼວດຊັບພະຍາກອນ, ບົດສອນ ແລະ ຫ້ອງສະໝຸດຈຳນວນຫຼວງຫຼາຍທີ່ມີຢູ່ເພື່ອເພີ່ມຄວາມຮູ້ ແລະ ຄວາມສາມາດຂອງທ່ານ ໃນຂະນະທີ່ທ່ານສືບຕໍ່ການຜະຈົນໄພຂອງທ່ານໃນການວິເຄາະຮູບພາບດາວທຽມໂດຍໃຊ້ Python.
ສືບຕໍ່ມີຄວາມສົນໃຈ, ຄົ້ນຫາ, ແລະນໍາໃຊ້ຄວາມສາມາດຂອງ Python ເພື່ອຄົ້ນພົບຄວາມລຶກລັບທີ່ຝັງຢູ່ໃນຮູບດາວທຽມ.
ອອກຈາກ Reply ເປັນ