एक OpenLayers वेक्टर परत में बिंदु सुविधाओं की अधिकतम संख्या


27

आपके अनुभव में, असामान्य रूप से धीमी गति से चलने से पहले एक OpenLayers वेक्टर परत (नई OpenLayers.Layer.Vector ("Point Layer")) में कितने बिंदु फीचर जोड़े जा सकते हैं?

मेरा उपयोग मामला डेटाबेस तालिका से अंक प्रदर्शित करने के लिए है। उपयोगकर्ता तय कर सकता है कि किस समय सीमा को कल्पना करना है। इसलिए परिणाम बहुत कम से लेकर संभावित 100,000 अंकों तक हो सकता है। मैं एक उचित सीमा लागू करना चाहता हूं और उपयोगकर्ता को चेतावनी देता हूं कि यदि उसकी क्वेरी अधिक सुविधाएँ लौटाएगी।


क्या एक मानक ब्राउज़र का उपयोग किया जा रहा है? आपके द्वारा उपयोग किए जा रहे ब्राउज़र के आधार पर सीमा भिन्न होगी।
डेरेक स्विंगले

ज्यादातर फ़ायरफ़ॉक्स। यह पुराने IE में काम करने की जरूरत नहीं है।
UnderDark

1
एक उपयोगकर्ता को चेतावनी देने के बजाय आप WMS / छवि के रूप में बिंदुओं को वापस करने के लिए वेक्टर डेटा का अनुरोध करने से स्विच कर सकते हैं।
जियोग्राफिका

@geographika: आमतौर पर मैं यही करूंगा। लेकिन उपयोगकर्ता को यह भी तय करना है कि किस डेटाबेस से जुड़ना है। मुझे सभी संभावित डेटाबेस को जानना होगा और उन्हें WMS के माध्यम से उपलब्ध कराना होगा। उनके पास PostGIS भी नहीं है, मैं सिर्फ lat / lon कॉलम लाती हूं।
UnderDark

जवाबों:


38

मेरे पास आपके लिए कोई निश्चित उत्तर नहीं है, लेकिन मैंने एक पृष्ठ एक साथ रखा है जहाँ आप एक OL मानचित्र पर विभिन्न अंकों के साथ खेल सकते हैं: http://derekswingley.com/lab/olpts/


5
डेरेक के लिए 'व्यावहारिक उदाहरण के साथ महान जवाब' होना चाहिए। गति पर निर्भर अंकों में अंतर देखने के लिए अच्छा है।
Mapperz

3
बहुत ही रोचक! यह मुझे जियोइसम के बारे में सोचने पर मजबूर करता है। वैकल्पिक रूप से, इसका उपयोग प्रदर्शन का परीक्षण करने के लिए भी किया जा सकता है: craigmmills.com/geoipsum (मुझे नहीं पता कि क्या कोई बहुभुज संख्या सीमा है)
simo

1
@ So4ne कि गूगल ऐप इंजन साइट किसी बिंदु पर मर गई, वही (लगभग 5 वर्ष पुराना) कोड यहाँ है: derekswingley.com/lab/olpts
डेरेक स्विंगले

1
@nospor फॉलआउट से https, अपडेट और साइट पर वापस आ गया है।
डेरेक स्विंगले

1
@DerekSwingley मैंने अपने विचार के आधार पर अपडेट किए गए नमूनों को USC, MapboxGL JS & OpenLayers 4 medium.com/@ThomasG77// पर बनाया है। मैंने आपके नमूने का श्रेय डाला है
ThomasG77

5

यदि बहुत अधिक फ़ीचर संख्या के कारण प्रदर्शन धीमा हो जाता है, तो इसका मतलब है कि प्रदर्शन करने वाला डेटा ज़ूम स्तर के लिए उपयुक्त नहीं है। आमतौर पर, जब सुविधाएँ घनत्व बहुत अधिक हो जाता है, तो डिस्प्ले अब पठनीय नहीं हो सकता है ( इस उदाहरण को देखें )। यहां तक ​​कि अगर कोई प्रसंस्करण सीमा नहीं थी और सभी डिस्प्ले डिवाइस 0.001 में 1000000000000 सुविधाओं को एक छोटी स्क्रीन पर प्रदर्शित करने में सक्षम थे, तो दृश्य असंभव रहेगा।

Töpfer के मूलांक कानून में कहा गया है कि सुविधा घनत्व एक निरंतर सीमा के अंतर्गत रहना चाहिए जो भी ज़ूम स्तर है। इस समस्या को हल करने और विज़ुअलाइज़ेशन स्केल पर डेटा को अनुकूलित करने का एक तरीका यह है कि इस एक या इस तरह के सामान्यीकरण कार्यों का उपयोग करके इसे बदल दिया जाए ।


इसी विषय पर: gis.stackexchange.com/q/4096/162
julien

2
सच सच। और Openlayers के बारे में, इसे संभालने के लिए क्लस्टर रणनीति का उपयोग करता है। उदाहरण देखें: openlayers.org/dev/examples/strategy-cluster.html
simo

1
मेरे वर्तमान एप्लिकेशन के लिए, मैं बस (GPS) पॉइंट्स को लाइनों (ट्रैक्स) से जोड़ता हूं। यह पहले से ही प्रतिपादन समय में काफी सुधार करता है।
UnderDark

3

मुझे नहीं लगता कि इस प्रश्न का ठोस उत्तर देना संभव नहीं है। रेंडरिंग पॉइंट / पॉलीगॉन पूरी तरह से ब्राउज़र और हार्डवेयर (सीपीयू और मेमोरी) पर निर्भर करते हैं, ओपनलाइयर के साथ नहीं। लेक (बहुभुज) रेंडरिंग में से एक के लिए मुझे ओपनऑलर्स और IE6 की समस्या थी। लेकिन, यह फ़ायरफ़ॉक्स में अच्छी तरह से भरी हुई है। और सबसे अच्छा विकल्प क्रोम के साथ मेमोरी और सीपीयू के उपयोग की निगरानी करना होगा या कुछ उपकरण बेहतर होंगे।


1

दूसरों के रूप में, मेरे पास उस प्रश्न के बारे में कोई जवाब नहीं है, लेकिन बीबीक्स रणनीति लागू करने से आपको केवल आवश्यक डेटा रखने में मदद मिल सकती है क्योंकि यह केवल दिए गए बाउंडिंग बॉक्स के भीतर स्थित सुविधाओं को प्रदर्शित करता है।


1

OpenLayers 6 में, एक WebGL पॉइंट रेंडरर है जो आपको समय-समय पर फ़िल्टरिंग के साथ, हजारों की हजारों सुविधाएँ प्रदान करने की अनुमति देता है। आप आधिकारिक वर्कशॉप के नवीनतम संस्करण को https://openlayers.org/workshop/en/webgl/ पर देख सकते हैं

OpenLayers 2 के साथ, जिसे मैं वास्तव में किसी भी अधिक उपयोग करने की अनुशंसा नहीं करता हूं, स्वीकार्य फ्रेम दर के लिए अधिकतम केवल कुछ सौ विशेषताएं होंगी।


0

मैं एक समान उपयोग के मामले में लड़खड़ा गया, यह सुनिश्चित नहीं था कि यह उपर्युक्त आवश्यकताओं के अनुरूप होगा या नहीं, लेकिन Clusteringओएल 5 में मैंने वही अपनाया है।

शब्दों के रूप में क्लस्टरिंग से पता चलता है कि अंकों का एक समूह लेता है और उन्हें एक ही बिंदु में टॉगल करता है जैसे कि आपके पास विशेष रूप से शहर में 100 अंक हैं, सभी बिंदुओं को ज़ूम के एक बिंदु से एक बिंदु के रूप में दिखाई देगा, 4लेकिन चलो के एक ज़ूम से अलग-अलग बिंदुओं के रूप में। कहते हैं 10तो आप क्या कर सकते हैं जब जूम है 4, तो आप एक के रूप में उन बिंदुओं में शामिल हो सकते क्या करता है यह अंकों की संख्या एक विशेष क्षेत्र में प्रदान करने को कम करने में मदद करता है।

दूसरे शब्दों में, मान लें कि आपके पास मानचित्र पर प्रदान किए जाने वाले 10,000 अंक हैं और वे एक-दूसरे के बहुत करीब हैं, इसलिए आप उनमें से गुच्छों को बना सकते हैं और प्रतिपादन को कम कर सकते हैं और जब उपयोगकर्ता आप में समूहों को तोड़ते रहते हैं। यह सुनिश्चित करेगा कि आपके पास कम प्रतिपादन और बेहतर प्रदर्शन है।

संतोषजनक प्रदर्शन। Openlayers पर क्लस्टरिंग उदाहरणों से लिंक करें


क्या आप कृपया पृष्ठ से जुड़े संक्षिप्त सारांश जोड़ सकते हैं? लिंक समय के साथ टूट सकते हैं, अपना उत्तर बेकार छोड़ देंगे क्योंकि यह अब है।
कांतन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.