GeoServer WMS GetFeatureInfo isteği tarafından döndürülen alanlar nasıl seçilir?


9

PostGIS / GeoServer / OpenLayers yığınına dayalı basit yerel haritalama hizmeti çalıştırıyorum.

Opengeo öğretici aşağıdaki kullanarak OpenLayers tıklama olayları kullanarak WMS GetFeatureInfo çağrı bağladım:

    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"
        );
      });

Cevabı doğru biçimlendirmek için GeoServer'ın FreeMarker şablonlarını kullandım. Sahip olduğum sorun, aldığım yanıt katmandaki tüm alanları döndürüyor olmasıdır.

Kullanıcı ile ilgili olanları seçmenin bir yolu var mı?

Yanıtlar:


7

İyi görünmüyor ( kaynak ):

... GetFeatureInfo [...] bir WMS isteği ve WFS'dir. [...] Davranışlarındaki bir fark, Geoserver'ın her zaman tüm nitelikleri GetFeatureInfo ile göndermesidir, ancak WFS ile niteliklerin listesi istekte verilebilir.

Yalnızca kullanıcının Geoserver aracılığıyla görmek ve sunması gereken özellikleri içeren bir görünüm oluşturabilirsiniz.

Bir alternatif kalıp GetFeatureInfo şablonunu ayarlamak olacaktır .


2
göstermek ya da göstermemek bir şeydir ancak radek sadece bazı alan değerlerini döndürmek ister. Aktarılan veri ve güvenlik yönleri açısından büyük bir fark yaratır.
simo

2
Bu yüzden ilk önerim bir görüş oluşturmaktı.
underdark

VIEW'ları burada kullanma hakkında daha fazla bilgi .
radek



0

Serbest marka şablonlarına koşullu ifadeler ekleyebilirsiniz.

Örneğin, content.ftl dosyanızda yalnızca "YOUR_FIELDNAME" listesine bu tür bir şey ekleyebilirsiniz.

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

Alternatif olarak, bunu yaparak bir alanı hariç tutabilirsiniz:

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

-2

Peki buna ne dersin?

Ayrıca, bunun nitelikleri döndürmesi için (yalnızca katman adı ve özellik kimliği değil), WMS'nizin meta veri bölümüne "ows_include_items" "özellik1, özellik2, ..., özellikN" veya "ows_include_items" "tümü" eklemeniz gerekir. katman eşleme dosyası girişi.

Gönderen: http://trac.osgeo.org/openlayers/wiki/GetFeatureInfo


Ancak Radek, UMN Mapserver yerine Geoserver kullanıyor, bu yüzden harita dosyası yok.
underdark

1
Bunu gördüm. Hiç geoserver kullanmadım ama sanırım meta verileri ayarlamanın bir yolu var, değil mi?
simo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.