> ## Content Index
> Fetch the complete content index at: https://arabroot.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# رسم الخرائط بالطائرات المسيرة مع OpenDroneMap
- URL: https://arabroot.io/articles/رسم-الخرائط-بالطائرات-المسيرة-مع-opendronemap/
- Published: 2026-10-12T16:00:00.000Z
- Updated: 2026-10-12T07:47:08.000Z
- Description: كيف تتحول عشرات الصور الجوية إلى خريطة مصححة ونموذج ارتفاعات على سيرفرك، وما الذي يحدد دقتها قبل أن تقلع الطائرة.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, مجالات متخصصة, الاستضافة الذاتية

في [مقال كيف تعمل الخرائط الرقمية](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A%D8%A9/) رأينا الإحداثيات والمربعات Tiles، وفي [مقال خرائطك على سيرفرك](https://arabroot.io/articles/%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7%D9%83-%D8%B9%D9%84%D9%89-%D8%B3%D9%8A%D8%B1%D9%81%D8%B1%D9%83-%D9%85%D8%B9-openstreetmap-%D9%88-maplibre/) عرضنا خريطة OpenStreetMap من سيرفرنا، وفي [مقال سيارات المسح](https://arabroot.io/articles/%D8%B3%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D8%B3%D8%AD-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%AC%D9%85%D8%B9-%D9%88%D8%A7%D9%8A-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%AA%D8%AD%D9%85%D9%84/) رأينا كيف تجمع الشركات صور الشوارع. ولكن كل ذلك يعتمد على بيانات جمعها غيرك، وصور الأقمار الصناعية المتاحة قد تكون قديمة أو بدقة لا ترى فيها حفرة في الطريق أو تشققاً في سقف. وهنا يأتي دور الطائرة المسيرة: تطير فوق المكان الذي تريده اليوم، وتلتقط عشرات الصور، ثم يحولها برنامج على سيرفرك إلى خريطة دقيقة ونموذج ارتفاعات وسحابة نقاط ثلاثية الأبعاد. وفي هذا المقال سوف نقوم بذلك على بيانات حقيقية مفتوحة، ونقيس كم تأخذ المعالجة على جهاز عادي.

وسوف نناقش في هذا المقال ما يلي:

- المسح التصويري Photogrammetry: كيف تصبح الصور المسطحة شكلاً ثلاثي الأبعاد.
- التداخل Overlap وحجم البكسل على الأرض GSD ونقاط التحكم الأرضية GCP، ولماذا تحدد دقة الخريطة قبل أن تقلع الطائرة.
- المخرجات: الصورة المصححة Orthophoto، ونموذج السطح DSM، ونموذج الأرض DTM، وسحابة النقاط Point Cloud.
- OpenDroneMap وWebODM ورخصتهما، والانفصال الأخير بينهما.
- تجربة عملية على 77 صورة مفتوحة الرخصة، بالوقت الحقيقي والمخرجات الحقيقية، ثم نحذف ثلثي الصور لنرى ماذا يحدث.
- مؤشر الغطاء النباتي NDVI والفحص، وما تحتاجه لهما.

## كيف تصبح الصور خريطة؟

الفكرة نفسها التي تجعلك ترى العمق بعينين: كل نقطة في المكان تظهر في صورتين من موقعين مختلفين بإزاحة بسيطة، ومن الإزاحة نحسب بعدها. والبرنامج يفعل ذلك على نطاق واسع، فيبحث في كل صورة عن آلاف النقاط المميزة Features، مثل زاوية سقف أو حجر، ثم يطابق النقطة نفسها بين الصور، ومن هذه المطابقات يحسب في الوقت نفسه موقع الكاميرا واتجاهها لحظة كل صورة وموقع كل نقطة في الفراغ، وهذا يسمى البنية من الحركة Structure from Motion (واختصاراً SfM). بعد ذلك يكثف النقاط إلى سحابة نقاط كثيفة، ويبني منها سطحاً، ويلون السطح من الصور، ثم يسقطه من الأعلى ليعطيك الخريطة. والصورة التالية تبين المراحل:

![خمس بطاقات من اليمين: Photos صور معها إحداثيات GPS برسم كاميرا، ثم SfM مطابقة النقاط ومواقع الكاميرا برسم خطوط من نقاط إلى كاميرا، ثم Point cloud ملايين النقاط ثلاثية الأبعاد برسم نقاط ملونة، ثم DSM / DTM نماذج الارتفاع بخط برتقالي فوق مبنى وشجرة وخط أخضر متقطع للأرض، ثم Orthophoto خريطة مصححة بمقياس ثابت](https://arabroot.io/content/images/2026/10/drone-mapping-02-pipeline.webp)

المراحل التي تمر بها الصور في OpenDroneMap حتى تصبح خريطة

وقد يتساءل البعض: لماذا لا نلصق الصور جنباً إلى جنب مثل صورة بانورامية ونكتفي بذلك؟ والإجابة أن الصورة من الأعلى ليست خريطة، فالمبنى العالي يظهر مائلاً إلى الخارج كلما ابتعد عن مركز الصورة، والأرض المرتفعة تبدو أقرب وأكبر من المنخفضة، وبالتالي المسافة في الصورة لا تساوي المسافة على الأرض. أما الصورة المصححة Orthophoto فهي صورة أزيلت منها هذه التشوهات بمعرفة شكل السطح، فيصبح لها مقياس ثابت في كل مكان، وتستطيع أن تقيس عليها المسافات والمساحات، وتضعها طبقة فوق خريطة كما في [طبقات الخريطة](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A%D8%A9/#layers).

## التداخل وحجم البكسل على الأرض

كل نقطة يجب أن تظهر في عدة صور حتى يستطيع البرنامج أن يحسب مكانها، لذلك تطير الطائرة في خطوط متوازية وتلتقط الصور بحيث تشترك كل صورة مع التي بعدها ومع الصورة المجاورة في الخط التالي بجزء كبير، وهذا الجزء يسمى التداخل Overlap. وتوصي [صفحة نصائح الطيران](https://docs.opendronemap.org/flying/?ref=arabroot.io) في OpenDroneMap للخرائط والنماذج ثنائية الأبعاد بتداخل بين 70 و80 بالمئة مع ميل خفيف للكاميرا من 5 إلى 10 درجات عن الوضع العمودي، وبقرابة 80 إلى 83 بالمئة للمباني والنباتات المعقدة.

أما حجم البكسل على الأرض Ground Sampling Distance (واختصاراً GSD) فهو المسافة على الأرض التي يغطيها بكسل واحد من الصورة، فإذا كان GSD يساوي 2 سم فأصغر شيء تستطيع أن تميزه في الخريطة في حدود بضعة سنتيمترات. وهو يتحدد بالكاميرا والارتفاع، فكلما ارتفعت الطائرة غطت الصورة مساحة أكبر وكبر GSD وقلت التفاصيل، وتقول [صفحة الدقة](https://docs.opendronemap.org/map-accuracy/?ref=arabroot.io) في OpenDroneMap إن الارتفاع الأعلى يعني بصمة صورة أكبر وGSD أكبر ودقة أقل. والصورة التالية تبين الفكرتين:

![على اليسار ثلاث طائرات على خط طيران على ارتفاع H، تحت كل منها مثلث ملون يمثل ما تراه الكاميرا على الأرض، والمثلثات تتقاطع في جزء مكتوب تحته overlap، وعلى اليمين لوحة GSD = ground size of one pixel فيها شبكة بكسلات وبكسل برتقالي بسهم إلى مربع كبير مكتوب عليه 2 × 2 cm](https://arabroot.io/content/images/2026/10/drone-mapping-01-overlap-gsd.webp)

التداخل هو الجزء المشترك بين الصور، وGSD هو حجم البكسل الواحد على الأرض

## الدقة النسبية والمطلقة، ونقاط التحكم الأرضية

هناك نوعان من الدقة يجب أن تفرق بينهما، وتعرفهما [صفحة الدقة](https://docs.opendronemap.org/map-accuracy/?ref=arabroot.io): الدقة النسبية Relative Accuracy وهي مدى تطابق المسافات بين النقاط في الخريطة مع المسافات الحقيقية، والدقة المطلقة Absolute Accuracy وهي مدى تطابق موقع الخريطة كلها مع موقعها الحقيقي على الأرض. وقد تكون الخريطة دقيقة في الشكل والمقاسات ولكنها مزاحة عدة أمتار عن مكانها. وتقول الصفحة نفسها إن الدقة النسبية المتوقعة من 1 إلى 3 أضعاف متوسط GSD، أما المطلقة فتعتمد على GPS الطائرة، والأفقية في GPS العادي عادة بين 2 و6 أمتار والرأسية من 3 إلى 4 أضعافها، ومع نقاط التحكم الأرضية يمكن أن تتحسن إلى 2.5 ضعف GSD أفقياً و4 أضعافه رأسياً.

ونقطة التحكم الأرضية Ground Control Point (واختصاراً GCP) هي بحسب [توثيق OpenDroneMap](https://docs.opendronemap.org/gcp/?ref=arabroot.io) موقع مقاس على الأرض، عادة بجهاز GPS عالي الدقة، تضعه على علامة ظاهرة في الصور، فيستخدمها البرنامج لتصحيح التشوه وربط الخريطة بنظام إحداثيات معروف. ويوصي التوثيق بأن تكون 5 نقاط على الأقل لأغلب المشاريع، و8 إلى 10 للمشاريع الكبيرة، موزعة أفقياً وبين المرتفع والمنخفض، وبحيث تظهر كل نقطة في 5 صور على الأقل. ومتى تحتاجها؟ تقول الصفحة إن متابعة تقدم مشروع بناء أو قياس مساحة حريق لا تحتاج GCP لأن الموقع المطلق لا يغير القرار، أما مطابقة المشروع للمخططات أو مسح حدود الأراضي فتحتاج دقة مطلقة عالية. وأجهزة GNSS بتصحيح RTK التي شرحناها في [مقال سيارات المسح](https://arabroot.io/articles/%D8%B3%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D8%B3%D8%AD-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%AC%D9%85%D8%B9-%D9%88%D8%A7%D9%8A-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%AA%D8%AD%D9%85%D9%84/#positioning) هي ما يقيس به المساحون هذه النقاط.

## المخرجات: Orthophoto وDSM وDTM وسحابة النقاط

- **الصورة المصححة Orthophoto:** ملف GeoTIFF، أي صورة معها إحداثياتها، تفتحه في QGIS أو تحوله إلى مربعات لخريطة ويب.
- **سحابة النقاط Point Cloud:** ملايين النقاط لكل منها موقع ولون، بصيغة LAZ أو PLY، ومنها تقيس الأحجام مثل كومة رمل أو حفرة.
- **النموذج ثلاثي الأبعاد Textured Model:** سطح ملون من الصور بصيغة OBJ.
- **نموذج السطح DSM ونموذج الأرض DTM:** صورتان كل بكسل فيهما ارتفاع، والفرق بينهما في الصورة التالية.

![مقطع جانبي لأرض رملية عليها مبنى وشجرتان وسيارة، وخط برتقالي يمر فوق سطح المبنى وقمم الأشجار والسيارة مكتوب عليه DSM سطح كل شيء، وخط أخضر متقطع يمر على الأرض فقط مكتوب عليه DTM الأرض وحدها بعد إزالة ما فوقها](https://arabroot.io/content/images/2026/10/drone-mapping-03-dsm-dtm.webp)

DSM يتبع قمم كل شيء، وDTM يتبع الأرض وحدها

وبحسب [صفحة المخرجات](https://docs.opendronemap.org/outputs/?ref=arabroot.io) فإن DSM هو نموذج «قمم كل شيء» وDTM هو «الأرض»، ولا ينتجهما ODM إلا إذا طلبتهما بالخيارين `--dsm` و`--dtm`. ولاحظ أن DTM يحتاج أن يعرف البرنامج أي النقاط أرض وأيها مبان وأشجار، ولذلك يشغل ODM تصنيف النقاط تلقائياً عند طلب DTM، كما سوف ترى في أول سطر من مخرج التجربة.

## OpenDroneMap وWebODM: من هو من؟

OpenDroneMap (واختصاراً ODM) برنامج سطر أوامر مفتوح المصدر يأخذ مجلد صور ويخرج كل ما سبق، ورخصته بحسب [مستودعه](https://github.com/OpenDroneMap/ODM?ref=arabroot.io) هي AGPL-3.0، وآخر إصدار وقت الكتابة هو v3.6.2 الصادر في أغسطس 2026، ويوزع كـ Docker Image باسم `opendronemap/odm`. أما WebODM فهو واجهة ويب لإدارة المشاريع ورفع الصور وعرض النتائج، وكان لسنوات جزءاً من مشروع OpenDroneMap، ولكن في 6 أبريل 2026 أعلن مطوره في [إعلان الانفصال](https://webodm.org/blog/announcement/?ref=arabroot.io) أن WebODM انفصل رسمياً عن OpenDroneMap، وانتقل مستودعه إلى [منظمة WebODM](https://github.com/WebODM/WebODM?ref=arabroot.io) برخصة AGPL-3.0، ويقول ملف README فيه إنه لا يتبع OpenDroneMap ولا يستخدم ODM للمعالجة، وإنما ODX وهو فرع Fork من ODM. وبالتالي إذا قرأت دليلاً قديماً يقول إن WebODM هو واجهة ODM فاعلم أن هذا تغير، وفي التجربة نستخدم ODM مباشرة من سطر الأوامر، لأنه الأداة نفسها التي تعالج الصور، والنتائج تفتح في أي برنامج GIS.

## التجربة العملية: 77 صورة تصبح خريطة

سوف نستخدم مجموعة صور [odm\_data\_aukerman](https://github.com/OpenDroneMap/odm%5Fdata%5Faukerman?ref=arabroot.io) التي ينشرها مشروع OpenDroneMap، وهي 77 صورة جوية لحديقة عامة في ولاية أوهايو الأمريكية، ورخصتها CC0 1.0، أي أنها في الملك العام وتستطيع استخدامها دون شروط، وتاريخ التقاطها بحسب تقرير ODM هو 29 يونيو 2016\. والجهاز الذي نعالج عليه حاسوب عادي فيه Docker Desktop على Windows، أعطيناه 8 أنوية و31 جيجابايت ذاكرة، وحددنا للمعالجة 6 أنوية بالخيار `--max-concurrency`، والصور في مجلد على قرص Windows نفسه.

### تشغيل المعالجة

الأوامر التالية تنزل الصور وتشغل ODM 3.6.2 عليها مع طلب DSM وDTM:

```bash
mkdir -p datasets/aukerman
curl -L -o aukerman.zip https://github.com/OpenDroneMap/odm_data_aukerman/archive/refs/heads/master.zip
unzip -q aukerman.zip && mv odm_data_aukerman-master/images datasets/aukerman/
ls datasets/aukerman/images | wc -l

docker run -d --name lab-drone-odm -v "$PWD/datasets:/datasets" opendronemap/odm:3.6.2 \
  --project-path /datasets aukerman --dsm --dtm --max-concurrency 6
docker logs -f lab-drone-odm
```

والمخرج سوف يكون كما يلي (مختصراً على الأسطر المهمة):

```text
77
[INFO]    DTM is turned on, automatically turning on point cloud classification
[INFO]    Initializing ODM 3.6.2 - Sun Oct 11 21:05:30  2026
...
[INFO]    Running opensfm stage
[INFO]    Finished opensfm stage
[INFO]    Running openmvs stage
[INFO]    Finished openmvs stage
...
[INFO]    Running odm_orthophoto stage
[INFO]    Finished odm_orthophoto stage
[INFO]    Running odm_report stage
[INFO]    Finished odm_report stage
[INFO]    ODM app finished - Sun Oct 11 23:53:10  2026
```

في المخرج أعلاه لاحظ التالي:

- السطر الأول بعد عدد الصور يؤكد ما قلناه عن DTM: طلبه شغل تصنيف النقاط تلقائياً.
- المعالجة كلها أخذت ساعتين و47 دقيقة على هذا الجهاز، وODM يكتب زمن كل مرحلة في ملف `benchmark.txt` داخل مجلد المشروع.

```bash
cat datasets/aukerman/benchmark.txt
```

```text
dataset runtime: 198.456355 seconds
split runtime: 0.037921 seconds
merge runtime: 9.4e-05 seconds
opensfm runtime: 3477.658431 seconds
openmvs runtime: 4652.788321 seconds
odm_filterpoints runtime: 60.877544 seconds
odm_meshing runtime: 653.081567 seconds
mvs_texturing runtime: 798.172206 seconds
odm_georeferencing runtime: 89.186904 seconds
odm_dem runtime: 77.478732 seconds
odm_orthophoto runtime: 23.033071 seconds
odm_report runtime: 29.122196 seconds
odm_postprocess runtime: 0.000115 seconds
```

ولاحظ أن مرحلتين فقط أخذتا قرابة 80 بالمئة من الوقت: OpenSfM، وهي مطابقة النقاط وحساب مواقع الكاميرا، بنحو 58 دقيقة، وOpenMVS، وهي تكثيف سحابة النقاط من خرائط العمق، بنحو 78 دقيقة. وجزء من هذا البطء سببه الجهاز نفسه، فالبيانات في مجلد على قرص Windows يصل إليه Docker عبر طبقة مشاركة الملفات، والمعالجة كتبت قرابة 7.9 جيجابايت في مجلد المشروع، لذلك على سيرفر Linux بقرص محلي سريع سوف يكون الوقت أقل، والأرقام هنا للتوضيح وليست مقياس أداء.

### ماذا خرج من المعالجة؟

ODM يكتب ملخصاً في `odm_report/stats.json` وتقريراً بصيغة PDF، وهذه أهم القيم من الملف كما قرأناها منه:

```text
reconstruction_statistics: initial_shots_count 77, reconstructed_shots_count 77,
                           reconstructed_points_count 58022, components 1, has_gcp false
processing_statistics:     area 46467.26, Feature Extraction 1117.5 s, Reconstruction 732.7 s
point_cloud_statistics:    count 15902818, file odm_georeferenced_model.laz (79 MB)
odm_processing_statistics: total_time_human "2.0h:47.0m:18.0s", average_gsd 2.736
```

والقيم تقول إن الصور السبع والسبعين كلها دخلت في نموذج واحد، وإن المساحة المغطاة قرابة 46 ألف متر مربع، وإن سحابة النقاط الكثيفة فيها قرابة 15.9 مليون نقطة، وإن متوسط GSD هو 2.74 سم، أي أن كل بكسل في الصور يغطي قرابة 2.7 سم على الأرض. ثم نفحص الصورة المصححة ونموذجي الارتفاع بأداة `gdalinfo` الموجودة داخل Docker Image نفسها:

```bash
docker run --rm --name lab-drone-gdal -v "$PWD/datasets:/datasets" --entrypoint bash opendronemap/odm:3.6.2 -c '
export PATH=/code/SuperBuild/install/bin:$PATH; cd /datasets/aukerman
gdalinfo odm_orthophoto/odm_orthophoto.tif | grep -E "Size is|Pixel Size|ID\[\"EPSG\",326"
for f in dsm dtm; do gdalinfo -stats odm_dem/$f.tif | grep "Minimum="; done'
```

```text
Size is 7419, 5959
    ID["EPSG",32617]]
Pixel Size = (0.049998679820509,-0.049993638835852)
  Minimum=214.961, Maximum=272.659, Mean=244.902, StdDev=8.319
  Minimum=214.939, Maximum=264.291, Mean=240.936, StdDev=5.614
```

في المخرج أعلاه لاحظ التالي:

- الصورة المصححة 7419 × 5959 بكسل، وكل بكسل فيها 5 سم وليس 2.74 سم، والسبب أن الخيار `--orthophoto-resolution` قيمته في هذا التشغيل 5 سم لكل بكسل كما في ملف `options.json` الذي كتبه ODM، فإذا أردت دقة أعلى فاطلبها بنفسك وتحمل حجم الملف ووقت المعالجة.
- الإحداثيات بنظام UTM المنطقة 17 شمالاً (EPSG:32617)، وهو الإسقاط المناسب لهذا المكان، والإسقاط نفسه شرحناه في [مقال الخرائط الرقمية](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A%D8%A9/#projection).
- السطر الأول للإحصاءات هو DSM والثاني DTM: أعلى نقطة في DSM على ارتفاع 272.7 متراً وفي DTM على 264.3 متراً، والفرق قمم الأشجار التي أزالها DTM، ومتوسط DSM أعلى من متوسط DTM بقرابة 4 أمتار للسبب نفسه.

والصورة التالية هي الصورة المصححة نفسها مصغرة، والمناطق السوداء خارج حدود ما صورته الطائرة:

![صورة جوية مصححة لحديقة عامة: موقف سيارات ومبنى صغير وممر أبيض متعرج في اليسار، وبركة ماء في الأعلى، ومساحة عشب واسعة فيها ممرات مشي متعرجة، وأشجار كثيفة على الأطراف، وطريق في الأسفل، والحواف خارج منطقة التصوير سوداء](https://arabroot.io/content/images/2026/10/drone-mapping-04-orthophoto.webp)

الصورة المصححة Orthophoto الناتجة من 77 صورة بدقة 5 سم لكل بكسل قبل التصغير، والصور الأصلية من odm\_data\_aukerman برخصة CC0

وحتى ترى الفرق بين DSM وDTM على البيانات نفسها رسمنا التظليل Hillshade لكل منهما بأداة `gdaldem hillshade`:

![صورتان رماديتان متجاورتان للمكان نفسه: في اليمين DSM تظهر فيه الأشجار كتلاً بارزة حول الأطراف والمبنى وبعض الأشجار المنفردة في الوسط، وفي اليسار DTM اختفت فيه الأشجار والمبنى وبقيت الأرض والممرات، وتظهر في مكان الغابة الكثيفة خطوط وزوايا مستقيمة من التعبئة](https://arabroot.io/content/images/2026/10/drone-mapping-05-dsm-dtm-lab.webp)

في اليمين DSM بالأشجار والمبنى، وفي اليسار DTM للأرض وحدها، ولاحظ الخطوط المستقيمة تحت الغابة الكثيفة

ولاحظ في DTM الخطوط والزوايا المستقيمة في مكان الغابة الكثيفة، والسبب أن الكاميرا لا ترى الأرض تحت الأشجار الكثيفة أصلاً، فلا توجد نقاط أرض هناك، فيملأ البرنامج الفراغ من الأطراف، وبالتالي الأرض تحت الغابة في DTM تقدير وليست قياساً. وهذا من الفروق بين التصوير والليزر LiDAR الذي شرحناه في [مقال سيارات المسح](https://arabroot.io/articles/%D8%B3%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D8%B3%D8%AD-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%AC%D9%85%D8%B9-%D9%88%D8%A7%D9%8A-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%AA%D8%AD%D9%85%D9%84/#lidar).

### نكسر الإعداد: ثلث الصور فقط

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

```bash
mkdir -p datasets/aukerman-third/images
ls datasets/aukerman/images | awk 'NR % 3 == 1' | while read f; do cp "datasets/aukerman/images/$f" datasets/aukerman-third/images/; done
ls datasets/aukerman-third/images | wc -l

docker run -d --name lab-drone-odm-third -v "$PWD/datasets:/datasets" opendronemap/odm:3.6.2 \
  --project-path /datasets aukerman-third --dsm --dtm --max-concurrency 4
```

والمخرج من عدد الصور ثم من تقرير الجودة `odm_report/report.pdf` للتشغيلين سوف يكون كما يلي:

```text
26

                                   77 photos           26 photos
Reconstructed Images               77 over 77 (100%)   26 over 26 (100%)
Reconstructed Points (Sparse)      58022               19066
Reconstructed Points (Dense)       15,902,818          4,279,766
Average GSD                        2.7 cm              2.7 cm
GPS errors                         0.85 meters         1.05 meters
Area Covered                       0.046467 km²        0.046010 km²
```

وهنا نتيجة لم نتوقعها: ODM لم يفشل، فكل الصور الست والعشرين دخلت في النموذج، والمساحة المغطاة تقريباً نفسها. والسبب أن هذه البيانات صورت بتداخل أعلى بكثير مما تحتاجه الخريطة، فبقي بعد حذف الثلثين تداخل كاف لمطابقة النقاط. ولكن لاحظ الثمن: سحابة النقاط الكثيفة نقصت من 15.9 مليون نقطة إلى 4.3 مليون، أي بنحو 73 بالمئة، لأن كل نقطة على الأرض أصبحت تظهر في صور أقل، والنموذج ثلاثي الأبعاد والقياسات منه تعتمد على هذه الكثافة. والصورة التالية تبين المنطقة نفسها من الصورتين المصححتين بالدقة الكاملة:

![صورتان جويتان متجاورتان لمنطقة واحدة فيها مبنى بسقف أحمر وممرات بيضاء وعشب وأشجار وبركة في الأعلى، في اليمين من 77 صورة وفي اليسار من 26 صورة، والفرق بينهما في الحواف وأشكال الأشجار والممر المتعرج وموضع بعض التفاصيل](https://arabroot.io/content/images/2026/10/drone-mapping-06-third-compare.webp)

المنطقة نفسها بدقة 5 سم: في اليمين من 77 صورة، وفي اليسار من 26 صورة، والفرق في حواف الأشجار والممرات أكثر منه في الصورة كلها

والدرس من ذلك أن الصورة المصححة تتحمل نقص التداخل أكثر من النموذج ثلاثي الأبعاد، ولكنك لا تعرف مقدار التداخل الكافي لمكانك إلا بعد المعالجة، وعندها تكون الطائرة قد عادت والطيار قد غادر الموقع، لذلك خطط بالتداخل الذي توصي به OpenDroneMap ولا تنقص منه. ولاحظ أننا شغلنا هذه المعالجة بأربعة أنوية وبينما كانت تجربة أخرى تعمل على الجهاز نفسه، فأخذت ساعة و45 دقيقة بحسب التقرير، وهذا الرقم لا يصلح للمقارنة مع التشغيل الأول.

### تنظيف المختبر

```bash
docker rm lab-drone-odm lab-drone-odm-third
rm -rf datasets
```

الأمر الأول يحذف ال Containers التي أنشأناها بالاسم فقط، والثاني يحذف الصور والمخرجات، فانسخ ما تحتاجه منها قبله.

## مؤشر الغطاء النباتي NDVI والفحص

النبات السليم يعكس الأشعة تحت الحمراء القريبة Near Infrared بقوة ويمتص الأحمر، والنبات المريض أو الجاف يعكس أقل، ومن هنا جاء مؤشر الغطاء النباتي Normalized Difference Vegetation Index (واختصاراً NDVI)، وتعرفه [هيئة المساحة الجيولوجية الأمريكية USGS](https://www.usgs.gov/landsat-missions/landsat-normalized-difference-vegetation-index?ref=arabroot.io) بأنه يقيس اخضرار النبات ويفيد في فهم كثافته وتقييم التغير في صحته، ويحسب هكذا:

```text
NDVI = (NIR - Red) / (NIR + Red)
```

والقيمة بين سالب واحد وواحد، وكلما اقتربت من الواحد كان النبات أكثف وأصح، وتشرح [ناسا NASA](https://earthobservatory.nasa.gov/features/MeasuringVegetation?ref=arabroot.io) الفكرة نفسها من صور الأقمار الصناعية. ولاحظ أن الكاميرا العادية لا تلتقط الأشعة تحت الحمراء القريبة، فصور التجربة لا تصلح لحساب NDVI، وتحتاج كاميرا متعددة الأطياف Multispectral، ويقول [توثيق OpenDroneMap](https://docs.opendronemap.org/multispectral/?ref=arabroot.io) إنه يدعم منذ الإصدار 0.9.9 التطبيع الإشعاعي Radiometric Normalization لإنتاج صور انعكاس من هذه الكاميرات، ومنها تحسب NDVI لكل بكسل. وتطبيقه العملي أن ترى في المزرعة البقع التي ضعف فيها النبات قبل أن تراها العين، فترسل الماء أو السماد إليها وحدها.

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

## قبل أن تطير للمسح

صور المسح الجوي بيانات مساحية بنص لائحة الطيران المدني في السعودية، والتصوير والمسح يحتاجان موافقات من جهات محددة إضافة إلى تسجيل الطائرة وشهادة الطيار، وقد شرحنا ذلك بالتفصيل في [مقال أنظمة الطائرات المسيرة](https://arabroot.io/articles/%D8%A7%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%B7%D8%A7%D8%A6%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D9%8A%D8%B1%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%B3%D8%B9%D9%88%D8%AF%D9%8A%D8%A9/#privacy)، فاقرأه قبل أن تخطط لأول مسح.

## أخطاء شائعة

- **تداخل قليل لتوفير البطارية:** رأيت في التجربة أن ثلث الصور أنقص سحابة النقاط بنحو 73 بالمئة، والأفضل أن تقلل المساحة في الطيران الواحد على أن تقلل التداخل.
- **الطيران عالياً للانتهاء أسرع:** GSD يكبر مع الارتفاع، وما لم تصوره بالتفاصيل لن يخرجه البرنامج.
- **الوثوق بالموقع المطلق دون GCP:** المقاسات النسبية جيدة، ولكن الخريطة قد تكون مزاحة أمتاراً عن مكانها الحقيقي.
- **معالجة البيانات على قرص بطيء أو مجلد مشترك:** المعالجة تكتب وتقرأ عشرات الجيجابايتات، فضعها على قرص محلي سريع.
- **NDVI من كاميرا عادية:** بدون قناة الأشعة تحت الحمراء القريبة لا يوجد NDVI حقيقي.

## تدريب عملي

1. أعد تجربة الكسر بصورة من كل ست صور بدل كل ثلاث، ولاحظ في التقرير كم صورة دخلت في النموذج.
2. أعد المعالجة بالخيار `--fast-orthophoto` وقارن الوقت وشكل الصورة المصححة بالنتيجة الكاملة.
3. افتح `odm_orthophoto.tif` و`dsm.tif` في QGIS، وقس طول ملعب أو طريق في الصورة وقارنه بالخريطة الحقيقية.

## الخلاصة

- المسح التصويري يحسب شكل المكان ومواقع الكاميرا معاً من نقاط مشتركة بين الصور، لذلك التداخل شرط وليس رفاهية.
- GSD يحدد أصغر تفصيل في الخريطة، ويتحدد بالكاميرا والارتفاع قبل أن تقلع الطائرة.
- الدقة النسبية تأتي من الصور، والمطلقة تحتاج GPS دقيقاً أو نقاط تحكم أرضية.
- DSM يتبع قمم كل شيء وDTM يتبع الأرض، والفرق بينهما ارتفاع المباني والأشجار.
- ODM برخصة AGPL-3.0، وWebODM انفصل عنه في أبريل 2026 ويعالج بـ ODX.
- NDVI يحتاج كاميرا متعددة الأطياف، والكاميرا العادية لا تكفي.

[![](https://arabroot.io/content/images/2026/10/drone-basics-cover-cover.webp)دليلالطائرات المسيرة للمبتدئين: كيف تطير ومم تتكونكيف تقف الطائرة المسيرة في الهواء وتميل وتدور بتغيير سرعة محركاتها فقط، ومم تتكون، وأي نوع يناسب أي عمل.](https://arabroot.io/articles/%D8%A7%D9%84%D8%B7%D8%A7%D8%A6%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D9%8A%D8%B1%D8%A9-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%83%D9%8A%D9%81-%D8%AA%D8%B7%D9%8A%D8%B1-%D9%88%D9%85%D9%85-%D8%AA%D8%AA%D9%83%D9%88%D9%86/)[![](https://arabroot.io/content/images/2026/10/drone-rules-ksa-cover-cover.webp)دليلأنظمة الطائرات المسيرة في السعودية قبل أن تطيرما الذي تطلبه هيئة الطيران المدني قبل أن تطير بطائرة مسيرة في السعودية، من التسجيل والشهادة إلى المناطق الممنوعة والتصوير.](https://arabroot.io/articles/%D8%A7%D9%86%D8%B8%D9%85%D8%A9-%D8%A7%D9%84%D8%B7%D8%A7%D8%A6%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B3%D9%8A%D8%B1%D8%A9-%D9%81%D9%8A-%D8%A7%D9%84%D8%B3%D8%B9%D9%88%D8%AF%D9%8A%D8%A9/)[![](https://arabroot.io/content/images/2026/10/maps-basics-cover-cover.webp)دليلكيف تعمل الخرائط الرقمية؟ الإحداثيات والمربعات Tilesكيف تتحول خطوط العرض والطول إلى مربعات يرسمها المتصفح، ولماذا تبدو جرينلاند بحجم قارة، وكيف تحسب المسافة بين مدينتين بشكل صحيح.](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B9%D9%85%D9%84-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A%D8%A9/)[![](https://arabroot.io/content/images/2026/10/self-hosted-maps-cover-cover.webp)دليلخرائطك على سيرفرك مع OpenStreetMap وMapLibreكيف تعرض خريطة تفاعلية لمدينتك من سيرفرك ببيانات OpenStreetMap، بالعربية والإنجليزية ودون مفتاح API أو مزود خارجي.](https://arabroot.io/articles/%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7%D9%83-%D8%B9%D9%84%D9%89-%D8%B3%D9%8A%D8%B1%D9%81%D8%B1%D9%83-%D9%85%D8%B9-openstreetmap-%D9%88-maplibre/)[![](https://arabroot.io/content/images/2026/10/mapping-vehicles-cover-cover.webp)دليلسيارات مسح الخرائط: ماذا تجمع وأي عتاد تحمل؟ما الذي تسجله السيارات التي تجوب الشوارع بالكاميرات والليزر، وكيف تتحول صورها وقياساتها إلى عناوين وخرائط على هاتفك.](https://arabroot.io/articles/%D8%B3%D9%8A%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D8%B3%D8%AD-%D8%A7%D9%84%D8%AE%D8%B1%D8%A7%D8%A6%D8%B7-%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%AC%D9%85%D8%B9-%D9%88%D8%A7%D9%8A-%D8%B9%D8%AA%D8%A7%D8%AF-%D8%AA%D8%AD%D9%85%D9%84/)

## سجل التحديثات

- أكتوبر 2026: كتابة المقال، والتجربة على OpenDroneMap 3.6.2 (opendronemap/odm:3.6.2) مع بيانات odm\_data\_aukerman برخصة CC0 في Docker Engine 29.8.0، والمعلومات من توثيق OpenDroneMap وإعلان WebODM وصفحات USGS وNASA كما قرأناها في 11 أكتوبر 2026.