GeoServer WMS GetFeatureInfo अनुरोध द्वारा दिए गए फ़ील्ड का चयन कैसे करें?


9

मैं PostGIS / GeoServer / OpenLayers स्टैक पर आधारित सरल स्थानीय मैपिंग सेवा चला रहा हूं।

Opengeo ट्यूटोरियल के बाद मैंने OpenLayers में क्लिक इवेंट्स को WMS GetFeatureInfo कॉल के साथ जोड़ दिया है:

    map.events.register('click', map, function (e) {
        var url = "http://localhost:1979/geoserver/wms" 
          + "?REQUEST=GetFeatureInfo"
          + "&EXCEPTIONS=application/vnd.ogc.se_xml"
          + "&BBOX=" + map.getExtent().toBBOX()
          + "&X=" + e.xy.x
          + "&Y=" + e.xy.y
          + "&INFO_FORMAT=text/html"
          + "&QUERY_LAYERS=MYDATA:MYLAYER"
          + "&LAYERS=MYDATA:MYLAYER"
          + "&FEATURE_COUNT=5"
          + "&SRS=EPSG:3857"
          + "&STYLES="
          + "&WIDTH=" + map.size.w
          + "&HEIGHT=" + map.size.h;
        window.open(url,
          "getfeatureinfo",
          "location=0,status=0,scrollbars=1,width=800,height=125"
        );
      });

मैंने प्रतिक्रिया को सही ढंग से प्रारूपित करने के लिए जियोसर्वर के फ्रीमकर टेम्प्लेट का उपयोग किया है। मेरे पास समस्या यह है कि मुझे जो प्रतिक्रिया मिलती है, वह सभी क्षेत्रों की परत से मिलती है।

क्या कोई ऐसा तरीका है जो उपयोगकर्ता के लिए प्रासंगिक है?

जवाबों:


7

अच्छा नहीं लगता ( स्रोत ):

... GetFeatureInfo [...] एक WMS अनुरोध और WFS है। [...] उनके व्यवहार में एक अंतर यह है कि जियोसेवर हमेशा GetFeatureInfo के साथ सभी विशेषताओं को भेजता है, लेकिन WFS के साथ विशेषताओं की सूची अनुरोध में दी जा सकती है।

आप एक ऐसा दृश्य बना सकते हैं, जिसमें केवल वह विशेषताएँ हैं जो आपका उपयोगकर्ता चाहता है / जिसे जियोसेवर के माध्यम से देखना और उसकी सेवा करनी चाहिए।

एक विकल्प मर GetFeatureInfo टेम्पलेट को समायोजित करना होगा ।


2
प्रदर्शित करना या प्रदर्शित नहीं करना एक बात है लेकिन रैडेक केवल कुछ फ़ील्ड मानों को वापस करना चाहता है। यह स्थानांतरित डेटा और सुरक्षा पहलुओं के बारे में एक बड़ा अंतर बनाता है।
simo

2
इसलिए मेरा पहला सुझाव एक दृश्य बनाना था।
UnderDark

यहाँ VIEW का उपयोग करने पर अधिक ।
राडेक

7

बस उन फ़ील्ड्स को शामिल न करें जिन्हें आप अपने फ़्रीमार्कर टेम्प्लेट में नहीं चाहते हैं। Http://docs.geoserver.org/trunk/en/user/tutorials/GetFeatureInfo/index.html#custom-templates देखें


अच्छा लिंक, जियोसर्वर साइट पर कुछ वास्तविक अच्छे दस्तावेज हैं - यह उदाहरण मुझे उपयोगी मिला (जो थोड़े बहुत रोमांच के साथ) केवल उन क्षेत्रों को वापस करने के लिए जो मैं चाहता था।
एंडो


5

आप जियोसर्वर प्रॉपर्टीनामे WMS अनुरोध पैरामीटर का उपयोग करके ऐसा कर सकते हैं:

http://docs.geoserver.org/stable/en/user/services/wms/vendor.html#propertyname


मेरे लिए यह सबसे अच्छा उपाय है! 1. बहुत ही सरल! 2. मैं भी एक पूर्ण featureInfo बनाने के लिए अन्य अनुप्रयोगों से संभावना है। टेम्पलेट्स के साथ यह किसी भी अधिक संभव नहीं है! 3. और अंतिम लेकिन कम से कम नेटवर्क ट्रैफ़िक बहुत छोटा नहीं है तो पूरी सुविधा का अनुरोध करें! धन्यवाद!
marcel

0

आप फ्रीडमर टेम्प्लेट में सशर्त विवरण जोड़ सकते हैं।

उदाहरण के लिए अपने content.ftl फ़ाइल में आप केवल "Your_FIELDNAME" सूची में कुछ इस तरह जोड़ सकते हैं।

<#if attribute.name == "YOUR_FIELDNAME">
     <li>${attribute.name}: ${attribute.value}</li>
</#if>

वैकल्पिक रूप से आप ऐसा करके किसी क्षेत्र को बाहर कर सकते हैं:

<#if !attribute.name == "YOUR_FIELDNAME">
     <li>${attribute.name}: ${attribute.value}</li>
</#if>

-2

इस बारे में क्या?

इसके अलावा, इसके लिए विशेषताओं को वापस करने के लिए (और सिर्फ परत नाम और सुविधा आईडी नहीं) आपको "Wows_include_items" "विशेषताओं 1, विशेषता 2, ..., AttnN" या "Wows_include_items" "सभी" को अपने WMS के मेटाडेटा अनुभाग में जोड़ना होगा। परत के नक्शे फ़ाइल प्रविष्टि।

प्रेषक: http://trac.osgeo.org/openlayers/wiki/GetFeatureInfo


लेकिन Radek Geoserver का उपयोग करता है, UMN Mapserver का नहीं, इसलिए कोई मैप फ़ाइल नहीं है।
UnderDark

1
मैंने देखा है। मैंने कभी भी जियोसर्वर का उपयोग नहीं किया है, लेकिन मुझे लगता है कि मेटाडेटा को स्थापित करने का एक तरीका है, नहीं?
simo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.