SkyProfile
SkyProfile هو تطبيق سطح مكتب يعمل بـ PyQt5 للاستعلام عن سجل ADSBexchange العالمي لطائرة واحدة أو عدة طائرات، واكتشاف الرحلات متعددة الأجزاء، وتصدير ملفات KML/CSV/JSON/Excel مع تحليلات غنية (المطارات، المسارات، فترات الوقت، إشارات النداء، بيانات FAA).
الميزات الرئيسية
- استعلام حسب نطاق التاريخ باستخدام ICAO hex؛ مع إمكانية البحث حسب الذيل/التسجيل عبر قاعدة بيانات ADSBx الأساسية.
- اكتشاف قوي للأجزاء (أرض → جو → أرض) مع علامات جو/أرض، قواعد إرشادية للارتفاع/السرعة الأرضية، 90 ثانية انتظار على الأرض، معالجة فجوات 20 دقيقة، وسجل حيوي لإشارات النداء.
- الصادرات (تبديل لكل نوع): نقاط KML، مسارات KML ثنائية الأبعاد، مسارات KML ثلاثية الأبعاد، خريطة حرارية للمطارات KML (نقاط بيضاء بحسب النشاط)، CSV، JSON، ملخص Excel.
- وضع الدُفعات مع خاصية دمج التقارير الاختيارية: دمج جميع الطائرات في مجموعة واحدة من الصادرات غير المتصلة (CSV/JSON/KML/Excel). يتم إلغاء الملفات الفردية عند التجميع.
- مطابقة المطارات (الأقرب ضمن 250 كم؛ معرفات اصطناعية عند عدم وجودها) يُعاد استخدامها عبر KML وExcel.
- البحث في سجل FAA للطائرات ذات أرقام N (قاعدة بيانات محلية في
resources/faa_registry).
- تقدم واجهة المستخدم مع حالة لكل مرحلة؛ أزرار تشغيل/إيقاف؛ أيقونة التطبيق مُطبقة على النافذة وشريط المهام.
- قائمة الإعدادات مع "التحقق من وجود تحديثات" (التحقق من علامة GitHub) و"حول" (الإصدار/المعلومات + إسناد البيانات).
وضع الدُفعات
- الإدخال: ملف CSV بعمود
icao_hex (أو hex/icao) و/أو tail/registration. كل صف يمثل هدف طائرة واحدة.
- السلوك:
- تشغيل جميع الطائرات المدرجة عبر نطاق التاريخ المختار.
- كتابة مخرجات كل طائرة في
output/<HEX>_<TAIL>/ (hex فقط إذا كان الذيل مفقودًا).
- اختياريًا دمج التقارير: عند التمكين، يتم إلغاء الملفات الفردية وإنتاج مجموعة مدمجة واحدة:
consolidated_<N>ACFT_<start>_<end>.csv/.json (جميع النتائج/حمولات JSON)
- ملفات KML مدمجة (نقاط، مسارات، مسارات ثلاثية الأبعاد، خريطة حرارية للمطار) مدمجة لعرضها دون اتصال
- ملخص Excel مدمج مع نفس التبويبات/الرسوم البيانية كتشغيل عادي، يجمع جميع الرحلات
- التخزين المؤقت: تنزيلات ADSBx لا تزال تُخزّن مؤقتًا لكل طائرة/يوم تحت
output/cache/<hex>/YYYY-MM-DD.json.
التثبيت / التشغيل
من المصدر
pip install PyQt5 requests simplekml openpyxl lxml numpy
python skyprofile.py
ملف EXE مُجمّع (ويندوز)
- استخدم
dist/SkyProfile.exe مع dist/resources/ بجانبه (يحتوي على بيانات FAA/المطار/acdb).
الصادرات والتطبيع
- اكتشاف الأجزاء: علامات جو/أرض، فحوص الارتفاع/السرعة الأرضية، 90 ثانية على الأرض، هبوط بفجوة 20 دقيقة، متوسط تجمّعات الأرض، سجل إشارات النداء لكل جزء.
- نقاط KML: علامة موقع واحدة لكل وصول جزء مع الأوقات، المدة، إشارة النداء، بيانات وصفية.
- مسارات KML ثنائية/ثلاثية الأبعاد: مسارات كاملة للأجزاء (ليست خطوطًا مستقيمة)؛ المسارات ثلاثية الأبعاد تتضمن الارتفاع.
- خريطة حرارية للمطار KML: علامة واحدة لكل مطار تم زيارته، بحجم يتناسب مع إجمالي الزيارات (وصول+مغادرة) وملونة باللون الأبيض لتراكب نظيف؛ السمات تتضمن تواريخ الوصول/المغادرة، hex، الذيل.
- CSV: صف واحد لكل نتيجة؛ الأعمدة تتضمن hex والذيل بالإضافة إلى
ac_data المسطحة (بدون عمود ac_data_json الخام).
- JSON: حمولة ملفوفة لكل طائرة:
{ hex, tail, meta, data: [تتبع خام trace_full blobs] }؛ JSON المدمج هو قائمة بهذه الحمولات.
- ملخص Excel (دفتر عمل كامل متعدد الأوراق):
Summary: بيانات وصفية (hex، التسجيل، النوع، المالك، الموديل، العلامات، نطاق التاريخ)؛ تفاصيل FAA عند توفرها.
Flights: صف واحد لكل جزء مكتشف؛ أعمدة لـ hex، الذيل، معرف المقطع، طوابع UTC للإقلاع/الهبوط، المدة، معرفات وأسماء مطاري الإقلاع/الهبوط، خط الطول/العرض، فترات اليوم من الأسبوع/الشهر/الساعة، إشارات النداء والتاريخ.
Airports: أفضل المطارات حسب الزيارات (وصول + مغادرة) مع المعرفات، ICAO/IATA، الاسم، المدينة/الدولة، الأعداد، خط الطول/العرض؛ يتضمن مخططًا شريطيًا "المطارات حسب عدد الزيارات".
Routes: أفضل المسارات مع تسميات مطارات قابلة للقراءة والأعداد؛ يتضمن مخططًا شريطيًا "عدد المسارات المسافرة".
DayOfWeek: الأعداد حسب يوم الأسبوع مع مخطط شريطي.
DayOfMonth: الأعداد حسب يوم الشهر مع مخطط شريطي.
Hours: الإقلاع مقابل الهبوط حسب ساعة UTC مع مخطط شريطي مزدوج السلسلة (الإقلاع أزرق، الهبوط برتقالي).
Countries: الزيارات حسب الدولة مع مخطط شريطي.
Callsigns: عدد استخدامات إشارات النداء.
- الرسوم البيانية تستخدم خلفيات بيضاء، محاور Y صحيحة مع شبكة معقولة (كل 10 أو 100 للأعداد الكبيرة)، وتسميات قيم على الأشرطة.
الموارد والتخزين المؤقت
- البيانات المشتركة موجودة في
resources/ (acdb_cache, airport_db, faa_registry). تتضمنها إصدارات PyInstaller عبر --add-data وتنسخها بجانب EXE.
- ذاكرة التخزين المؤقت لـ ADSBx trace تبقى تحت
output/cache/<hex>/YYYY-MM-DD.json.
- صادرات كل طائرة مجمعة تحت
output/<HEX>_<TAIL>/ (أو hex فقط إذا لم يوجد ذيل). صادرات الدفعات المدمجة تستخدم consolidated_<N>ACFT_<date range>* في المجلد الرئيسي output/.
ملاحظات وقيود
- قد تظل فجوات التغطية تفوت الأوقات الأرضية الدقيقة؛ يمكن لمطابقة أقرب مطار أن ترجع إلى معرفات
LL_lat_lon الاصطناعية.
- تم تعطيل الصور في Excel لتجنب الرسومات التالفة.
- ملف EXE الأحادي كبير لأنه يحزم Python + Qt + التبعيات؛ استخدم الوضع أحادي الدليل إذا كنت بحاجة إلى EXE أصغر.
الترخيص
- رخصة Apache 2.0 (انظر
LICENSE). تظل البيانات/API الخارجية تحت شروطها الخاصة.