تقدم هذه الوثيقة نظرة عامة موجزة عن العملية، بالإضافة إلى البيانات والأدوات المطلوبة لإنشاء خرائط الكثافة باستخدام "صندوق أدوات Marinetraffic AIS". البيانات المستخدمة في هذه النظرة العامة هي بيانات تاريخية لنظام التعرف التلقائي (AIS).
نوصي بشدة بتشغيل هذه الوحدة في بيئة افتراضية لضمان توافق الحزم.
git clone https://github.com/marinetraffic/mt-ais-toolbox.git;
cd mt-ais-toolbox/;
python3 -m venv .venv;
source .venv/bin/activate;
pip install -e .;
export USE_PYGEOS=1;
تثبيت الحزمة في البيئة الافتراضية
pip install -e .
لإلغاء تنشيط استخدام البيئة الافتراضية:
deactivate
يمكن أيضًا تثبيت الحزمة مباشرةً من gitub repo الخاص بنا باستخدام الأمر التالي، ولكن يلزم إجراء تغييرات إضافية في المسارات لتشغيل الأمثلة التالية.
pip install git+https://github.com/marinetraffic/mt-ais-toolbox.git;
تحقق أيضًا من قسم التكوين أدناه
ملاحظة: يوصى بتعيين متغير النظام التالي لتسريع الروابط المكانية لـ pygeos:
export USE_PYGEOS=1
يعتمد صندوق الأدوات هذا على مكتبة GDAL، لعمليات التنقيط بشكل أساسي، وبالتالي فإن تثبيته في نظام التشغيل windows سيتطلب تثبيتًا فعالاً لـ GDAL عبر نظامك.
لاستخدام هذه الوحدة في نظام التشغيل Windows، يجب أن يكون لديك تثبيت GDAL فعال قبل تثبيت صندوق الأدوات هذا. الحل البديل هو تثبيت GDAL من خلال OSGeo4w (https://trac.osgeo.org/osgeo4w/) وتحديد المسارات المناسبة لاستخدام إصدار python المضمن بدلاً من ذلك. بالإضافة إلى ذلك، يجب عليك تضمين دليل bin الخاص بمجلد تثبيت osgeo في المتغير البيئي PATH الخاص بك.
تتضمن هذه الحزمة
ملف التكوين.json الذي يحدد:
التنفيذ من أجل:
تتطلب كل خطوة من خطوات نهجنا بعض المعلمات التي تشمل: مسارات ملفات الإدخال وأدلة الإخراج، والأعلام المتعلقة بالعملية التي سيتم تنفيذها، والعتبات الإضافية المطلوبة أثناء التنفيذ (على سبيل المثال، معدل الاختزال). يجب تضمين كل هذه المعلومات في ملف التكوين، ويجب تمريرها كوسيطة أثناء التنفيذ (على سبيل المثال، config/config.json).
ولتحميل رسائل AIS، ينبغي تضمين ملفات القيم المفصولة بفواصل (النسق .csv.bz2). يجب أن تحتوي هذه الملفات على الرسائل مرتبة حسب الطوابع الزمنية الخاصة بها. في حالة وجود ملفات إدخال متعددة، يجب ترتيبها أبجديًا بحيث تأتي الملفات ذات الرسائل السابقة أولاً.
دمج البيانات التي تم فك تشفيرها: سيتم دمج رسائل AIS (الثابتة والموضعية) بحيث تتضمن كل رسالة موضعية معلومات إضافية تنشأ من رسائل AIS الثابتة المقابلة. يمكن تنفيذ عملية الدمج عن طريق:
python -m mt.cleaning.ais_merge config/config.json
في حالة كانت الرسالة تقريرًا ثابتًا:
t,station,channel_code,mmsi,type,data_type,imo;shiptype;to_bow;to_stern;to_port;to_starboard;callsign;shipname;draught;destination;eta_month;eta_day;eta_hour;eta_minute
في حالة كانت الرسالة عبارة عن تقرير موضعي:
t,station,channel_code,mmsi,type,data_type,lon;lat;heading;course;speed;rot_direction;rot;navigation_status
مجموعة بيانات العينة الأصلية لسفينة واحدة.
تنظيف البيانات المدمجة: بعد دمج جميع رسائل AIS، يجب أن تمر عبر المرشحات المشار إليها في ملف التكوين. وقد يشمل ذلك: التحقق من صحة حقول الحركة، وصلاحية معرف السفينة (MMSI)، والقناع الأرضي وغيرها (انظر قسم عوامل التصفية أدناه). يتم تحديد أدلة الإدخال والإخراج والمرشحات التي سيتم تطبيقها في ملف التكوين المحدد. يمكن تنفيذ عملية التنظيف عن طريق:
python -m mt.cleaning.data_cleaning config/config.json
مجموعة البيانات النظيفة (الأخضر) لنفس السفينة. يتم تصفية الرسائل الحمراء.
تقرأ خطوة إنشاء خريطة الكثافة ملفات AIS التي تم تنظيفها وتقوم بإنشاء خرائط الكثافة فيما يتعلق بالطريقة المحددة في ملف التكوين. هناك خياران متاحان، الأول يقيس عدد السفن داخل كل خلية بينما يقوم الثاني بتجميع الوقت المستغرق داخل كل خلية لجميع السفن التي تعبرها.
python -m mt.density.export_density_maps config/config.json
شبكة جانبية بطول 1 كم تستخدم لحساب خرائط الكثافة. مواقع تنظيفها من ثلاث سفن
عملية التنقيط.
الخريطة الناتجة لطريقة time_at_cells بتنسيق tiff ذو مرجع جغرافي وخريطة ألوان كما هو منصوص عليه في التكوين.
تتضمن المرشحات التي يوفرها صندوق أدوات Marinetraffic AIS ما يلي:
يحدد ملف التكوين المحدد أي من المرشحات المذكورة أعلاه سيتم تطبيقها.
ملف تكوين صندوق أدوات Marinetraffic AIS هو ملف json يتكون من المعلمات التي تتحكم من بين أمور أخرى في مسارات الإدخال والإخراج، وضبط حساسية عملية تنظيف البيانات والتحكم في الجوانب الأخرى من عملية إنشاء الخريطة.
المعلمة | وصف | القيم الافتراضية |
---|---|---|
"مسار_ملف_الهندسة" | مسار الملف الهندسي المستخدم | في التكوين |
"مسار_الشبكات" | مسار لحفظ الشبكة | في التكوين |
"ais_path" | مسار دليل رسائل AIS المدمج | في التكوين |
"ais_cleaned_path" | مسار دليل رسائل AIS الذي تم تنظيفه | في التكوين |
"ais_decoded_path" | مسار دليل رسائل AIS المدمج | في التكوين |
"مسار_الكثافة" | مسار دليل ملفات الكثافة الناتجة | في التكوين |
"colors_files_path" | دليل ملفات الألوان لمسار ملف الكثافة (TIFF). | في التكوين |
"ais_stats_path" | مسار دليل الإحصائيات | في التكوين |
"out_crs" | رمز النظام المرجعي لإحداثيات الإخراج (CRS 3035 أو 3857 (لم يتم اختباره)) | 3035 |
"حقول_فارغة" | إذا كان صحيحًا، فسيتم إزالة الرسائل ذات الحقول الفارغة | خطأ شنيع |
"حقول_الحركة غير صالحة" | إذا كان صحيحًا، فسيتم إزالة الرسائل ذات القيم غير الصالحة في حقول COG وSOG وLON وLAT | خطأ شنيع |
"غير صالح_mmsi" | إذا كان صحيحًا، فسيتم إزالة الرسائل ذات قيم mmsi غير الصالحة (انظر أدناه) | خطأ شنيع |
"false_mmsi" | قائمة MMSIs التي سيتم استبعادها | في التكوين |
"قناع_الأرض" | إذا كان هذا صحيحا فإنه يفرض عملية إخفاء الأراضي | خطأ شنيع |
"الصندوق المحيطي" | قائمة الإحداثيات التي تشير إلى منطقة الاهتمام. الإحداثيات تكون بالتنسيق: [minLon, minLat, maxLon, maxLat]، ويجب أن تتبع نظام إسقاط الإخراج | اختياري في التكوين (مثال: [5905000، 2185000، 5910000، 2190000]) |
"الاختزال" | إذا كان هذا صحيحا فإنه يفرض عملية الاختزال | خطأ شنيع |
"معدل التخفيض" | معدل الاختزال (بالملي ثانية) | في التكوين (على سبيل المثال: 180000 ~ 3 دقائق) |
"مرشح_الضوضاء" | إذا كان صحيحًا، فإنه يفرض عملية تصفية الضوضاء عن طريق إزالة الرسائل التي تشير إلى التحولات غير المحتملة | في التكوين |
"أطوال حافة الشبكة" | قائمة أطوال خلايا الشبكة لتوليد الشبكة. يشير كل طول إلى حجم الحافة في كل بُعد (بالأمتار). | في التكوين (مثال: [500000,200000,10000]) |
"الإطار الزمني" | إذا كان صحيحًا، فإنه يفرض عامل تصفية فيما يتعلق بالطابع الزمني لكل رسالة. إذا كان صحيحًا، فيجب تحديد "start_time"/"end_time" (باستخدام تمثيل EPOCH - بالمللي ثانية) | خطأ شنيع |
"البدء/النهاية_الوقت" | أوقات البدء/الانتهاء لمرشح الإطار الزمني (بالمللي ثانية) | في التكوين (على سبيل المثال: 1647592893000) |
"min_positions" | عدد الحد الأدنى من رسائل AIS للملف المراد تضمينه في عملية التنظيف | 10 |
"max_threads" | الحد الأقصى لعدد المواضيع أثناء التنفيذ؛ فقط للعمليات التي تعمل بالتوازي | 4 |
"طريقة_الكثافة" | الطريقة المستخدمة لخرائط الكثافة "vessels_count" (افتراضي) أو "time_at_cells" | "عدد_السفن" |
"أنواع_الأوعية_الكثافة" | قائمة بأنواع السفن التي يجب مراعاتها أثناء إنشاء خرائط الكثافة. سيتم إنشاء خريطة واحدة لكل نوع من السفن، بناءً على رموز الأنواع المتوفرة في نظام التعرف الآلي (AIS). يشمل خيار "الكل" جميع السفن بغض النظر عن نوعها. تشمل الخيارات: ['الكل'، 'البضائع'، 'الناقلة'، 'الجرف'، 'HSC'، 'الصيد'، 'القانون_العسكري'، 'الركاب'، 'المتعة'، 'الإبحار'، 'الخدمة'، 'القطر "،"غير معروف"،"أخرى"] | 'الجميع' |
يجب أن يتضمن الدليل ("colors_files_path") مع ملفات الألوان ملف TXT، المسمى "colors_{GEL}.txt" حيث GEL هو طول كل حافة شبكة بالأمتار (مثال: "colors_1000.txt"). يجب أن يتضمن كل ملف عتبات الكثافة متبوعة باللون المناسب، معبرًا عنه بـ RGB ومع مؤشر العتامة (0-255).
يمكنك استخراج المتطلبات من الواردات باستخدام الأمر: pipreqs --force
يمكنك استخدام حزمة تراخيص النقاط (pip-licenses) للتحقق من تراخيص التبعيات
pip-licenses -p pyproj geopandas Fiona haversine pandas Shapely
النتائج في :
Fiona 1.8.21 BSD License
Shapely 2.0.0 BSD License
geopandas 0.10.2 BSD
haversine 2.5.1 MIT License
pandas 1.4.2 BSD License
pyproj 3.3.1 MIT License
تم تمويل هذا العمل جزئيًا من قبل الصندوق الأوروبي للملاحة البحرية ومصايد الأسماك (EMFF) من خلال عقد الخدمة رقم CINEA/EMFF/2020/3.1.16/Lot2/SI2.850940
تم ترخيص هذا العمل بموجب ترخيص Creative Commons Attribution-NonCommercial-ShareAlike 4.0 الدولي.