Символы геосервера по-разному масштабируются в разных CRS - PullRequest
1 голос
/ 02 февраля 2020

Я использую Geoserver и получаю странное поведение с точечными символами через WMS.

Если я запрашиваю изображение с помощью GetMap в EPSG: 27700, я получаю это изображение: Rendering in EPSG:27700

Однако, если я сделаю тот же запрос, используя EPSG: 3857. Я получаю это: Rendering in EPSG:3857

Эти изображения представляют собой группу слоев для отображения контекста, но SLD-код для символа преобразователя (блокирующих кругов) находится здесь:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <NamedLayer>
    <Name></Name>
    <UserStyle>
      <Title>Transformer</Title>
      <FeatureTypeStyle>
        <Rule> 
          <Title>Transformer</Title>
              <MinScaleDenominator>1</MinScaleDenominator>
          <MaxScaleDenominator>1001</MaxScaleDenominator>
          <PointSymbolizer  uom="http://www.opengeospatial.org/se/units/metre">
            <Graphic>
              <Mark>
                <WellKnownName>wkt://MULTIPOLYGON(((0.75 -0.5, 0.748972 -0.539252, 0.745891 -0.578396, 0.740766 -0.617326, 0.733611 -0.655934, 0.724444 -0.694114, 0.713292 -0.731763, 0.700185 -0.768776, 0.685159 -0.805052, 0.668255 -0.840493, 0.649519 -0.875, 0.629003 -0.908479, 0.606763 -0.940839, 0.582859 -0.97199, 0.557359 -1.001848, 0.53033 -1.03033, 0.501848 -1.057359, 0.47199 -1.082859, 0.440839 -1.106763, 0.408479 -1.129003, 0.375 -1.149519, 0.340493 -1.168255, 0.305052 -1.185159, 0.268776 -1.200185, 0.231763 -1.213292, 0.194114 -1.224444, 0.155934 -1.233611, 0.117326 -1.240766, 0.078396 -1.245891, 0.039252 -1.248972, 0 -1.25, -0.039252 -1.248972, -0.078396 -1.245891, -0.117326 -1.240766, -0.155934 -1.233611, -0.194114 -1.224444, -0.231763 -1.213292, -0.268776 -1.200185, -0.305052 -1.185159, -0.340493 -1.168255, -0.375 -1.149519, -0.408479 -1.129003, -0.440839 -1.106763, -0.47199 -1.082859, -0.501848 -1.057359, -0.53033 -1.03033, -0.557359 -1.001848, -0.582859 -0.97199, -0.606763 -0.940839, -0.629003 -0.908479, -0.649519 -0.875, -0.668255 -0.840493, -0.685159 -0.805052, -0.700185 -0.768776, -0.713292 -0.731763, -0.724444 -0.694114, -0.733611 -0.655934, -0.740766 -0.617326, -0.745891 -0.578396, -0.748972 -0.539252, -0.75 -0.5, -0.748972 -0.460748, -0.745891 -0.421604, -0.740766 -0.382674, -0.733611 -0.344066, -0.724444 -0.305886, -0.713292 -0.268237, -0.700185 -0.231224, -0.685159 -0.194948, -0.668255 -0.159507, -0.649519 -0.125, -0.629003 -0.091521, -0.606763 -0.059161, -0.582859 -0.02801, -0.557359 0.001848, -0.53033 0.03033, -0.501848 0.057359, -0.47199 0.082859, -0.440839 0.106763, -0.408479 0.129003, -0.375 0.149519, -0.340493 0.168255, -0.305052 0.185159, -0.268776 0.200185, -0.231763 0.213292, -0.194114 0.224444, -0.155934 0.233611, -0.117326 0.240766, -0.078396 0.245891, -0.039252 0.248972, 0 0.25, 0.039252 0.248972, 0.078396 0.245891, 0.117326 0.240766, 0.155934 0.233611, 0.194114 0.224444, 0.231763 0.213292, 0.268776 0.200185, 0.305052 0.185159, 0.340493 0.168255, 0.375 0.149519, 0.408479 0.129003, 0.440839 0.106763, 0.47199 0.082859, 0.501848 0.057359, 0.53033 0.03033, 0.557359 0.001848, 0.582859 -0.02801, 0.606763 -0.059161, 0.629003 -0.091521, 0.649519 -0.125, 0.668255 -0.159507, 0.685159 -0.194948, 0.700185 -0.231224, 0.713292 -0.268237, 0.724444 -0.305886, 0.733611 -0.344066, 0.740766 -0.382674, 0.745891 -0.421604, 0.748972 -0.460748, 0.75 -0.5)), ((0.75 0.5, 0.748972 0.460748, 0.745891 0.421604, 0.740766 0.382674, 0.733611 0.344066, 0.724444 0.305886, 0.713292 0.268237, 0.700185 0.231224, 0.685159 0.194948, 0.668255 0.159507, 0.649519 0.125, 0.629003 0.091521, 0.606763 0.059161, 0.582859 0.02801, 0.557359 -0.001848, 0.53033 -0.03033, 0.501848 -0.057359, 0.47199 -0.082859, 0.440839 -0.106763, 0.408479 -0.129003, 0.375 -0.149519, 0.340493 -0.168255, 0.305052 -0.185159, 0.268776 -0.200185, 0.231763 -0.213292, 0.194114 -0.224444, 0.155934 -0.233611, 0.117326 -0.240766, 0.078396 -0.245891, 0.039252 -0.248972, 0 -0.25, -0.039252 -0.248972, -0.078396 -0.245891, -0.117326 -0.240766, -0.155934 -0.233611, -0.194114 -0.224444, -0.231763 -0.213292, -0.268776 -0.200185, -0.305052 -0.185159, -0.340493 -0.168255, -0.375 -0.149519, -0.408479 -0.129003, -0.440839 -0.106763, -0.47199 -0.082859, -0.501848 -0.057359, -0.53033 -0.03033, -0.557359 -0.001848, -0.582859 0.02801, -0.606763 0.059161, -0.629003 0.091521, -0.649519 0.125, -0.668255 0.159507, -0.685159 0.194948, -0.700185 0.231224, -0.713292 0.268237, -0.724444 0.305886, -0.733611 0.344066, -0.740766 0.382674, -0.745891 0.421604, -0.748972 0.460748, -0.75 0.5, -0.748972 0.539252, -0.745891 0.578396, -0.740766 0.617326, -0.733611 0.655934, -0.724444 0.694114, -0.713292 0.731763, -0.700185 0.768776, -0.685159 0.805052, -0.668255 0.840493, -0.649519 0.875, -0.629003 0.908479, -0.606763 0.940839, -0.582859 0.97199, -0.557359 1.001848, -0.53033 1.03033, -0.501848 1.057359, -0.47199 1.082859, -0.440839 1.106763, -0.408479 1.129003, -0.375 1.149519, -0.340493 1.168255, -0.305052 1.185159, -0.268776 1.200185, -0.231763 1.213292, -0.194114 1.224444, -0.155934 1.233611, -0.117326 1.240766, -0.078396 1.245891, -0.039252 1.248972, 0 1.25, 0.039252 1.248972, 0.078396 1.245891, 0.117326 1.240766, 0.155934 1.233611, 0.194114 1.224444, 0.231763 1.213292, 0.268776 1.200185, 0.305052 1.185159, 0.340493 1.168255, 0.375 1.149519, 0.408479 1.129003, 0.440839 1.106763, 0.47199 1.082859, 0.501848 1.057359, 0.53033 1.03033, 0.557359 1.001848, 0.582859 0.97199, 0.606763 0.940839, 0.629003 0.908479, 0.649519 0.875, 0.668255 0.840493, 0.685159 0.805052, 0.700185 0.768776, 0.713292 0.731763, 0.724444 0.694114, 0.733611 0.655934, 0.740766 0.617326, 0.745891 0.578396, 0.748972 0.539252, 0.75 0.5)))</WellKnownName>
                <Fill>
                  <CssParameter name="opacity">0</CssParameter>
                </Fill>
                          <Stroke>
            <CssParameter name="stroke">
              <ogc:PropertyName>higher_voltage_colour</ogc:PropertyName>
            </CssParameter>
            <CssParameter name="stroke-width">0.05</CssParameter>
          </Stroke>
              </Mark>
              <Size>1.25</Size>
                <Rotation>
                  <ogc:Mul>
                      <ogc:PropertyName>orientation</ogc:PropertyName>
                      <ogc:Literal>-1</ogc:Literal>
                  </ogc:Mul>
            </Rotation>
            </Graphic>
          </PointSymbolizer>
        </Rule>

      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Похоже, Geoserver не масштабирует символ SVG при рендеринге в EPSG: 3857. Кто-нибудь знает, что здесь происходит и как это исправить?

Редактировать В качестве другого примера, ниже приведен SLD для черной линии над оранжевым блоком, который масштабируется как единичная линия. к параметру - в EPSG это не похоже на масштаб: 3857 либо

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <NamedLayer>
    <Name></Name>
    <UserStyle>
      <Title>Low Voltage Board</Title>
      <FeatureTypeStyle>
        <Rule>
          <Title>Low Voltage Board</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>feat_code</ogc:PropertyName>
              <ogc:Literal>lv_board</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <MinScaleDenominator>1</MinScaleDenominator>
          <MaxScaleDenominator>1001</MaxScaleDenominator>
          <PointSymbolizer  uom="http://www.opengeospatial.org/se/units/metre">
            <Graphic>
              <Mark>
                <WellKnownName>
                    wkt://LINESTRING(0 0, 0 1)
                </WellKnownName>
                <Fill>
                  <CssParameter name="opacity">0</CssParameter>
                </Fill>
                          <Stroke>
            <CssParameter name="stroke">
             #000000
            </CssParameter>
            <CssParameter name="stroke-width">0.1</CssParameter>
          </Stroke>
              </Mark>
              <Size>
                 <ogc:PropertyName>board_length</ogc:PropertyName>
                </Size>
                <Rotation>
                  <ogc:Add>
                  <ogc:Mul>
                      <ogc:PropertyName>orientation</ogc:PropertyName>

                      <ogc:Literal>-1</ogc:Literal>
                  </ogc:Mul>
                    <ogc:Literal>90</ogc:Literal>
                  </ogc:Add>
            </Rotation>
            </Graphic>
          </PointSymbolizer>
        </Rule>

      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>
...