سؤال

لدي مشكلة مماثلة ل هذا المشنور.أحتاج إلى عرض ما يصل إلى 1000 مضلع على خريطة Google المضمنة.المضلعات موجودة في قاعدة بيانات SQL، ويمكنني عرض كل منها كملف KML واحد سريعًا باستخدام HttpHandler مخصص (في ASP.NET)، مثل هذا http://alpha.foresttransparency.org/concession.1.kml .

حتى على جهاز التطوير الخاص بي (السريع جدًا)، يستغرق الأمر بعض الوقت لتحميل ما يصل إلى بضع عشرات من الأشكال.إذن سؤالان حقًا:

  1. ما هي الإستراتيجية الجيدة لعرضها كعلامات بدلاً من التراكبات بمجرد تجاوز مستوى تكبير معين؟

  2. هل هناك خوارزمية متاحة للجمهور لتبسيط المضلع (تقليل عدد النقاط) بحيث لا أعرض نقاطًا أكثر مما هو منطقي عند مستوى تكبير معين؟

هل كانت مفيدة؟

المحلول

بالنسبة لسؤالك الثاني:أنت بحاجة إلى خوارزمية التعميم دوغلاس بيكر

نصائح أخرى

بالنسبة لسؤالك الأول، هل يمكنك حساب مساحة مضلع معين، وربط كل مستوى تكبير/تصغير بحد أدنى معين من المساحة، بحيث تختفي المضلعات وتظهر العلامات اعتمادًا على مستوى التكبير/التصغير عند التكبير أو التصغير.

بالنسبة للسؤال الثاني، سأستخدم اقتراح مارك بيسي.

لا أعرف الكثير عن KML، ولكن أعتقد أن الحل المعتاد للسؤال رقم 2 يتضمن التكرار على النقاط، وحذف أي مقاطع خطية تحت حجم معين.سيؤدي هذا إلى بعض التأثيرات "المؤسفة" في بعض الحالات، لكنه سريع وسهل نسبيًا.

أود أن أوصي بشيئين:- حساب ودمج المضلعات الملامسة.يتضمن هذا الكثير من المعالجة والرياضيات الصعبة، لكنني فعلت ذلك حتى أعلم أنه ممكن.- قم بإنشاء التراكب الخاص بك بدلاً من استخدام KML بتنسيق PNG، مع دمجهما في الاقتراح السابق.سيتعين عليك إنشاء عدد كبير من ملفات PNG ولكنها تشتعل بسرعة كبيرة على العميل.

حظ سعيد :)

كنت بحاجة إلى حل لسؤالك رقم 2 منذ قليل، وبعد الاطلاع على عدد قليل من خوارزميات تبسيط الخطوط المتاحة، قمت بإنشاء خوارزمية خاصة بي.

العملية بسيطة ويبدو أنها تعمل بشكل جيد، على الرغم من أنها قد تكون بطيئة بعض الشيء إذا لم تقم بتنفيذها بشكل صحيح:

P[0..n] هل تسمح مجموعة النقاط الخاصة بك T[n] يتم تعريفه على أنه المثلث الذي يتكون من نقاط P[n-1], P[n], P[n+1] Max هو عدد النقاط التي تحاول تقليل هذا الخط إليها.

  1. احسب مساحة كل مثلث ممكن T[1..n-1] في المجموعة.
  2. اختر المثلث T[i] مع أصغر مساحة
  3. إزالة النقطة P[i] لتسطيح المثلث بشكل أساسي
  4. إعادة حساب مساحة المثلثات المتضررة T[n-1], T[n+1]
  5. انتقل إلى الخطوة رقم 2 إذا كان عدد النقاط> Max
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top