प्रत्येक टाइल के लिए बहुभुज लेबल दोहराया गया


10

मैं स्टैंडअलोन जियोवेबचैच का उपयोग रिमोट जियो सेवर से टाइल्स की सेवा के लिए कर रहा हूं। मेरी समस्या यह है कि बहुभुज का लेबल परोसे जाने वाले टाइलों में से हर एक में जुड़ जाता है, बजाय इसके कि केवल एक बार बहुभुज केन्द्रक में।

मुझे एक पोस्ट मिली, जो इस मुद्दे पर चर्चा करती है:
http://osgeo-org.1560.n6.nabble.com/polygon-label-repeated-for-each-tile-td4995203.html

पहले उत्तर में एक संभावित समाधान बताया गया है:

"सब के सब, मैं सुझाव देता हूं कि किसी भी तरह से एक टाइल रेंडरिंग इंजन (GeoWebCache, MapProxy, TileCache) का उपयोग करें, इसके बजाय जियो सेवर से छोटी छवि का अनुरोध करें और टाइल रेंडरिंग इंजन को बाद में टाइल स्लाइसिंग करें। आपको जियोसेवर के लिए कम अनुरोध भेजना होगा () कई छोटी छवियों के बजाय 1 बड़ी छवि), इसलिए यह समग्र टाइल कैश निर्माण समय को गति देता है। "

समस्या यह है कि मुझे यह पता नहीं चल पाया है कि जियो कैश कैश डॉक्यूमेंटेशन का जिक्र कैसे किया जाता है और उपर्युक्त पोस्ट उसे लागू करने का तरीका नहीं बताता है।

मुझे एक जवाब के साथ एक पोस्ट भी मिला जो जियोवेबचैच "टाइलेड" प्रलेखन से लिंक करता है, लेकिन मेरा कोड पहले से ही सभी आवश्यक विशेषताओं का उपयोग करता है और फिर भी लेबल कई बार दिखाता है:

var Layer_1874 = new OpenLayers.Layer.WMS(
    'Grundkort',
    '/wms10.ashx'
    , {
        format: 'image/png',
        srs: 'EPSG:25832',
        layers: 'ballerupkommune_grundkort_bk',
        tiled: true,
        tilesOrigin: '698804,6173460'
    }
    , {
        displayInLayerSwitcher: true,
        isBaseLayer: true,
        transitionEffect: 'resize',
        displayOutsideMaxExtent: true,
        visibility: false
    }
);

किसी को एक विचार है?


क्या आप हमें एसएलडी फ़ाइल दिखा सकते हैं जिसका आप उपयोग कर रहे हैं? यह नियंत्रित करता है कि WMS परत पर लेबल कैसे प्रदर्शित होते हैं।
कटहिनद

जवाबों:


16

नीचे एक SLD नियम का एक उदाहरण दिया गया है जो एक फीचर के ज्यामिति के केंद्र में एक लेबल रखता है। यह लेबल लगाने के लिए "सेंट्रोइड" नामक ओग्यूसी का उपयोग करता है। आप जियोसर्वर डॉक्स में एसएलडी कार्यों के बारे में अधिक पढ़ सकते हैं , और कुछ उदाहरण यहां दिए गए हैं

<sld:Rule>
      <MaxScaleDenominator>5000</MaxScaleDenominator>
      <sld:TextSymbolizer>
        <sld:Geometry>
          <ogc:Function name="centroid">
            <ogc:PropertyName>the_geom</ogc:PropertyName>
          </ogc:Function>
        </sld:Geometry>
        <sld:Label>
          <ogc:PropertyName>LOT_NAME</ogc:PropertyName>
        </sld:Label>
        <sld:Font>
          <sld:CssParameter name="font-family">Arial</sld:CssParameter>
          <sld:CssParameter name="font-size">11</sld:CssParameter>
          <sld:CssParameter name="font-style">normal</sld:CssParameter>
          <sld:CssParameter name="font-weight">bold</sld:CssParameter>
        </sld:Font>
        <sld:LabelPlacement>
          <sld:PointPlacement>
            <sld:AnchorPoint>
              <sld:AnchorPointX>
                <ogc:Literal>0.0</ogc:Literal>
              </sld:AnchorPointX>
              <sld:AnchorPointY>
                <ogc:Literal>0.5</ogc:Literal>
              </sld:AnchorPointY>
            </sld:AnchorPoint>
            <sld:Rotation>
              <ogc:Literal>0</ogc:Literal>
            </sld:Rotation>
          </sld:PointPlacement>
        </sld:LabelPlacement>
        <sld:Halo>
          <sld:Radius>
            <ogc:Literal>1.0</ogc:Literal>
          </sld:Radius>
          <sld:Fill>
            <sld:CssParameter name="fill">#FFFFFF</sld:CssParameter>
          </sld:Fill>
        </sld:Halo>
        <sld:VendorOption name="conflictResolution">true</sld:VendorOption>
        <sld:VendorOption name="goodnessOfFit">0</sld:VendorOption>
        <sld:VendorOption name="autoWrap">60</sld:VendorOption>
      </sld:TextSymbolizer>
    </sld:Rule>

इसके अलावा, SLD रसोई की किताब एक महान संदर्भ है। एक चीज जो आपको यात्रा कर सकती है वह है SLD में टैग का क्रम। ऊपर TextSymbolizer नियम के लिए आप स्कीमा परिभाषा में देख कर आवश्यक आदेश देख सकते हैं। चिंता मत करो, यह बहुत डरावना नहीं है! बस उस .xsd फ़ाइल में "टेक्ससिमबोलिज़र" की खोज करें, आपको आसानी से "अनुक्रम" टैग ढूंढना चाहिए। आप पाएंगे कि तत्व संदर्भ मेरे उदाहरण में क्रम से मेल खाते हैं। (नोट: मैंने टेक्स्ट सिंबल के "फिल" विशेषता का उपयोग नहीं किया है, मेरा भरण हेलो पर लागू होता है।)


1

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

डिफ़ॉल्ट रूप से, GeoWebCache टाइल्स का 4x4 ब्लॉक का उपयोग करता है जिसे "मेटास्टाइल" कहा जाता है। जब आप एक ऐसी टाइल का अनुरोध करते हैं जो कैश में नहीं होती है, तो GWC बैकएंड से एक बड़ी छवि के रूप में संपूर्ण मेटास्टाइल का अनुरोध करेगा और फिर मेटैलिक को टाइल्स में स्लाइस करेगा, जो इसे कैश करता है। एक लेयर सेट करते समय आप मेटैलिक फैक्टर को एडजस्ट कर सकते हैं। बड़े मेटाटाइल्स बेहतर दिखने वाले लेबल देते हैं, लेकिन कैश मिस की विलंबता को बढ़ाते हैं। यदि आप पीछे के छोर पर लेबल टकराव के रिज़ॉल्यूशन का उपयोग नहीं कर रहे हैं, तो आप मेटाटाइलिंग को 1x1 पर सेट कर सकते हैं।

आप GWC को मेटैटाइल के चारों ओर एक नाली जोड़ने के लिए भी कह सकते हैं जो अतिरिक्त स्थान है जो कट जाएगा। ऐसा करना जोखिम भरा है यदि आपके पास लेबल टकराव के समाधान के रूप में एक लेबल अलग तरीके से तैनात किया जा सकता है या यहां तक ​​कि पूरी तरह से एक मेटैलिक सीमा के दूसरी तरफ हटाया जा सकता है। यदि आपके पास लेबल हैं जो पूरी तरह से स्थिति में तय किए गए हैं और कभी भी टकराव से बचने के लिए सुपरिचित नहीं होते हैं, तो आप लेबल को टाइल की सीमाओं को पार करने की अनुमति देने के लिए एक विस्तृत नाली का उपयोग कर सकते हैं। इसमें एक प्रदर्शन लागत होगी क्योंकि जियोसर्वर को एक बड़ी टाइल प्रदान करनी होगी।

आप परत कॉन्फ़िगरेशन के टाइल लेयर टैब पर मेटाटाइलिंग और गटर सेट कर सकते हैं, या नई परतों के लिए उपयोग किए जाने वाले डिफ़ॉल्ट को कैशिंग डिफॉल्ट पृष्ठ पर सेट किया जा सकता है।

संघर्ष समाधान को अक्षम करने के लिए, आप conflictResolutionअपनी शैली में विक्रेता विकल्प का उपयोग कर सकते हैं ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.