الهيكلية الهندسية العامة ومسار تدفق البيانات (Architecture & Topology)
كيف ترتبط المكونات معاً من ملفات الخرائط الخام وحتى شاشة المستخدم
لماذا ألغينا صور PNG واعتمدنا المتجهات؟
توليد صور PNG مسبقاً (Raster Tiles) يتطلب مساحة تخزين هائلة تتجاوز عشرات التيرابايتات ويستغرق أسابيعاً من المعالجة. خادم Martin (Rust) يقرأ الإحداثيات مباشرة من قاعدة البيانات ويحولها فوراً إلى ثنائيات MVT/PBF خفيفة جداً، مما يمنح العميل تحكماً كاملاً بالألوان والخطوط بدون استهلاك مساحات تخزين.
ما هو سر تقليص الحجم عبر Polyline؟
إرسال المسارات بين عمان والعقبة كإحداثيات GeoJSON خام قد يصل حجمه إلى مئات الكيلوبايتات. قمنا بتضمين خوارزمية Polyline Algorithm التي تضغط آلاف النقاط في سلسلة نصية مشفرة بـ 5 خانات عشرية، مما يخفض استهلاك باقة الإنترنت على تطبيق السائق والراكب بنسبة 90%.
كيف تم تحقيق أداء الإكمال بأقل من 50ms؟
قاعدة البيانات PostGIS مزودة بفهارس varchar_pattern_ops و pg_trgm مع تطبيع الحروف العربية. هذا يتيح لمحرك NestJS اقتراح المستشفيات والشركات مع كل حرف يكتبه المستخدم فورياً ودون أي تأخير في تجربة الاستخدام.
مصادر الخرائط والبيانات الأولية (Map Basemaps & Provenance)
من أين حصلنا على الخرائط، وكيف تم تنقيحها ودمجها
| المصدر الجغرافي | طبيعة البيانات المستخرجة | صيغة الملف والمعالجة | الترخيص والاستقلالية | مكان الاستقرار بالخادم |
|---|---|---|---|---|
| OpenStreetMap (OSM) | شبكة الطرق والشوارع الكاملة، المسالك، استخدامات الأراضي، الوديان، شبكات الكهرباء، وأسماء الأماكن | .osm.pbf معالج بـ osm2pgsql و Osmium | ODbL (مفتوح المصدر ومستقل 100%) | جداول planet_osm_* في PostGIS |
| Overture Maps Foundation | أماكن ومحلات تجارية (Places)، مضلعات المباني بدقة متناهية (Buildings)، ومضلعات التقسيم الإداري (Divisions) | GeoJSON / Parquet محقون بالبايثون | CDLA Permissive (تحالف Meta, AWS, Microsoft, TomTom) | جداول overture_building و overture_place |
| SRTM & Copernicus DEM 30m | النموذج الرقمي للارتفاعات (Digital Elevation Model) وتضاريس الكرة الأرضية وشبكات الانحدار | GeoTIFF تحول إلى Terrarium RGB PNG | NASA / ESA Public Domain | data/mbtiles/jordan-dem.mbtiles (930MB) |
| Esri World Imagery | صور الأقمار الصناعية عالية الدقة والوضوح (Orthophotos) من مستوى Z0 حتى Z18 | Raster Tiles مجمعة في حزمة MBTiles | طبقة صور استرشادية | data/mbtiles/jordan-satellite.mbtiles |
| قواعد المعالم السيادية المطورة محلياً | معالم أثرية ودينية وتاريخية في الأردن والعراق ومصر وسوريا، مع بوابات ومواقف رسمية موثقة | JSON & SQL Migrations (حقن مباشر) | ملكية فكرية خاصة للمنظومة (Intaleq/Siro) | جدول place_gates و unified_search_index |
تفصيل الطبقات الجغرافية والشعاعية (Cartographic Layers Architecture)
تفكيك طبقات ملفات التنسيق المعتمدة (Style Specification v8)
تعتمد الخريطة على مواصفة MapLibre Style Spec v8 عبر ملفات JSON معيارية مثل (style-3d-terrain.json و style.json). يتم رسم الطبقات بترتيب هندسي تصاعدي من الأسفل للأعلى (Z-Index Hierarchy) لضمان عدم حجب الشوارع بالمباني أو طمس أسماء الأماكن:
الخلفية والغطاء الطبيعي
طبقة topo-background بلون طبيعي هادئ (#EFECE6)، مع طبقات الغطاء النباتي والغابات (#4d7c0f) والكثبان الرملية والصحاري (#ea580c).
المياه والسواحل والوديان
طبقات السواحل البحرية المبسطة والكاملة (coastal-ocean-*) بلون (#0284c7)، مع طبقة الوديان ومجاري السيول والأنهار (wadis-waterways) بعرض ديناميكي يتدرج من 1px إلى 3.5px حسب التقريب.
تظليل التضاريس والارتفاع
طبقة terrain-3d-hillshading بنوع hillshade مع زاوية إضاءة شمسية شمالية غربية (315°) ومبالغة تضاريس 0.75، لتوليد ظلال الجبال والأودية بواقعية سينمائية.
خطوط الكنتور الطبوغرافية
خطوط رئيسية (contour-major-lines) بعرض 1.4px ولون بني داكن عند فواصل الارتفاع المرجعية، وخطوط فرعية (contour-minor-lines) بعرض 0.75px تظهر ابتداءً من زووم 11.
شبكة الطرق المعتمدة
تصنيف هرمي للشوارع: الطرق السريعة (Motorways)، الطرق الشريانية (Primary)، الطرق الفرعية، والشوارع السكنية مع طبقة approved_roads التي تضمن التوجيه عبر مسارات معتمدة وتمنع توجيه المركبات في طرق مخصصة للمشاة.
المباني ثلاثية الأبعاد (3D)
طبقة 3d-buildings-extrusion التي تحول أشكال المباني إلى مجسمات قائمة ثلاثية الأبعاد ذات ارتفاعات حقيقية أو مقدرة مع تظليل أرضي ديناميكي (osm-buildings-ground-shadows).
بوابات ومداخل المنشآت
نقاط وصول دقيقة للمستشفيات، المراكز التجارية، والمطارات تشمل البوابة الرئيسية، مواقف السيارات، وأكشاك التذاكر، لمنع إسقاط السائق عند الأسوار الخارجية للمنشأة.
البنية التحتية والشبكات
خطوط نقل الكهرباء ذات الجهد العالي والفرعي (osm-power-lines)، محطات التوليد والتحويل، والأبراج التكتيكية الميدانية.
المسميات والنصوص المعربة
أسماء المدن والمحافظات والأحياء والشوارع بنصوص عربية أصيلة مع خطوط PBF محقونة محلياً (Alexandria & SF Pro) لتفادي تقطع الحروف العربية.
منهجية أسماء الأماكن والمعالم والبحث الذكي (POI Pipeline & Geocoding)
كيف جمعنا الأسماء، وكيف ننظفها ونرتبها ونتفوق بها على الأخطاء الإملائية
أ. من أين جلبنا أسماء الأماكن؟
لم نعتمد على مصدر واحد بل قمنا بدمج 4 طبقات من البيانات الجغرافية:
- OpenStreetMap PBF: استخراج أسماء القرى، البلدات، الشوارع، والمباني الحكومية.
- Overture Maps Places: مئات الآلاف من نقاط الاهتمام التجارية (مطاعم، مقاهي، بنوك، شركات) في عمان، إربد، الزرقاء، بغداد، دمشق، والقاهرة.
- قواعد المعالم السيادية والوقفية: معالم التراث والمساجد والمزارات التاريخية الموثقة بإحداثيات سنتيمترية.
- تطبيع الحروف العربية (Arabic Normalization): معالجة فورية تُوحّد (أ، إ، آ إلى ا)، و(ة إلى ه)، و(ى إلى ي)، مع إزالة حركات التشكيل لمنع فشل البحث عند اختلاف طريقة الكتابة.
def normalize_text(t):
if not t: return ''
s = t.strip()
s = s.replace('أ', 'ا').replace('إ', 'ا').replace('آ', 'ا')
s = s.replace('ة', 'ه').replace('ى', 'ي')
return ' '.join(s.split()).lower()
ب. خوارزمية فلترة التكرار وتقييم الأهمية (Scoring)
عند دمج مصادر متعددة تظهر أماكن مكررة لنفس الصيدلية أو البنك. قمنا بتطبيق معادلة Haversine لحساب المسافة الفاصلة، ودمج أي مكانين يحملان نفس الاسم ويقل البعد بينهما عن 50 متراً.
حيث يُمنح المكان "دفعة أهمية" (Category Boost) بناءً على دوره الحيوي:
معضلة السور الخارجي وبوابات المنشآت (The POI Gates Architecture)
في أنظمة الخرائط التقليدية، عندما يطلب المستخدم الذهاب إلى "مدينة الحسين الطبية" أو "سيتي مول" أو "مطار الملكة علياء"، يقوم نظام الملاحة بإيصاله إلى النقطة الهندسية المركزية (Centroid)، مما يجعله يقف أمام جدار أسمنتي مصمت في الشارع الخلفي! قمنا بحل هذه المعضلة عبر هندسة بوابات المنشآت (Place Gates):
سلسلة وهندسة الارتفاعات وخطوط الكنتور (Elevation, DEM & Contours Pipeline)
كيف تُخزن الارتفاعات في قنوات الألوان، وكيف تُحسب خطوط الكنتور رياضياً
أ. كيف يتم تخزين الارتفاع داخل صورة؟ (Terrarium DEM Encoding)
بدلاً من إرسال مصفوفات أرقام ثقيلة عبر الشبكة، يعتمد النظام المعياري العالمي على تخزين الارتفاع بالمتر داخل قنوات الألوان الثلاثية (Red, Green, Blue) في صور PNG مربعة.
عندما يريد المتصفح أو التطبيق معرفة ارتفاع أي نقطة على سطح الأرض، يقوم بقراءة بكسل واحد وتطبيق المعادلة الرياضية التالية:
ب. هندسة خطوط الكنتور (Contour Lines)
تم توليد خطوط الكنتور باستخدام خوارزميات الاستيفاء المكاني من بيانات SRTM بدقة 30 متراً وتخزينها كمتجهات هندسية داخل جدول jordan_contours:
نظام المباني ثلاثية الأبعاد واحتساب الارتفاعات (3D Architectural Extrusions)
كيف تتحول المضلعات المسطحة إلى كتل معمارية مجسمة في الوقت الفعلي
آلية التجسيم بالمعالج الرسومي (WebGL Fill-Extrusion)
لا نقوم بتحميل نماذج ثلاثية الأبعاد ثقيلة مثل (OBJ أو GLTF) التي قد تستهلك غيغابايتات من الذاكرة وتتسبب ببطء الهواتف. بدلاً من ذلك، نستخدم خاصية fill-extrusion المدعومة في محرك MapLibre GL. تأخذ هذه الخاصية مضلع المبنى ثنائي الأبعاد (2D Polygon) وترفعه عمودياً من خلال تمرير متغير الارتفاع.
"fill-extrusion-height": [
"coalesce",
["get", "height"], // 1. استخدام الارتفاع الحقيقي إن وُجد
["*", ["get", "building:levels"], 3],// 2. وإلا: عدد الطوابق × 3 أمتار
3.5 // 3. القيمة الافتراضية للمبنى الأرضي (3.5م)
]
التدرج اللوني والتظليل حسب الارتفاع
لإضفاء عمق معماري فاخر، قمنا بربط لون جدران المبنى بارتفاعه (Color Interpolation based on Height):
قواعد الدول والتقسيمات الإدارية ومضلعات فورونوي (Country Rules & Voronoi Partitioning)
الحدود الإدارية، وإبداع توليد حدود الأحياء هندسياً عند غياب المضلعات الرسمية
التسلسل الإداري للدول في المنظومة
يدير النظام هيكلية مكانية ثلاثية المستويات عبر جدول admin_boundaries:
تم حصر حدود الأردن الجغرافية بالمربع المكاني: خط طول 34.8° E إلى 39.3° E ودائرة عرض 29.1° N إلى 33.4° N.
معضلة الأحياء وحلها بهندسة فورونوي (Voronoi Polygons)
في معظم دول الشرق الأوسط لا تتوفر مضلعات رسمية لحدود الأحياء؛ المصادر العالمية مثل OSM توفر فقط "نقطة في منتصف الحي" (Point)! لمعرفة الحي الذي يتواجد فيه السائق بدقة، قمنا ببناء محرك هندسي يُنفذ تثليث ديلوني وتقسيم فورونوي (Voronoi Tessellation):
- جلب كافة نقاط مراكز الأحياء المعتمدة.
- حساب المنصفات العمودية للمسافات الفاصلة بين كل نقطة وأقرب جاراتها.
- توليد مضلع هندسي متكامل لكل حي يضمن أن أي موقع داخله هو أقرب لمركز هذا الحي.
- قص مضلعات فورونوي تلقائياً عند الحدود الخارجية للمحافظة لمنع التداخل.
المكدس البرمجي والمحركات التقنية (The Technical Software Stack)
الأدوات، اللغات، والخوادم التي تُشغّل المنظومة في بيئة الإنتاج
PostgreSQL 15 + PostGIS 3.3
العمود الفقري لتخزين النقاط والمضلعات وشبكات الطرق، مزود بفهارس GiST المكانية لحساب التقاطعات والمسافات بأجزاء من الثانية.
Martin Tile Server
خادم البلاطات فائق السرعة والمبني بلغة Rust؛ يقرأ مباشرة من جداول PostGIS ويولد مربعات MVT المتجهة بدون أي استهلاك للذاكرة العشوائية.
GraphHopper & Valhalla
محركات توجيه وملاحة متقدمة تستخدم خوارزميات تسلسل الانكماش (Contraction Hierarchies)، مع مراعاة اتجاهات الشوارع وارتفاعات SRTM.
NestJS Spatial API & Redis 7
البوابة المركزية لمعالجة منطق البحث، التحقق من مفاتيح الأمان x-api-key، تتبع السائقين اللحظي، وتخزين المسارات المتكررة في Redis.
دليل إجابات المؤسس والمهندس المعماري على أسئلة المستثمرين والخبراء (Investor & Technical Q&A)
إجابات جاهزة ومدروسة تعكس القيادة الاستراتيجية والحصانة الاقتصادية للمنصة
"لماذا لم تستخدموا Google Maps أو Mapbox كما تفعل 99% من الشركات الناشئة؟"
الجواب الاستراتيجي: "شركات النقل والتوصيل التي تعتمد على Google Maps تدفع ما متوسطه 0.30$ إلى 0.45$ عن كل رحلة مقابل استدعاءات الخريطة، والتوجيه، والبحث الجغرافي. إذا كانت منصتك تنفذ 1,000,000 رحلة شهرياً، فأنت تسدد أكثر من 300,000$ سنوياً كضريبة خرائط أجنبية تلتهم هامشك الربحي الإجمالي (Gross Margin)."
"من خلال بناء بنية سيادية خاصة بنا تعتمد على PostGIS و Martin و GraphHopper، انخفضت تكلفة البلاطات إلى صفر دولار شهرياً، وأصبح سيرفر متواضع بتكلفة 100$ شهرياً يخدم ملايين الطلبات، مما خلق خندقاً اقتصادياً وتنافسياً (Infrastructure Moat) يحمي نموذج عملنا."
"هل الخريطة دقيقة وهل يمكن الوثوق بأسماء الشوارع والمعالم؟"
الجواب الاستراتيجي: "نعم وبدقة تفوق الخرائط التجارية في بعض الجوانب الإقليمية. بياناتنا مدعومة بتحالف Overture Maps (المملوك لـ Meta, Microsoft, AWS, TomTom) مدمجة مع OpenStreetMap. علاوة على ذلك، قمنا بتنفيذ خط أنابيب خاص لتنقية وتطبيع الحروف العربية وفلترة التكرارات، وبناء قاعدة بوابات المنشآت (POI Gates) التي تحل مشكلة وصول السائقين لأسوار المستشفيات والمراكز التجارية الخارجية."
"ماذا لو انقطع الإنترنت أو فُرض حظر تجوال أو حدثت أزمة أمنية؟ هل تتوقف المنظومة؟"
الجواب الاستراتيجي: "هذه النقطة هي جوهر فخرنا الهندسي: المنظومة مصممة لتكون Air-Gapped Ready بالكامل. خريطة الأردن بكامل شوارعها، تضاريسها ثلاثية الأبعاد (DEM)، وصور أقمارها الصناعية محزومة في ملفات SQLite MBTiles محلية بحجم إجمالي لا يتجاوز 4.5 غيغابايت. التطبيقات الميدانية مزودة بمحرك Valhalla المحلي للتوجيه داخل الجهاز دون الحاجة لطلب حبة بيانات واحدة من الإنترنت الخارجي."
"كم من الوقت يلزمكم لإضافة دولة جديدة مثل مصر أو السعودية إلى النظام؟"
الجواب الاستراتيجي: "بفضل أتمتة خوادمنا باستخدام Docker وسكربتات التهجير الذكية (update-data.sh و overture_ingest.sh)، نحتاج فقط إلى أقل من 24 ساعة لتنزيل بيانات أي دولة جديدة، دمج شوارعها مع محرك GraphHopper، استيراد محلاتها التجارية وتقسيماتها الإدارية، وإطلاقها مباشرة في التطبيق."
"كيف تضمنون عدم تسريب أسرار الشيفرة البرمجية (Source Code Secrets) أثناء العروض التوضيحية؟"
الجواب الاستراتيجي: "تعتمد استراتيجيتنا على الفصل التام بين المعمارية (Architecture) والشيفرة الحساسة (Business Logic Secrets). هذه الصفحة تشرح المبادئ والمعايير الهندسية المعترف بها دولياً (مثل MVT و Terrarium DEM ومواصفات OGC)، بينما تظل مفاتيح التشفير، وبيانات الاتصال، وخوارزميات التسعير، وأوزان التوجيه محمية بالكامل داخل طبقات معزولة في Docker Secrets والبيئات المؤمنة."
قاموس المصطلحات والمفاتيح الهندسية السريعة (Architectural Glossary)
المصطلحات العالمية الدقيقة لتعزيز لغة الحوار التقني الرفيع