मैपसेवर का उपयोग करके पूरी तरह से पारदर्शी भरने के साथ बहुभुज को कैसे रंग दें?


11

क्या बहुभुजों को भरना संभव है ताकि वे मैपस्वर में पूरी तरह से पारदर्शी हों? मैं एक काला बैकग्राउंड रखना चाहता हूं जो थोड़ा अपारदर्शी हो, और जहां भी कोई बहुभुज हो, मैं चाहता हूं कि वह बिना किसी फिल के पूरी तरह से स्पष्ट हो। मैंने निम्नलिखित तरीके से अपनी पृष्ठभूमि निर्धारित की:

   IMAGECOLOR     0 0 0
   TRANSPARENT OFF

मैंने एक वर्ग बनाने की कोशिश की है जो बहुभुज को भरने के लिए सफेद है, और TRANSPARENCY0 - 100 से मानों का उपयोग करके अस्पष्टता के साथ प्रयोग किया जाता है, लेकिन इसका परिणाम स्पष्ट बहुभुज में नहीं होता है:

CLASS
      NAME "light"  
      EXPRESSION ([max_cost] == 2000)     
      STYLE       
        OUTLINECOLOR 255 255 255
        COLOR 255 255 255
        SIZE       1
        WIDTH      2.0        
      END
END 

यह निम्न प्रकार की छवि में परिणाम है:

यहाँ छवि विवरण दर्ज करें

बहुभुज के बजाय एक सफेद भराव; मैं चाहता हूं कि इसमें कोई रंग न हो। इस रंग को परिभाषित करने के लिए मुझे एक सुझाव ऑनलाइन मिला:

COLOR -1 -1 -1

लेकिन यह भी काम नहीं किया। प्रलेखन के इस भाग में, निम्नलिखित वर्णित है:

"PALETTE = / path / to / palette.txt" का उपयोग उस परम पथ को परिभाषित करने के लिए किया जाता है जहां पैलेट रंग मिल सकते हैं। इस फ़ाइल में rg, r, g, b, r, g, b, r, g, b, के लिए 256 प्रविष्टियाँ होनी चाहिए, RGBA imagemodes के लिए एक चौगुनी है। अपेक्षित प्रारूप प्रति पंक्ति एक ट्रिपल (या चौगुनी) है, प्रत्येक मान अल्पविराम द्वारा अलग किया जाता है, और एक पंक्ति में प्रत्येक ट्रिपल / चौगुनी। यदि आप पैलेट के साथ पारदर्शिता का उपयोग करना चाहते हैं, तो पैलेट फ़ाइल में इन दो रंगों का होना जरूरी है: 0,0,0,0 और 255,255,255,255।

इसे पढ़ने के बाद, मैंने भी प्रयोग करने की कोशिश की COLOR 0 0 0 0लेकिन यह एक त्रुटि फेंकता है:

अनजान पहचानकर्ता। पासिंग त्रुटि (0) :( लाइन 71)

मुझे समझ नहीं आ रहा है कि मैं एक परिभाषित रंग का संदर्भ कैसे दूं PALETTE=/path/to/palette.txtलेकिन यह इसे प्राप्त करने का एक संभव तरीका लगता है।


सिरदर्द से बचने का एक तरीका पॉलीगॉन को लाइनों में परिवर्तित करना हो सकता है।
नाद्या

मैं इस तरह से बहुभुज का कोई भरण कैसे कर सकता हूं?
djq

2
मेरा मतलब है, किसी भी GIS सॉफ़्टवेयर का उपयोग करके बहुभुज की रूपरेखा का प्रतिनिधित्व करने वाली रेखा आकृति बनाने के लिए, और इन पंक्तियों को Polygons के बजाय Mapserver में जोड़ें। लाइनों में बिल्कुल नहीं भरा जा सकता है।
नाद्या

मुझे इस बात से कोई आपत्ति नहीं है कि लाइनें दिखाई देती हैं या नहीं; मैं सिर्फ एक स्पष्ट बहुभुज भरना चाहता हूं।
djq

1
बहुभुज को लाइनों में बदलने की आवश्यकता नहीं है - आप बहुभुज ज्यामिति के लिए MAP फ़ाइल में परत के लिए 'TYPE लाइन' को भी परिभाषित कर सकते हैं
user1702401

जवाबों:


4

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

आरएफसी का वर्णन करता है कि वे क्या करते हैं और वे कैसे किया जा सकता है। आपके उत्तर को पढ़कर ऐसा लगता है कि आप जिस 'कीहोल ’प्रभाव की तलाश कर रहे हैं उसे प्राप्त करने के लिए मास्क की परत का उपयोग कर सकते हैं।

मुझे यकीन नहीं है कि अगर इस सुविधा ने इसे 6.2 में बनाया है जो कुछ हफ्ते पहले जारी किया गया था।


4

तो, आप निम्न पृष्ठभूमि को देखने के लिए अपने पारदर्शी बहुभुज द्वारा काली पृष्ठभूमि को "घुसना" करना चाहते हैं। मुझे यकीन नहीं है कि यह MapServer के साथ संभव है, लेकिन मैं एक और चाल सुझा सकता हूं।

आप किसी भी GIS सॉफ़्टवेयर का उपयोग करके अपने पूरे क्षेत्र को कवर कर सकते हैं और यहां तक ​​कि अधिक विस्तारित एक बहुत बड़ा बहुभुज बना सकते हैं। फिर आप इस क्षेत्र बहुभुज से अपने बहुभुजों को मिटा सकते हैं, और फिर इस पवित्र बहुभुज को आप मैप्सएवर पर रख सकते हैं और इसे काले रंग की पृष्ठभूमि के बजाय काला कर सकते हैं। आपके बहुभुज के अनुरूप छेद "पारदर्शी" होने जा रहे हैं।


1

मेरे पास अपनी .map फ़ाइल में ये लाइनें थीं और 100 से कम पारदर्शिता काम कर रही थी।

  LAYER 
    NAME         core_areas
    DATA         core_areas.shp
    STATUS       ON
    TYPE         POLYGON
    TRANSPARENCY 100
    SIZEUNITS pixels
    PROJECTION
       "init=epsg:32629"
    END # projection
    CLASS
      STYLE
        COLOR        20 150 90
        OUTLINECOLOR 7 56 41
        WIDTH        1
      END # STYLE
    NAME "Core areas"
    END # CLASS
  END # Layer

आशा है ये मदद करेगा।


क्या इसका परिणाम पूरी तरह से पारदर्शी बहुभुज में था? मैंने TRANSPARENCY0 - 100 के मानों के साथ प्रयोग करने की कोशिश की और यह सिर्फ अस्पष्टता को समायोजित करने के लिए लग रहा था। मुझे एहसास है कि यह मेरे प्रश्न में स्पष्ट रूप से स्पष्ट नहीं था - मैंने इसे संशोधित किया।
djq

तो, आप बहुभुज की रूपरेखा और सब कुछ पारदर्शी होना चाहते हैं, है ना? मैंने शायद गलत समझा और सामान्य पारदर्शिता का सुझाव दिया।
नाद्या

दोहरे भ्रम के लिए खेद है; बस स्पष्ट बहुभुज भरें; लाइनें मायने नहीं रखतीं।
djq

1
@djq TransPARENCY को 5.0 संस्करण में हटा दिया गया था। Layer OPACITY उपयोग करने के लिए सही गुण है।
डेविड डेफ

1

नीचे एक नमूना छवि है जो पारदर्शी मुखौटा परत दिखा रही है। यदि आप मास्क को बहुत बड़ा बनाते हैं, तो आपके उपयोगकर्ता को बाहरी किनारों पर ध्यान नहीं जाएगा। @Nadya ने जो सुझाव दिया है, उसके समान: आप कर सकते हैं:

  1. एक बड़ा आयताकार बहुभुज बनाएँ
  2. "कट-आउट" में से प्रत्येक के लिए बहुभुज बनाएं
  3. बड़े से छोटे बहुभुजों को घटाएं (QGIS में अंतर उपकरण इसके लिए अच्छी तरह से काम करता है)

पारदर्शी मुखौटा

इस बिंदु पर आपके पास एक तैयार मुखौटा होगा। हालांकि, यदि आप कट-आउट रिक्त स्थान पर लेबल जोड़ना चाहते हैं, तो आपको मास्क में छोटे पॉलीगॉन को (एक यूनियन टूल का उपयोग करके) जोड़ना होगा। फिर, Mapserver में एक SLD फ़ाइल के साथ, आप मास्क को पारदर्शी ग्रे के रूप में स्टाइल कर सकते हैं, और कट-आउट को पूरी तरह से पारदर्शी स्टाइल कर सकते हैं, और वहां लेबल लगा सकते हैं। यहाँ एक नमूना SLD फ़ाइल है (यह जियोसर्वर के लिए बनाया गया था):

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
  <NamedLayer>
    <Name>yards</Name>
    <UserStyle>
      <Name>yards</Name>
      <Title>Polygon Style</Title>
      <FeatureTypeStyle>
        <Name>name</Name>
        
        <Rule>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>TYPE</ogc:PropertyName>
              <ogc:Literal>outer</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#555555</CssParameter>
              <CssParameter name="fill-opacity">0.5</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke-width">0</CssParameter>
            </Stroke>
          </PolygonSymbolizer>  
        </Rule>
        
        <Rule>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>TYPE</ogc:PropertyName>
              <ogc:Literal>inner</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill">#555555</CssParameter>
              <CssParameter name="fill-opacity">0</CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-opacity">0</CssParameter>
              <CssParameter name="stroke-width">0</CssParameter>
            </Stroke>
          </PolygonSymbolizer>  
        </Rule>
        
        <Rule>
          <MinScaleDenominator>10000</MinScaleDenominator>
          <TextSymbolizer>
            <Geometry>
              <ogc:Function name="centroid">
                <ogc:PropertyName>the_geom</ogc:PropertyName>
              </ogc:Function>
            </Geometry>
            <Label>
              <ogc:PropertyName>SITE</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Arial</CssParameter>
              <CssParameter name="font-size">11</CssParameter>
              <CssParameter name="font-style">normal</CssParameter>
              <CssParameter name="font-weight">bold</CssParameter>
            </Font>
            <LabelPlacement>
              <PointPlacement>
                <AnchorPoint>
                  <AnchorPointX>
                    <ogc:Literal>0.0</ogc:Literal>
                  </AnchorPointX>
                  <AnchorPointY>
                    <ogc:Literal>0.5</ogc:Literal>
                  </AnchorPointY>
                </AnchorPoint>
                <Rotation>
                  <ogc:Literal>0</ogc:Literal>
                </Rotation>
              </PointPlacement>
            </LabelPlacement>
            <Halo>
              <Radius>
                <ogc:Literal>1</ogc:Literal>
              </Radius>
              <Fill>
                <CssParameter name="fill">#FFFFFF</CssParameter>
              </Fill>
            </Halo>
            <VendorOption name="conflictResolution">true</VendorOption>
            <VendorOption name="goodnessOfFit">0</VendorOption>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

ध्यान दें कि पॉलीगॉन को ठीक से काम करने के लिए "आंतरिक" या "बाहरी" मूल्यों के साथ "TYPE" संपत्ति की आवश्यकता होगी।


आपके उत्तर के लिए धन्यवाद - क्या भूगोल के लिए एसएलडी सब से संबंधित है? मैं इसके और MapServer के बीच समानता नहीं देखता।
djq

Mapserver SLD का भी उपयोग कर सकता है। यहाँ एक उदाहरण है, और यहाँ मानचित्रकार के लिए SLD पर डॉक्स दिए गए हैं। एसएलडी एक ओजीसी मानक है, लेकिन, अफसोस, इसे ठीक उसी तरह से लागू नहीं किया जाता है, जैसा कि जियोसर्वर और मैपसेवर में होता है। हालांकि, मैं काम करने के लिए ऊपर दिए गए उदाहरण की अपेक्षा करता हूं - यहां तक ​​कि फ़िल्टर भी ।
कटहदीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.