مرحبًا، تحدثنا في المدونة السابقة عن كيفية إجراء تحليل البيانات النقطية باستخدام فهارس h3 وpostgresql لنطاق نقطي واحد. سنتحدث في هذه المدونة عن كيفية معالجة البيانات النقطية متعددة النطاقات وإنشاء المؤشرات بسهولة. سوف نستخدم صورة الحارس-2 وننشئ مؤشر الغطاء النباتي للفرق (NDVI) من خلايا h3 المعالجة ونتصور النتائج
نقوم بتنزيل بيانات الحارس 2 من https://apps.sentinel-hub.com/eo-browser/ في بوخارا، منطقة نيبال، فقط للتأكد من وجود البحيرة في شبكة الصور بحيث يكون من السهل لنا للتحقق من صحة نتيجة NDVI
لتحميل الصورة الحارسة مع جميع النطاقات :
يمكنك أيضًا تنزيل المؤشرات التي تم إنشاؤها مسبقًا مثل NDVI أو تباين الألوان الزائفة فقط أو نطاقات محددة أيهما يناسب احتياجاتك. نقوم بتنزيل جميع النطاقات لأننا نريد إجراء المعالجة بأنفسنا
نحصل على جميع النطاقات بشكل منفصل عن الحارس حيث قمنا بتنزيل التنسيق الخام
يمكن القيام بذلك من خلال أدوات نظم المعلومات الجغرافية أو gdal
نحتاج إلى إعادة تسمية الملف الذي تم تنزيله إلى 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
gdalwarp -overwrite -dstnodata 0 "$input_file" "${output_file}_nodata.tif"
gdal_translate -of COG "$input_file" "$output_file"
أنا أستخدم البرنامج النصي bash المتوفر في cog2h3 repo لأتمتة تلك
sudo bash pre.sh sentinel2_composite.tif
الآن أخيرًا بعد أن انتهينا من البرنامج النصي للمعالجة المسبقة، فلننتقل إلى الأمام لحساب خلايا h3 لكل نطاق في صورة الترس المركبة
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، فلنقم ببعض التحليلات
select * from sentinel
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 قادر على التعامل مع الاستعلامات المعقدة وربط الجدول.
لنتصور ونتحقق مما إذا كانت المؤشرات المحسوبة صحيحة
create table ndvi_sentinel as( select h3_ix , (band8-band4)/(band8 band4) as ndvi from public.sentinel )
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);
كما نعلم فإن القيمة بين -1.0 إلى 0.1 يجب أن تمثل المياه العميقة أو السحب الكثيفة
لنرى ما إذا كان هذا صحيحًا (جعل الفئة الأولى شفافة لرؤية الصورة الأساسية)
نظرًا لوجود سحب حول البحيرة، فإن الحقول القريبة مغطاة بالسحابة وهذا أمر منطقي
شكرا لقرائتكم! نراكم في المدونة القادمة
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3