UPD: نظرًا لأن الموضوع سار بشكل جيد وأظهر أن هناك طلبًا على هذه الخدمة ، فسأطورها أكثر. لقد بدأت جمهور VKontakte لجمع الملاحظات ونشر معلومات التحديث
https://vk.com/sightsafariمنطقة غير مألوفة من المدينة ، وكمية صغيرة من وقت الفراغ والحاجة (أو الرغبة) للوصول إلى محطة المترو / الفندق / القطار سيرًا على الأقدام - ربما ، دخل الجميع على الأقل في هذا الموقف. في الوقت نفسه ، من ناحية ، أريد أن أرى بعض الأماكن الجميلة والمثيرة للاهتمام ، ولكن من ناحية أخرى ، فإن الوقت المحدود لا يسمح لي بالانحراف كثيرًا عن الطريق المباشر.
يكون الوضع أكثر تعقيدًا إذا لم تكن هناك مناطق جذب رئيسية قريبة يعرفها الجميع ويمكن تضمينها في مسارك بعد بحث قصير على الإنترنت. ماذا تفعل إذا كنت عالقًا في بعض Kupchino ، والتي سمعت عنها فقط أنه من الأفضل عدم الوقوع هناك؟ علينا أن نذهب في المستكشف ، آملين أن يكون هناك شيء مثير للاهتمام في الطريق. ومع ذلك ، فإن الملاحين المشهورين ينظرون فقط في المسافة ووقت السفر ، ولكن لا يأخذون في الاعتبار مدى اهتمام المسار. لقد صادفت المزيد من المشاريع تحاول أن تأخذ في الاعتبار راحة طريق المشي (القيادة حول تجاوز الطرق السريعة الصاخبة) ، لكنني أريد أن أذهب ليس بشكل مريح فحسب ، ولكن أيضًا لرؤية بعض الجمال.

أفكر قليلاً ، قررت أن أتولى هذه المهمة بنفسي. كما هو الحال دائمًا ، فإن الفكرة العامة للخوارزمية بسيطة للغاية ، ولكن الشيطان يكمن في التفاصيل. وفي حالة الملاحة ، يمكن أن تكون الأشياء الصغيرة كبيرة جدًا ومخاطر على الصحة ، لأنه من غير المحتمل أن يكون أي سائح سعيدًا عندما يقوده الملاح إلى براري منطقة صناعية نصف مهجورة للحصول على علامة تذكارية صغيرة (العمل ، بمجرد حدوثها) .
وصف الخوارزمية وأمثلة للعمل تحت القطع ، رابط في النهاية.
الفكرة الرئيسية
كانت فكرتي الأولية هي: تنزيل خريطة خريطة الشارع المفتوحة ، وتحليلها ، وتمزيق المعلومات حول جميع الأشياء التي يحتمل أن تكون مثيرة للاهتمام للمشاة (لا يزال يتعين علينا تحديد قائمتهم) ، ورسم بعض المناطق العازلة حولهم. نحن نبحث عن طرق مع إطار عمل معياري ، القليل من عملية بناء رسم بياني للملاحة ، بحيث تصبح أوزان الحواف في هذه المناطق أقل وبالتالي تنظم جذب مسارات المشاة لهم.
لم يقل من فعله. للعثور على الطريق ، استخدمنا مكتبة GraphHopper ، التي يمكنها قراءة خرائط OSM من الصندوق ، وبناء طرق لأنواع مختلفة من النقل (سيارة ، مشاة ، دراجة) ، لديها العديد من الخوارزميات المختلفة للعثور على الطريق (بحث بسيط ، البحث عن مسارات بديلة ، جميع أنواع الخيارات المتسارعة والمحسنة ) ويمكنه معالجة الرسم البياني للتنقل مسبقًا لتسريع البحث (يعمل البحث الأساسي في المدينة بسرعة كبيرة ، في بضع ثوانٍ من الثانية). على سبيل المثال ، تم اختيار عملي الأصلي سانت بطرسبرغ - هنا يمكنني تقييم جودة الطرق المثيرة للاهتمام ونفسي.
ونتيجة لذلك ، تم تعليق النسخة الأساسية من الخوارزمية معًا على ركبة لبضع أمسيات ، ثم بدأت رحلة مثيرة على طول أشعل النار والأشياء الصغيرة ، حيث يعرف الشيطان وأكاذيبه ، والتي سأناقشها لاحقًا.
كائنات للسياح ومشاكل مع OSM
في خريطة الشارع المفتوح ، يكون كل كائن عبارة عن شكل هندسي (عقدة ، أو طريق ، أو علاقة) بالإضافة إلى عدد من أزواج سلاسل القيمة الرئيسية.
هنا هو قصر الشتاء في OSM:

المشكلة هي أنه بما أن OSM هي خريطة مفتوحة وقابلة للتحرير من قبل المشاركين ، فإن التوحيد يكون عرجاء على كلا الساقين. لتعيين نفس النوع من الكائنات ، يمكن استخدام مجموعة مختلفة من العلامات ومجموعة مختلفة من الكائنات ، تعتبر بعض العلامات "أساسية" وموصوفة في الويكي ، ولكن لا تزال هناك مجموعة من الخيارات ، ببساطة بديلة وخاطئة بصراحة ، ولكنها مع ذلك تستخدم . ونتيجة لذلك ، فإن أي رمز يعمل مع OSM (خاصة أي ملاحين ومقدمين) يضطر إلى أخذ كل هذا في الاعتبار ويحتوي على مجموعة من التعليمات البرمجية للتعامل مع مثل هذه الحالات الخاصة.
على سبيل المثال ، لا تعني العلامة highway = غير محددة "نوعًا من الطريق من نوع غير معروف" ، كما يعتقد العديد من مصممي الخرائط ، ولكن نوعًا محددًا جدًا من الطرق وفقًا للتصنيف الأوروبي ، لكنهم يصوغونها في أي مكان بسبب الاسم. علاوة على ذلك ، يفترض هذا النوع من الطريق وجود رصيف للمشاة أو رصيف للمشاة ، وبالتالي يقوم المستكشف ببناء طرق للمشاة على طوله ، بينما لا يذهب المشاة إلى مثل هذا الطريق الحقيقي في سانت بطرسبرغ (هذا هو طريق الشارع). أو مثال آخر: addr: housename نستخدم في بعض الأحيان علامة لاسم المباني ، على سبيل المثال ، لسبب ما ، تمت تسمية الجناح الغربي لمبنى هيئة الأركان العامة في ساحة القصر باسم هذه العلامة. بينما يقول دليل OSM أنه يجب استخدامه فقط في البلدان التي يتم فيها استخدام الأسماء بدلاً من أرقام المنازل (في اليابان يبدو الأمر كذلك) ، وبالنسبة لأسماء المباني الرسمية ، استخدم علامة الاسم وما شابه.
لحظة أخرى تزعجني هي تمييز المناطق الخضراء. هناك علامتان مختلفتان لهذا الغرض ، الترفيه = المنتزه والأرض = العشب. على الخريطة يبدون متشابهين: منطقة خضراء فقط ، مختلفة قليلاً في اللون. ونتيجة لذلك ، يتم خلطهما معًا ، كما يريدون. وبسبب هذا ، غالبًا ما تصبح الحديقة الفاصلة بين طرق الشارع "حديقة" وتبدأ في جذب مسارات المشي لمسافات طويلة.
كل هذه الفروق الدقيقة كان لا بد من اكتشافها لأنفسنا حيث قمنا ببناء وتحليل الطرق.
كمجموعة من الأشياء التي تهم المشاة ، تم تحديد القائمة التالية في النهاية:
- معلم سياحي معلم سياحي
- المساحات الخضراء. وقت الفراغ = حديقة ، حديقة. بعد بعض المداولات ، تمت إضافة مقابر استخدام الأراضي = المقابر. من ناحية ، هناك جاذبية ، من ناحية أخرى ، على سبيل المثال ، في جزيرة فاسيليفسكي في سانت بطرسبرغ ، المنطقة الخضراء الكبيرة الوحيدة هي المقبرة ، التي يستخدمها السكان المحليون بدلاً من الحديقة ، ولكن لا توجد حدائق حقيقية هناك.
- الماء: الأنهار والبحيرات والبرك. هناك مزيج من الماء وعلامات الممرات المائية ومجموعة من القيم المكررة. من الجيد المشي على طول المنتزه في يوم حار. على أي حال ، فكرت في ذلك حتى حاولت معالجة سمولينسك - اتضح فجأة أنه في أعماق ضفة النهر لم يكن سدًا جميلًا مثلنا في سانت بطرسبرغ ، ولكنه أرض قاحلة متضخمة ومليئة بالنفايات يفضل المشاة الابتعاد عنها. لكن حتى الآن ، لم يكن من الممكن التمييز بين هذه المواقف خالصة على الخريطة.
- المباني والهياكل التاريخية ، الموسومة التاريخية. عادة ما تكون جميلة فقط
- أي أشياء صغيرة أخرى في المدينة تحمل علامة الراحة. لها الكثير من المعاني ، لقد اخترت القليل فقط ، على سبيل المثال ، ساعة شارع (ساعة) - غالبًا ما تكون جميلة ، المباني الدينية (place_of_worship) ، فن الشارع الجميع (الكتابة على الجدران) وبعضها الآخر
- شوارع المشاة والساحات السريعة = المشاة
في سياق الدراسة ، أدركت أنه بالإضافة إلى المناطق الإيجابية التي تجذب المشاة ، من الضروري إضافة المناطق السلبية التي تصدهم. تتضمن هذه القائمة حتى الآن:
- استخدامات المباني = البناء. ليس المشاة سعداء للغاية بالسير تحت السقالات ، في الغبار المتطاير من موقع البناء
- المناطق الصناعية والكراجات = الاستخدام الصناعي والكراجات. عندها فقط ، حدث هذا الفارق البسيط مع مؤسسة أحد المشاة (وقمنا في معهد التصميم والعمران التابع لـ ITMO باختباره على الطلاب الذين ساروا على الطرق الموضوعة ثم كتبوا مراجعات كجزء من دراسة راحة المشي في منطقة بتروغراد) في غابة المنطقة الصناعية Lenpolygraphmash. اتضح أنه لم يتم وضع علامة على هذا الربع بالكامل (كما هو الحال عادةً لتحديد مناطق صناعية كبيرة) ، ولكن كل مبنى منفصل.
- من الناحية المثالية ، أريد أيضًا نقل المشاة بعيدًا عن الطرق السريعة الواسعة في المدينة ، حيث تكون متربة وصاخبة والكثير من السيارات وعادة لا يوجد شيء للنظر إليه. ولكن حتى الآن لم يكن من الممكن اكتشافها بشكل لا لبس فيه. في OSM ، لا يوجد سوى عدد من ممرات السيارات ، ولكن هذا المعيار ليس كافياً (العديد من الشوارع السياحية الهامة ، مثل Nevsky Prospect ، هي أيضًا متعددة المسارات)
نفس Lenpolygraphmash ، يحتوي على مكان ما في براريته نصب تذكاري للمطبعة ، وحيث جرت خوارزمي الطالب الفقير

أهمية عوامل الجذب
من الواضح أن المشاهد مختلفة. هناك أشياء كبيرة مشهورة عالميًا - مثل برج إيفل أو كاتدرائية القديس إسحاق في سانت بطرسبرغ ، والتي تجذب عددًا كبيرًا من السياح ، ومن أجل الزيارة التي يمكن للناس أن يصنعوا خطافًا لائقًا. وهناك بعض زخارف المدن الصغيرة - بعض فن الشارع ، ونحت صغير في الفناء يكون الناس على استعداد لرؤيته فقط على طول الطريق ولا يريدون جرهم من بعيد. من أجل البناء الصحيح لطرق مثيرة للاهتمام ومريحة ، كان من الضروري معرفة كيفية فصل فئات مختلفة من مناطق الجذب ، وكل ما لدينا في OSM هو هندسة معينة ومجموعة من العلامات. كان علي أن أتوصل إلى مجموعة من القواعد الأساسية لتعيين "أهمية" نقطة الاهتمام التي تحدد التغييرات في الأوزان في الرسم البياني.
في البداية ، تكون الأهمية صفر وتزداد إذا تحققت الشروط التالية:
- +3 إذا كان هناك علامة تاريخية - فقط المباني التاريخية الهامة لها ، وحتى ذلك الحين ليس كل شيء
- +3 لوجود علامات wikipedia أو wikidata. عادة ما يكون للكائنات المهمة صفحات wiki الخاصة بها.
- +1 لوجود رابط أو عنوان url - مرة أخرى ، ليس لدى الجميع موقع خاص بهم ، ولكن غالبًا ما تؤدي هذه العلامة إلى صفحة من بعض الكتالوجات والأشياء الصغيرة لها
- +1 لكل علامة اسم. يمكن تعيين الاسم بعدة طرق ، يمكن أن يكون هناك جميع أنواع الاسم القديم للأسماء التاريخية أو الأسماء المترجمة إلى لغات أخرى. مرة أخرى ، يشير وجود العديد من الأسماء إلى الأهمية الكافية للكائن (حيث أن شخصًا قد سئم من وضعهم جميعًا)
- البناء: الهندسة المعمارية - الطراز المعماري ، وعادة ما يتم وضعه على جميع أنواع المعالم المعمارية الجميلة
تم تحديد هذه القائمة تجريبيًا وعلى الأقل تسمح لك بفصل القصر الشتوي عن الكتابة على الجدران بدون اسم في الضواحي. ونتيجة لذلك ، تعني أهمية 0 بعض الأشياء المحلية الصغيرة التي لا تحمل اسمًا (قطعة خضرة ، كتابات) ، حوالي 3-4 هي بالفعل شيء مثير للاهتمام (كنيسة ، ساحة حيث يمكنك الجلوس والاسترخاء) ، أقرب إلى 10 ، تبدأ مناطق الجذب على مستوى المدينة ، نفس قصر الشتاء.
القائمة ليست مثالية وتعتمد بشكل كبير على بيانات OSM ، والتي غالبًا ما تكون غير مكتملة. على سبيل المثال ، كان لبوابة نارفا في البداية وحدة واحدة فقط ذات أهمية ، حيث لم يتم إضافة أي شيء باستثناء الاسم إليها. اضطررت للذهاب إلى OSM بنفسي وإضافة الأسماء والأسلوب وسنوات البناء والارتفاع (لتحديد الرؤية بشكل صحيح ، وما هو التالي) ، إلخ. بشكل عام ، هناك أيضًا فائدة عامة في ذلك - لتحسين جودة الطرق ، أذهب إلى OSM من وقت لآخر وأضع العلامات المفقودة هناك ، والتي يمكن استخدامها بعد ذلك من قبل الملاحين أو البرامج الأخرى.
مناطق النفوذ
تأتي مناطق الجذب بأحجام مختلفة. يجب عرض تمثال صغير من مسافة لا تزيد عن 5-7 أمتار. يظهر الفارس البرونزي بوضوح من 20-30. كاتدرائية القديس إسحاق ، أحد أطول المباني في وسط المدينة ، يمكن رؤيتها بشكل لائق من 200-300 (من خلال هذا أفهم أنه ليس من الضروري أن يقترب السائح ، ولكن من المريح جدًا الاستمتاع بالمنظر من هذه المسافة ، يمكن رؤيته حتى على بعد كيلومتر واحد من الضفة الأخرى من نيفا ولكن بدون تفاصيل). كيفية تحديد المسافة التي يجب أن يؤثر فيها الجذب على طرق المشاة؟
الفارس البرونزي وقبة كاتدرائية القديس إسحاق في المسافة

أولاً ، قمت ببناء نصف قطر تجريبي للرؤية. يعتمدون على جميع المعلومات المتاحة حول الجذب ويحولونه إلى واحد من أربعة أقطار نصف قطر: صغيرة 30 مترًا ، متوسطة 100 ، كبيرة 250 ، ضخمة 350 مترًا.
بعيدا قليلا عن رؤية الأنهار والحدائق. بالنسبة لهم ، قمت بتعيين 30 مترًا ، أي يتوافق تقريبًا مع عرض المنتزه أو الشارع المحيط بالمتنزه. نظرًا لأن النظر إلى الحديقة من بعيد هو أمر لا معنى له إلى حد ما ، فأنت بحاجة إلى الذهاب بجواره.
يتم تحديد نوع الرؤية من خلال القواعد:
- الكائنات النقطية (أي المحددة بنوع Point OSM) هي رؤية صغيرة ، وعادة ما تكون آثارًا صغيرة وفن الشارع
- لكن النقطة ومع العلامة التاريخية متوسطة ، لأن غالبًا ما تكون هذه آثارًا كبيرة على ركائز عالية ، مثل الفارس البرونزي نفسه
- المناطق أقل من 20 * 20 متر (الطريق أو العلاقة) متوسطة
- المزيد - كبير
- إذا كان الكائن يحتوي على ارتفاع العلامة (الارتفاع بالأمتار) أو المبنى: المستويات (عدد الطوابق) ، عند ارتفاع أكثر من 50 مترًا ، يعتبر ضخمًا - وهذا مخصص خصيصًا لإسحاق والكاتدرائيات والمباني الكبيرة الأخرى المرئية من بعيد
ولكن ظهرت مشكلة: في ظروف التطور الكثيف للمركز التاريخي لسانت بطرسبورغ ، لم يعمل النهج الساذج مع نصف القطر ، لأن المنطقة الحقيقية لرؤية بعض المعابد الموجودة في الفناء الخلفي كانت أصغر بكثير ، في الواقع كانت مرئية فقط من قسم الشارع المقابل لها مباشرة. كان علي أن أبدأ في بناء مضلعات رؤية صادقة (تقريبًا).
تقف كنيسة القديسة كاترين خلف الفناء ، وتحيط بها منازل من جميع الجوانب:

أولا ، كان من الضروري تحديد العقبات. حسنًا ، كل شيء بسيط ، أخذت وأقرأ من بيانات OSM جميع المضلعات التي تحمل علامة المبنى. ستكون هذه مضلعات تمنع رؤيتنا. ثم كتب خوارزمية ساذجة بسيطة لبناء مضلع من أجل رؤية نقطة باستخدام تتبع الأشعة. لا أحتاج إلى دقة عالية هناك ، يكفي عشرات الأشعة لكل نقطة. في البداية ، أخذت النقطة المركزية لهندسة المعلم دون مزيد من اللغط ، ولكن هذا لم يعط أفضل النتائج للمباني الطويلة (الطويلة والضيقة). لذلك ، في المستقبل ، بالنسبة إلى مناطق الجذب الكبيرة ، بدأت في أخذ ثلاث نقاط - النقطة المركزية والنقطتين الأبعد منه ومن بعضها البعض عند الحدود الخارجية. لماذا لم أبني الرؤية بصدق؟ لأنه إذا كانت خوارزمية إنشاء منطقة رؤية نقطة تافهة (ندع الأشعة تخرج من النقطة في جميع الاتجاهات ، ونرى أين تخطوا أقرب العقبات ، وربط هذه النقاط) ، فمن الصعب جدًا بناء رؤية صادقة للحافة (وأخيرًا ، مضلع) (الأول قرار الرأس - لبناء الرؤية من طرفي الأضلاع والجمع - من الواضح أن الخطأ).
والنتيجة هي تقريب جيد. إنه يبني بشكل غير كامل ، ولكن بالنسبة لاحتياجات ملاحة المشاة ، هذه الدقة كافية لنا. المشكلة الوحيدة هي أنها لا تأخذ في الاعتبار ارتفاع المباني ، أي أي كشك صغير سوف يعيق رؤيتنا لبرج الجرس المكون من خمسة طوابق. ولكن لا يوجد شيء يجب القيام به - لا تحتوي بيانات OSM دائمًا على عدد من الطوابق ، ومن الصعب جدًا إنشاء أحجام رؤية ثلاثية الأبعاد. على الرغم ربما ربما سأعود إلى هذا.
مضلعات رؤية مبنية لهذا الكنائس المجاورة

جمال الطريق وكيفية زيادته
لذلك ، لقد تعلمنا أن ننظر في أهمية ورؤية المعالم السياحية ويبدو أننا بدأنا في بناء طرق جيدة. على أي حال ، كان الأمر كذلك ، بينما كنت أختبر في المناطق الوسطى من سان بطرسبرغ ، التي لديها كثافة عالية جدًا من الجمال لكل كيلومتر مربع.
ومع ذلك ، كان من الجدير الابتعاد قليلاً عن المركز ، عندما بدأت الخوارزمية فجأة في التعرف على ضعفها. وبدأ الطريق الذي بناه يتزامن مع أقصر الطرق. نظرًا لأن القطة تخلت عن الكثير من المشاهد في هذه المناطق ، فإنها تقع بعيدًا عن بعضها البعض ، لذلك ، عند البحث عن مسار باستخدام المقياس المشترك "الجمال + المسافة" ، تبين أن مساهمة المصطلح الأول تقترب من الصفر ، ونتيجة لذلك ، بنيت الخوارزمية ببساطة أقصر الطرق.
بالطبع ، يمكن للمرء أن يقول دائمًا ، "نحن لسنا كذلك ، هذه مدننا مملة" ، لكن هذا لن يكون صحيحًا تمامًا. لذلك ، تساءلت عن كيفية تقييم الطريق الذي تم بناؤه وكيفية تحسينه. إن أبسط حل يتبادر إلى الذهن على الفور هو تمديد الطريق من خلال دفع الخطاف إلى أي نقطة اهتمام تم استبعادها.
الآن ، في الحالات التي تكون فيها أ) المبلغ الإجمالي لأهمية جميع مناطق الجذب في المسار أقل من كيلومتر واحد بقيمة معينة ، أو ب) اختار المستخدم نفسه بناء المسار الأكثر إثارة للاهتمام ، تحاول الخوارزمية تحسينه. للقيام بذلك ، يتم إنشاء المسار الأولي ، ويتم وضع حاجز مؤقت حوله (يتم تحديد سمكه من خلال الطول ، وكلما كان المسار أطول - كلما سمح بخطاف أطول) ، يتم البحث في العديد من المعالم الجديدة (غير المدرجة بعد في المسار) مع النقاط> 2 داخل هذا المخزن المؤقت (لا نريد جعل الخطافات لكل كيلومتر إلى الحدائق العامة بدون اسم) ويتم وضع مسارات جديدة من نقطة البداية إلى هذا الهدف المتوسط ، ومنه إلى نقطة الوجهة. في الوقت نفسه ، يتم التحكم في الطول بشكل إضافي ، ونتيجة لذلك ، يجب أن نحصل على مسار لا يزيد عن ضعف طول أقصر مسار بين نقطتي البداية والنهاية.
كانت النسخة الأولى من الخوارزمية (على اليسار) عاجزة عن العثور على شيء مثير للاهتمام وبناء أقصر طريق. لكن الإصدار مع إضافة جاذبية وسيطة (على اليمين) تضمن
DOT KV-19 في ذلك ، وهو في الزاوية اليمنى السفلية من المسار (في هذا المستوى من التكبير / التصغير غير مرئي ، ولكن الخدمة ستعرضه في القائمة وتسمح لك بالعثور عليه على الخريطة بالنقر فوق الاسم) .

نفس القبو. بشكل عام ، في كوبتشينو ، هناك ما يكفي من هذه الأشياء المتعلقة بالدفاع عن لينينغراد ، حيث كانت هناك الخطوط الدفاعية للمدينة مرت:

بالطبع ، بعيدًا عن أي مشاة سيوافق على إجراء التفاف من أجل بعض غير مهم في رأيه. هذا هو السبب في أن الخدمة تُظهر طول المسار مقارنةً بالأقصر وقائمة مناطق الجذب الموجودة عليها ، ويمكن للمستخدم فقط أن يقرر ما إذا كان مهتمًا بمثل هذا المسار. بالإضافة إلى وجود شريط تمرير يسمح لك بتقليل (أو العكس بالعكس) الحد الأقصى المسموح به للخطاف.
. - «» . . , , . , . «» ( ), , .
. , , . . . . , ( ), , . , — . . . , , .
sightsafari.city( OSM-, ), , . : , , , — .
. , :

. , , , .

. , .

: ( ) « » . , , , .

الخلاصة
-, ( ). , . , ( ), - .
— , , , ( , , ), - . - OSM, - , ( , , 2-3 , ).
UPD: , , , , , , --, , , , , , , . , .
UPD 2: OSM, , ( , ), , . - , ( ) - , ( ).
UPD 3: ,
https://vk.com/public168028574