"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > معالجة البيانات النقطية متعددة النطاقات (Sentinel-with hndex وإنشاء مؤشرات

معالجة البيانات النقطية متعددة النطاقات (Sentinel-with hndex وإنشاء مؤشرات

تم النشر بتاريخ 2024-08-25
تصفح:985

مرحبًا، تحدثنا في المدونة السابقة عن كيفية إجراء تحليل البيانات النقطية باستخدام فهارس h3 وpostgresql لنطاق نقطي واحد. سنتحدث في هذه المدونة عن كيفية معالجة البيانات النقطية متعددة النطاقات وإنشاء المؤشرات بسهولة. سوف نستخدم صورة الحارس-2 وننشئ مؤشر الغطاء النباتي للفرق (NDVI) من خلايا h3 المعالجة ونتصور النتائج

تحميل بيانات الحارس 2

نقوم بتنزيل بيانات الحارس 2 من https://apps.sentinel-hub.com/eo-browser/ في بوخارا، منطقة نيبال، فقط للتأكد من وجود البحيرة في شبكة الصور بحيث يكون من السهل لنا للتحقق من صحة نتيجة NDVI

Process multiband rasters (Sentinel-with hndex and create indices

لتحميل الصورة الحارسة مع جميع النطاقات :

  • تحتاج إلى إنشاء حساب
  • ابحث عن الصورة في منطقتك، حدد الشبكة التي تغطي مجال اهتمامك
  • قم بتكبير الشبكة، وانقر على أيقونة Process multiband rasters (Sentinel-with hndex and create indices على الشريط العمودي الأيمن
  • بعد ذلك انتقل إلى علامة التبويب التحليلية وحدد جميع النطاقات بتنسيق الصورة مثل tiff 32 بت ودقة عالية وتنسيق wgs1984 وتم تحديد جميع النطاقات

Process multiband rasters (Sentinel-with hndex and create indices

يمكنك أيضًا تنزيل المؤشرات التي تم إنشاؤها مسبقًا مثل NDVI أو تباين الألوان الزائفة فقط أو نطاقات محددة أيهما يناسب احتياجاتك. نقوم بتنزيل جميع النطاقات لأننا نريد إجراء المعالجة بأنفسنا

  • انقر على تنزيل

Process multiband rasters (Sentinel-with hndex and create indices

المعالجة المسبقة

نحصل على جميع النطاقات بشكل منفصل عن الحارس حيث قمنا بتنزيل التنسيق الخام

Process multiband rasters (Sentinel-with hndex and create indices

  • لننشئ صورة مركبة :

يمكن القيام بذلك من خلال أدوات نظم المعلومات الجغرافية أو gdal

  1. استخدام gdal_merge:

نحتاج إلى إعادة تسمية الملف الذي تم تنزيله إلى band1، band2 مثل هذا لتجنب الخطوط المائلة في اسم الملف
دعونا نعالج ما يصل إلى النطاق 9 لهذا التمرين، يمكنك اختيار النطاق حسب متطلباتك

gdal_merge.py -separate -o sentinel2_composite.tif band1.tif band2.tif band3.tif band4.tif band5.tif band6.tif band7.tif band8.tif band9.tif 
  1. استخدام QGIS :
  • تحميل جميع النطاقات الفردية إلى QGIS
  • انتقل إلى البيانات النقطية > متنوع > دمج

Process multiband rasters (Sentinel-with hndex and create indices

  • أثناء الدمج، يجب التأكد من تحديد "وضع كل ملف إدخال في نطاق sep"

Process multiband rasters (Sentinel-with hndex and create indices

  • الآن قم بتصدير ملف tiff المدمج إلى ملف جغرافي خام كمركب

التدبير المنزلي

  • تأكد من أن صورتك موجودة في WGS1984 في حالتنا، الصورة موجودة بالفعل في ws1984 لذا لا حاجة للتحويل
  • تأكد من عدم وجود أي بيانات إذا كانت الإجابة بنعم، فاملأها بـ 0
  gdalwarp -overwrite -dstnodata 0 "$input_file" "${output_file}_nodata.tif"
  • أخيرًا تأكد من أن صورة الإخراج الخاصة بك موجودة في COG
  gdal_translate -of COG "$input_file" "$output_file"

أنا أستخدم البرنامج النصي bash المتوفر في cog2h3 repo لأتمتة تلك

sudo bash pre.sh sentinel2_composite.tif

عملية وإنشاء خلايا h3

الآن أخيرًا بعد أن انتهينا من البرنامج النصي للمعالجة المسبقة، فلننتقل إلى الأمام لحساب خلايا h3 لكل نطاق في صورة الترس المركبة

  • تثبيت cog2h3
  pip install cog2h3
  • قم بتصدير بيانات اعتماد قاعدة البيانات
  export DATABASE_URL="postgresql://user:password@host:port/database"
  • يجري

نحن نستخدم الدقة 10 لهذه الصورة الحارسة، ومع ذلك ستشاهد أيضًا في البرنامج النصي نفسه الذي سيطبع الدقة المثالية للبيانات النقطية الخاصة بك والتي تجعل خلية h3 أصغر من أصغر بكسل في البيانات النقطية.

  cog2h3 --cog sentinel2_composite_preprocessed.tif --table sentinel --multiband --res 10

لقد استغرقنا دقيقة واحدة لحساب النتيجة وتخزينها في postgresql

السجلات :

2024-08-24 08:39:43,233 - INFO - Starting processing
2024-08-24 08:39:43,234 - INFO - COG file already exists at sentinel2_composite_preprocessed.tif
2024-08-24 08:39:43,234 - INFO - Processing raster file: sentinel2_composite_preprocessed.tif
2024-08-24 08:39:43,864 - INFO - Determined Min fitting H3 resolution for band 1: 11
2024-08-24 08:39:43,865 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:44,037 - INFO - Resampling Done for band 1
2024-08-24 08:39:44,037 - INFO - New Native H3 resolution for band 1: 10
2024-08-24 08:39:44,738 - INFO - Calculation done for res:10 band:1
2024-08-24 08:39:44,749 - INFO - Determined Min fitting H3 resolution for band 2: 11
2024-08-24 08:39:44,749 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:44,757 - INFO - Resampling Done for band 2
2024-08-24 08:39:44,757 - INFO - New Native H3 resolution for band 2: 10
2024-08-24 08:39:45,359 - INFO - Calculation done for res:10 band:2
2024-08-24 08:39:45,366 - INFO - Determined Min fitting H3 resolution for band 3: 11
2024-08-24 08:39:45,366 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:45,374 - INFO - Resampling Done for band 3
2024-08-24 08:39:45,374 - INFO - New Native H3 resolution for band 3: 10
2024-08-24 08:39:45,986 - INFO - Calculation done for res:10 band:3
2024-08-24 08:39:45,994 - INFO - Determined Min fitting H3 resolution for band 4: 11
2024-08-24 08:39:45,994 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:46,003 - INFO - Resampling Done for band 4
2024-08-24 08:39:46,003 - INFO - New Native H3 resolution for band 4: 10
2024-08-24 08:39:46,605 - INFO - Calculation done for res:10 band:4
2024-08-24 08:39:46,612 - INFO - Determined Min fitting H3 resolution for band 5: 11
2024-08-24 08:39:46,612 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:46,619 - INFO - Resampling Done for band 5
2024-08-24 08:39:46,619 - INFO - New Native H3 resolution for band 5: 10
2024-08-24 08:39:47,223 - INFO - Calculation done for res:10 band:5
2024-08-24 08:39:47,230 - INFO - Determined Min fitting H3 resolution for band 6: 11
2024-08-24 08:39:47,230 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:47,239 - INFO - Resampling Done for band 6
2024-08-24 08:39:47,239 - INFO - New Native H3 resolution for band 6: 10
2024-08-24 08:39:47,829 - INFO - Calculation done for res:10 band:6
2024-08-24 08:39:47,837 - INFO - Determined Min fitting H3 resolution for band 7: 11
2024-08-24 08:39:47,837 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:47,845 - INFO - Resampling Done for band 7
2024-08-24 08:39:47,845 - INFO - New Native H3 resolution for band 7: 10
2024-08-24 08:39:48,445 - INFO - Calculation done for res:10 band:7
2024-08-24 08:39:48,453 - INFO - Determined Min fitting H3 resolution for band 8: 11
2024-08-24 08:39:48,453 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:48,461 - INFO - Resampling Done for band 8
2024-08-24 08:39:48,461 - INFO - New Native H3 resolution for band 8: 10
2024-08-24 08:39:49,046 - INFO - Calculation done for res:10 band:8
2024-08-24 08:39:49,054 - INFO - Determined Min fitting H3 resolution for band 9: 11
2024-08-24 08:39:49,054 - INFO - Resampling original raster to: 200.786148m
2024-08-24 08:39:49,062 - INFO - Resampling Done for band 9
2024-08-24 08:39:49,063 - INFO - New Native H3 resolution for band 9: 10
2024-08-24 08:39:49,647 - INFO - Calculation done for res:10 band:9
2024-08-24 08:39:51,435 - INFO - Converting H3 indices to hex strings
2024-08-24 08:39:51,906 - INFO - Overall raster calculation done in 8 seconds
2024-08-24 08:39:51,906 - INFO - Creating or replacing table sentinel in database
2024-08-24 08:40:03,153 - INFO - Table sentinel created or updated successfully in 11.25 seconds.
2024-08-24 08:40:03,360 - INFO - Processing completed

تحليل

بما أن لدينا الآن بياناتنا في postgresql، فلنقم ببعض التحليلات

  • تحقق من أن لدينا جميع النطاقات التي قمنا بمعالجتها (تذكر أننا قمنا بمعالجة النطاق من 1 إلى 9)
select *
from sentinel

Process multiband rasters (Sentinel-with hndex and create indices

  • حساب ndvi لكل خلية
explain analyze 
select h3_ix , (band8-band4)/(band8 band4) as ndvi
from public.sentinel

خطة الاستعلام :

QUERY PLAN                                                                                                       |
----------------------------------------------------------------------------------------------------------------- 
Seq Scan on sentinel  (cost=0.00..28475.41 rows=923509 width=16) (actual time=0.014..155.049 rows=923509 loops=1)|
Planning Time: 0.080 ms                                                                                          |
Execution Time: 183.764 ms                                                                                       |

كما ترون هنا بالنسبة لجميع الصفوف الموجودة في تلك المنطقة، فإن الحساب يكون فوريًا. ينطبق هذا على جميع المؤشرات الأخرى ويمكنك حساب ربط الفهارس المعقدة مع الجداول الأخرى باستخدام المفتاح الأساسي h3_ix واستخلاص نتيجة ذات معنى منه دون القلق لأن postgresql قادر على التعامل مع الاستعلامات المعقدة وربط الجدول.

التصور والتحقق

لنتصور ونتحقق مما إذا كانت المؤشرات المحسوبة صحيحة

  • إنشاء جدول (للتصور في QGIS)
create table ndvi_sentinel
as(
select h3_ix , (band8-band4)/(band8 band4) as ndvi
from public.sentinel )
  • لنضيف الشكل الهندسي لتصور خلايا h3 يعد هذا ضروريًا فقط للتصور في QGIS، إذا قمت بإنشاء الحد الأدنى من واجهة برمجة التطبيقات (API) بنفسك فلن تحتاج إلى ذلك حيث يمكنك إنشاء الشكل الهندسي مباشرةً من الاستعلام
ALTER TABLE ndvi_sentinel  
ADD COLUMN geometry geometry(Polygon, 4326) 
GENERATED ALWAYS AS (h3_cell_to_boundary_geometry(h3_ix)) STORED;
  • إنشاء فهرس للهندسة
create index on ndvi_sentinel(geometry);
  • قم بتوصيل قاعدة البيانات الخاصة بك في QGIS وتصور الجدول على أساس قيمة ndvi دعنا نحصل على المنطقة القريبة من بحيرة فيوا أو السحابة

Process multiband rasters (Sentinel-with hndex and create indices

كما نعلم فإن القيمة بين -1.0 إلى 0.1 يجب أن تمثل المياه العميقة أو السحب الكثيفة
لنرى ما إذا كان هذا صحيحًا (جعل الفئة الأولى شفافة لرؤية الصورة الأساسية)

  • فحص السحب :

Process multiband rasters (Sentinel-with hndex and create indices

  • تحقق من البحيرة

Process multiband rasters (Sentinel-with hndex and create indices
نظرًا لوجود سحب حول البحيرة، فإن الحقول القريبة مغطاة بالسحابة وهذا أمر منطقي

Process multiband rasters (Sentinel-with hndex and create indices

شكرا لقرائتكم! نراكم في المدونة القادمة

بيان الافراج تتم إعادة طباعة هذه المقالة على: https://dev.to/krschap/process-multiband-sentinel-sentinel-2-with-h3-dex-and-create-bem-hither- إذا كان هناك أي انتهاك ، يرجى الاتصال بـ study_golang @163.com حذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3