FeatureView ऑप्टिमाइज़ेशन

FeatureCollection को FeatureView एसेट के तौर पर एक्सपोर्ट करते समय, पैरामीटर सेट किए जा सकते हैं. इनसे यह तय किया जा सकता है कि किसी दिए गए ज़ूम लेवल (थिनिंग) पर कौनसी सुविधाएं रेंडर की जाएं और ओवरलैप होने वाली सुविधाओं को किस क्रम में लगाया जाए (z-order). ये सेटिंग, FeatureView ऑब्जेक्ट की स्पीड और डिसप्ले की विशेषताओं पर असर डालती हैं. यहां दिए गए सेक्शन में, ऑप्टिमाइज़ेशन पैरामीटर के बारे में बताया गया है. साथ ही, कॉन्सेप्ट डायग्राम का इस्तेमाल करके, इन पैरामीटर के असर के बारे में भी बताया गया है. इन डायग्राम में, मैप टाइल को डैश वाली लाइनों से दिखाया गया है. साथ ही, दिखने वाली सुविधाओं को सॉलिड-लाइन वाले पॉलीगॉन से और हटाए गए (पतले किए गए) क्षेत्रों को डैश वाली लाइनों वाले पॉलीगॉन से दिखाया गया है.

नीचे दिया गया कोड ब्लॉक, FeatureCollection से FeatureView के एक्सपोर्ट का उदाहरण है. इसमें इस पेज पर बताए गए ऑप्टिमाइज़ेशन पैरामीटर हाइलाइट किए गए हैं.

Export.table.toFeatureView({
  collection: fooFc,
  assetId: 'foo-featureview-demo',
  description: 'foo-featureview-demo',
  maxFeaturesPerTile: 1500,
  thinningStrategy: 'HIGHER_DENSITY',
  thinningRanking: ['my-property DESC'],
  zOrderRanking: ['my-property DESC']
});

हर टाइल में ज़्यादा से ज़्यादा सुविधाएं

हर टाइल में ज़्यादा से ज़्यादा सुविधाएं (maxFeaturesPerTile) पैरामीटर से यह तय होता है कि किसी एक मैप टाइल पर कितनी सुविधाएं रेंडर की जाएंगी. यह वैल्यू, ऊपरी सीमा होती है. साथ ही, थिनिंग की रणनीति के आधार पर, यह वैल्यू काफ़ी कम हो सकती है. इस वैल्यू को 1 से 2000 के बीच किसी भी वैल्यू पर सेट किया जा सकता है. ज़्यादा वैल्यू से हर टाइल में ज़्यादा सुविधाएं दिखती हैं. हालांकि, टाइल लोड होने में ज़्यादा समय लगता है.

नीचे दी गई टेबल में देखें कि maxFeaturesPerTile पैरामीटर की वैल्यू कम होने पर, हर मैप टाइल से इंटरसेक्शन करने वाली सुविधाओं की संख्या भी कम हो जाती है. टाइल में ज़्यादा से ज़्यादा एलिमेंट हो सकते हैं, लेकिन इससे ज़्यादा नहीं.

सभी सुविधाएं (संदर्भ के लिए)

maxFeaturesPerTile: 5

हर टाइल में पांच से ज़्यादा सुविधाएं नहीं दिखाई जाती हैं.

maxFeaturesPerTile: 2

हर टाइल में दो से ज़्यादा सुविधाएं नहीं दिखाई जाती हैं.

रैंकिंग में गिरावट

डेटा को पतला करने की रैंकिंग (thinningRanking) पैरामीटर यह कंट्रोल करता है कि डेटा को पतला करने के लिए, ज्यामिति टाइप, सुविधा के साइज़, और सुविधा की प्रॉपर्टी वैल्यू के आधार पर, डेटा को प्राथमिकता कैसे दी जाती है. यह नियमों का एक सेट स्वीकार करता है. इससे, थिनिंग एल्गोरिदम को यह जानकारी मिलती है कि maxFeaturesPerTile तक पहुंचने पर, किन सुविधाओं को दूसरे सुविधाओं से पहले हटाया जाए. हर नियम में एक सुविधा वाली प्रॉपर्टी होती है. इसके बाद, डेटा को क्रम से लगाने का तरीका (बढ़ते क्रम में/ASC या घटते क्रम में/DESC) होता है. एक या उससे ज़्यादा नियम हो सकते हैं. सामान्य सुविधा प्रॉपर्टी के अलावा, दो खास प्रॉपर्टी हैं जिनका इस्तेमाल, डेटा को कम करने की प्राथमिकता तय करने के लिए किया जा सकता है: .geometryType और .minZoomLevel.

  • .geometryType – सुविधाओं को पॉइंट, लाइनों या पॉलीगॉन के तौर पर दिखाता है. इन ज्यामिति टाइप को क्रम से छोटे, मध्यम, और बड़े के तौर पर गिना जाता है, ताकि उन्हें क्रम से लगाया जा सके.
  • .minZoomLevel – मैप का सबसे कम ज़ूम लेवल, जिस पर किसी सुविधा को टाइल में रेंडर किया जा सकता है. इस वैल्यू से कम ज़ूम लेवल पर यह सुविधा नहीं दिखेगी. हालांकि, इस वैल्यू से ज़्यादा या उसके बराबर ज़ूम लेवल पर यह सुविधा दिख सकती है. याद रखें कि ज़ूम लेवल कम होने पर, हर मैप टाइल में ज़्यादा ज़ूम लेवल की तुलना में ज़्यादा भौगोलिक क्षेत्र दिखता है. पॉइंट फ़ीचर को 0 वैल्यू असाइन की जाती है (यह सभी ज़ूम लेवल पर दिखती है). लाइन और पॉलीगॉन ज्यामिति को उनके दायरे (लाइनें) या क्षेत्र (पॉलीगॉन) के आधार पर वैल्यू असाइन की जाती हैं: बड़ी फ़ीचर की .minZoomLevel वैल्यू, छोटी फ़ीचर की तुलना में कम होती है.

रैंकिंग को कम करने के नियमों को स्ट्रिंग या स्ट्रिंग की सूची के तौर पर दिया जा सकता है. इसमें प्रॉपर्टी का नाम और क्रम से लगाने का क्रम, स्पेस से अलग किया जाता है:

// String input format for setting thinning ranking based on 3 rules.
'my-property DESC, .geometryType ASC, .minZoomLevel ASC'

// List of strings input format for setting thinning ranking based on 3 rules.
['my-property DESC', '.geometryType ASC', '.minZoomLevel ASC']

ऊपर दिए गए नियम, थिनिंग एल्गोरिदम को बड़े "my-property" एट्रिब्यूट वाली फ़ीचर को प्राथमिकता देने के लिए निर्देश देते हैं. साथ ही, पहले छोटे "my-property" वैल्यू वाली फ़ीचर को थिन करते हैं. इसके अलावा, छोटे ज्यामिति टाइप वाली फ़ीचर को प्राथमिकता देते हैं. उदाहरण के लिए, लाइनों से पहले पॉलीगॉन और पॉइंट से पहले लाइनों को थिन करते हैं. साथ ही, कम से कम ज़ूम लेवल वाली फ़ीचर को प्राथमिकता देते हैं. जैसे, छोटे पॉलीगॉन के बजाय बड़े पॉलीगॉन और पॉइंट के बजाय लाइनों को थिन करते हैं.

नीचे दी गई टेबल से पता चलता है कि किसी size प्रॉपर्टी के लिए thinningRanking नियम बदलने से, कौनसी सुविधाएं दिखती हैं. हर टाइल ("सभी सुविधाएं" कॉलम) में मौजूद सुविधाओं की कुल संख्या पांच से ज़्यादा है. इसलिए, खींची गई सुविधाओं (thinningRanking: 5 कॉलम) की संख्या को सीमित करने के लिए, थिनिंग लागू की गई है. पहली पंक्ति में, सुविधाओं को size के हिसाब से सबसे बड़ी से सबसे छोटी के क्रम में क्रम से लगाया जाता है. इसका मतलब है कि बड़ी सुविधाओं को छोटी सुविधाओं के मुकाबले प्राथमिकता दी जाती है. सुविधाओं को maxFeaturesPerTile तक पहुंचने तक, साइज़ के हिसाब से घटते क्रम में दिखाया जाता है. दूसरी पंक्ति में, फ़ीचर को बढ़ते हुए साइज़ के हिसाब से क्रम में लगाया जाता है. इसलिए, सबसे छोटी फ़ीचर को पहले, साइज़ के हिसाब से लगाया जाता है. ऐसा तब तक किया जाता है, जब तक maxFeaturesPerTile तक नहीं पहुंच जाता.

thinningRanking सभी सुविधाएं (संदर्भ के लिए) maxFeaturesPerTile: 5

'size DESC'

ज़्यादा size वाली सुविधाओं को प्राथमिकता दें (सबसे पहले कम size वाली सुविधाओं को हटाएं).

'size ASC'

कम size वाली सुविधाओं को प्राथमिकता दें (सबसे पहले ज़्यादा size वाली सुविधाओं को हटाएं)

पतला करने की रणनीति

डेटा को कम करने की रणनीति पैरामीटर (thinningStrategy) का इस्तेमाल, डेटा को कम करने की रैंकिंग (thinningRanking) के साथ किया जाता है. इससे डेटा को एक्सपोर्ट करते समय कम किया जाता है, ताकि रेंडरिंग की परफ़ॉर्मेंस बेहतर हो सके. इसके लिए, दो रणनीतियां इस्तेमाल की जा सकती हैं: HIGHER_DENSITY और GLOBALLY_CONSISTENT. किसी खास ज़ूम लेवल पर डेटा को कम करने के लिए, ज़्यादा डेंसिटी वाली रणनीति का इस्तेमाल करने का मतलब है कि हर टाइल में maxFeaturesPerTile की सीमा के आस-पास डेटा हो सकता है. ऐसा, अन्य टाइल में मौजूद सुविधाओं की रैंक पर ध्यान दिए बिना किया जाता है. दुनिया भर में लागू होने वाली, कम सुविधाओं को दिखाने की रणनीति का मतलब है कि अगर किसी टाइल से कम सुविधाओं को दिखाने की वजह से कोई सुविधा हटाई जाती है, तो सभी टाइल से, उस सुविधा के बराबर या उससे कम कम सुविधाओं को दिखाने की रैंक वाली सभी सुविधाएं हटा दी जाएंगी. भले ही, किसी टाइल में maxFeaturesPerTile की सीमा से ज़्यादा सुविधाएं हों. सुविधाओं की संख्या को ऑप्टिमाइज़ करने के लिए, HIGHER_DENSITY रणनीति का इस्तेमाल करें. साथ ही, सुविधाओं की रैंक को टाइल के बीच में एक जैसा दिखाने के लिए, GLOBALLY_CONSISTENT रणनीति का इस्तेमाल करें.

नीचे दी गई टेबल से पता चलता है कि thinningStrategy में बदलाव करने से, डेटा को पतला करने की प्रोसेस पर क्या असर पड़ता है. इस उदाहरण में, पॉइंट के आकार/रंग का इस्तेमाल करके डेटा को पतला किया गया है. नीले रंग के सर्कल, हरे रंग के स्क्वेयर, और लाल रंग के ट्राएंगल के लिए, सबसे अच्छे से सबसे खराब तक रैंकिंग कम होती जाती है. हर thinningStrategy (HIGHER_DENSITY और GLOBALLY_CONSISTENT) के लिए, maxFeaturesPerTile की तीन अलग-अलग वैल्यू तय की गई हैं: सभी सुविधाएं दिखाने के लिए ज़रूरत के मुताबिक बड़ी संख्या, 10 सुविधाएं, और 9 सुविधाएं.

HIGHER_DENSITY और 10 maxFeaturesPerTile के साथ, सबसे ऊपर बाईं ओर मौजूद टाइल से छह लाल त्रिकोण (रैंकिंग में सबसे कम प्राथमिकता) हटा दिए जाते हैं. साथ ही, सबसे नीचे बाईं ओर मौजूद टाइल से एक लाल त्रिकोण हटा दिया जाता है. HIGHER_DENSITY और 9 maxFeaturesPerTile का इस्तेमाल करने पर, सबसे ऊपर बाईं ओर मौजूद टाइल से सात लाल त्रिकोण और सबसे नीचे बाईं ओर मौजूद टाइल से एक लाल त्रिकोण और एक हरा वर्ग हट जाता है. इन उदाहरणों में, हर टाइल को अलग-अलग थिन किया जाता है. इसके लिए, आस-पास की टाइल में मौजूद फ़ीचर की थिन करने की रैंक को ध्यान में नहीं रखा जाता. डेटा की विशेषताओं के आधार पर, डेटा को कम करने की इस रणनीति की वजह से, आस-पास की मैप टाइल एक-दूसरे से अलग दिख सकती हैं. हालांकि, इससे खींची गई फ़ीचर की संख्या ज़्यादा हो जाती है.

याद रखें कि GLOBALLY_CONSISTENT थिनिंग का मतलब है कि अगर किसी टाइल से थिनिंग की मदद से कोई सुविधा हटाई जाती है, तो उससे मिलती-जुलती या उससे खराब thinningRank सुविधाएं भी हटा दी जाएंगी. maxFeaturesPerTile को 10 पर सेट करने पर, लाल रंग के ट्रायंगल किसी भी टाइल पर नहीं दिखते, क्योंकि सबसे ऊपर बाईं और सबसे नीचे बाईं ओर मौजूद टाइल में लाल रंग का ट्रायंगल पतला हो जाता है. maxFeaturesPerTile को 9 पर सेट करने पर, हरे रंग के स्क्वेयर किसी भी टाइल पर नहीं दिखते, क्योंकि सबसे नीचे बाईं ओर मौजूद टाइल में हरे रंग का स्क्वेयर छोटा हो जाता है. टाइल की संख्या कम करने की इस रणनीति से, टाइल की अलग-अलग दिखने की संभावना कम होती है. हालांकि, इसकी मदद से टाइल की संख्या को maxFeaturesPerTile की सीमा से काफ़ी कम किया जा सकता है.HIGHER_DENSITY

thinningStrategy सभी सुविधाएं (संदर्भ के लिए) maxFeaturesPerTile: 10 maxFeaturesPerTile: 9

'HIGHER_DENSITY'

कम तेज़ी से पतला करना.

टाइल के बीच की दूरी कम करके, सुविधाओं की ज़्यादा संख्या बनाए रखता है.

'GLOBALLY_CONSISTENT'

ज़्यादा तेज़ी से पतला करना.

इंटर-टाइल थिनिंग की मदद से, दुनिया भर में कम से कम थिनिंग रैंक बनाए रखता है.

ज़ेड-ऑर्डर रैंकिंग

z-क्रम की रैंकिंग (zOrderRanking) पैरामीटर, ओवरलैप होने वाली सुविधाओं के क्रम को कंट्रोल करता है. यह कुछ नियमों के हिसाब से काम करता है. इन नियमों से यह तय होता है कि ओवरलैप होने पर, किन सुविधाओं को एक-दूसरे के नीचे/ऊपर दिखाना चाहिए. सुविधा के क्रम को सेट करने के लिए, नियम का लॉजिक और फ़ॉर्मैट, रैंकिंग में कम प्रॉडक्ट दिखाने के लिए इस्तेमाल किए जाने वाले नियम के लॉजिक और फ़ॉर्मैट जैसा ही होता है. ज़्यादा जानकारी के लिए, कृपया वह सेक्शन देखें.

ज़ेड-ऑर्डर रैंकिंग के नियम, स्ट्रिंग या स्ट्रिंग की सूची के तौर पर दिए जा सकते हैं. इसमें प्रॉपर्टी का नाम और क्रम से लगाने का क्रम, स्पेस से अलग किया जाता है:

// String input format for setting z-order ranking based on 3 rules.
'my-property DESC, .geometryType ASC, .minZoomLevel ASC'

// List of strings input format for setting z-order ranking based on 3 rules.
['my-property DESC', '.geometryType ASC', '.minZoomLevel ASC']

ऊपर दिए गए नियमों के मुताबिक, "my-property" की बड़ी वैल्यू वाली फ़ीचर, छोटी वैल्यू वाली फ़ीचर के नीचे दिखनी चाहिए. साथ ही, छोटे ज्यामिति टाइप वाली फ़ीचर, बड़े ज्यामिति टाइप वाली फ़ीचर के नीचे दिखनी चाहिए. उदाहरण के लिए, लाइनों के नीचे पॉइंट और पॉलीगॉन के नीचे लाइनें. इसके अलावा, कम से कम ज़ूम लेवल वाली बड़ी फ़ीचर, ज़्यादा से ज़्यादा ज़ूम लेवल वाली छोटी फ़ीचर के नीचे दिखनी चाहिए.

नीचे दी गई टेबल से पता चलता है कि "साइज़" प्रॉपर्टी के लिए zOrderRanking नियम बदलने से, ओवरलैप होने पर कौनसी सुविधाएं दूसरों के सामने दिखती हैं. पहली पंक्ति में, सुविधाओं को साइज़ के हिसाब से घटते क्रम में लगाया जाता है. इसका मतलब है कि बड़े साइज़ की सुविधाएं, छोटे साइज़ की सुविधाओं के नीचे दिखनी चाहिए. बड़े साइज़ की सुविधाओं को पहले दिखाया जाता है. इसके उलट, दूसरी पंक्ति में, सुविधाओं को साइज़ के हिसाब से, बढ़ते क्रम में लगाया जाता है. इसका मतलब है कि छोटे साइज़ की सुविधाएं, बड़े साइज़ की सुविधाओं के नीचे दिखनी चाहिए. छोटे साइज़ की सुविधाएं पहले दिखाई जाती हैं.

zOrderRanking: 'size DESC'

जिन सुविधाओं के बगल में छोटा size होता है वे उन सुविधाओं के ऊपर दिखती हैं जिनके बगल में बड़ा size होता है.

zOrderRanking: 'size ASC'

जिन सुविधाओं के बगल में बड़ा size होता है वे उन सुविधाओं के बगल में छोटे size वाले आइकॉन से ऊपर दिखती हैं.