Her karo için tekrarlanan çokgen etiketi


10

Uzak bir GeoServer döşemeleri sunmak için bağımsız GeoWebCache kullanıyorum. Benim sorunum poligon etiket çokgen centroid sadece bir kez yerine, sunulan döşemelerin her birine eklenmesi.

Sorunu tartışan bir yazı buldum:
http://osgeo-org.1560.n6.nabble.com/polygon-label-repeated-for-each-tile-td4995203.html

İlk cevap olası bir çözümden bahsetti:

"Sonuç olarak, GeoServer'dan küçük görüntü istemek yerine fayans oluşturma motorunun (GeoWebCache, MapProxy, TileCache) kullanılmasını ve fayans oluşturma motorunun daha sonra karo dilimleme işlemini yapmasını öneriyorum. GeoServer'a daha az istek göndermelisiniz. Birden çok küçük resim yerine 1 büyük resim), bu da toplam döşeme önbellek oluşturma süresini hızlandırır. "

Sorun, GeoWebCache belgelerine başvurarak bunu nasıl bulamadım ve yukarıda belirtilen yazı bunu uygulamak için yol açıklamıyor olmasıdır.

Ben de buldum yazıyı bağlantıları olduğu bir cevap GeoWebCache "parçalı" belgelerine ama benim kod Allready gerekli tüm özellikleri ve birden çok kez yukarı hala etiket gösterileri kullanır:

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

Bir fikri olan var mı?


Kullandığınız SLD dosyasını bize gösterebilir misiniz? Bu, etiketlerin bir WMS katmanında nasıl görüntüleneceğini denetler.
katahdin

Yanıtlar:


16

Aşağıda, etiketi bir unsurun geometrisinin ortasına yerleştiren bir SLD kuralı örneği verilmiştir. Bu, etiketi yerleştirmek için "centroid" adı verilen ogc: İşlevini kullanır. GeoServer belgelerinde SLD işlevleri hakkında daha fazla bilgi edinebilirsiniz ve burada bazı örnekler verilmiştir .

<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>

Ayrıca, SLD Yemek Tarifleri harika bir referanstır. Sizi harekete geçirebilecek bir şey, SLD'deki etiketlerin sıralanmasıdır. Yukarıdaki TextSymbolizer kuralı için, şema tanımına bakarak gerekli sırayı görebilirsiniz. Endişelenme, çok korkutucu değil! Sadece .xsd dosyasında "textsymbolizer" ifadesini arayın, "dizi" etiketini kolayca bulmalısınız. Burada öğe referanslarının örneğimdeki sıra ile eşleştiğini göreceksiniz. (Not: Metin sembolleştiricisinin "dolgu" özelliğini kullanmadım, dolum sadece hale için geçerlidir.)


1

Çarpışma çözünürlüğüne sahip etiketlerin hesaplanması (üst üste binmemesi için etiketleri yoldan çıkarma veya daha düşük öncelikli olanları kaldırma), çizdiğiniz etiketle çarpışabilecek her etiket, onlarla çarpışabilecek her etiket ve daha fazlası hakkında bilgi sahibi olmayı gerektirir. . Bu nedenle, genel olarak, her özelliğe bakarak tüm etiketleri bir kerede hesaplamanız veya haritayı her blokta hesaplanan etiketlerle bloklara bölmeniz gerekir.

Varsayılan olarak, GeoWebCache "metatile" adı verilen 4x4 karo bloğunu kullanır. Önbellekte olmayan bir döşemeyi talep ettiğinizde, GWC tüm metatilleri arka uçtan büyük bir görüntü olarak isteyecek ve daha sonra metatili önbelleğe aldığı döşemelere dilimleyecektir. Katman ayarlarken meta faktörünü ayarlayabilirsiniz. Daha büyük metatatlar daha iyi görünümlü etiketler verir, ancak önbellek kaybının gecikmesini artırır. Arka uçta etiket çarpışma çözünürlüğü kullanmıyorsanız, meta değerini 1x1 olarak ayarlayabilirsiniz.

Ayrıca GWC'ye, kesilecek ekstra alan olan metatilin etrafına bir oluk eklemesini de söyleyebilirsiniz. Etiket çarpışma çözünürlüğünüz varsa, etiket farklı bir şekilde yerleştirilebileceği veya hatta metatil bir sınırın diğer tarafından tamamen çıkarılabileceği için bunu yapmak risklidir. Tamamen yerine sabitlenmiş ve çarpışmayı önlemek için asla bastırılmamış etiketleriniz varsa, etiketlerin karo sınırlarını aşmasına izin vermek için geniş bir oluk kullanabilirsiniz. GeoServer'ın daha büyük bir kutucuk oluşturması gerekeceğinden bunun bir performans maliyeti olacaktır.

Katman yapılandırmasının Döşeme Katmanı sekmesinde metatiling ve oluk ayarlayabilir veya yeni katmanlar için kullanılacak varsayılan, Önbellek Varsayılanları sayfasında ayarlanabilir.

Çakışma çözümlemesini devre dışı bırakmak conflictResolutioniçin stillerinizdeki satıcı seçeneğini kullanabilirsiniz .

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.