首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Geoserver print打印填充了剖面线的面

无法使用Geoserver print打印填充了剖面线的面
EN

Stack Overflow用户
提问于 2017-10-23 16:48:01
回答 1查看 421关注 0票数 1

我有一个用Leaflet构建的叶绿体地图,多亏了插件leaflet-polygon.fill Pattern.js,它显示了填充了阴影的多边形,它工作得很好。

代码语言:javascript
复制
function myStyle (feature)  {
        return {
            fill: 'url(assets/img/image.png)',
            fillColor: '#6677cd',
            weight: 7,
            opacity: 1,
            fillOpacity: 1
        }
    }  

    var layer = new L.geoJson(data,{
        style:myStyle 
    });

我可以使用Geoserver print和leaflet.print插件打印我的地图,但问题是我打印的地图只显示用颜色填充的多边形,而不是我的图案。

我检查了我发送给Geoserver print的spec Json,它显示fill in feature的选项设置得很好:

代码语言:javascript
复制
fill:"url(assets/img/image.png)"  

我尝试了png和svg图像,但两者都不显示。

你知道为什么我打印的地图没有渲染多边形中的阴影吗?

这是我尝试在Geoserver中发送多边形样式时的SLD代码

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" 
xmlns:ogc="http://www.opengis.net/ogc" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0" 
xmlns:xlink="http://www.w3.org/1999/xlink" 
xsi:schemaLocation="http://www.opengis.net/sld 
http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" 
xmlns:se="http://www.opengis.net/se">
  <NamedLayer>
    <se:Name>PSC_Surf</se:Name>
    <UserStyle>
      <se:Name>PSC_Surf</se:Name>
      <se:FeatureTypeStyle>
        <se:Rule>
          <se:Name>Single symbol</se:Name>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#ffff00</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#000001</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel
</se:SvgParameter>
        </se:Stroke>
      </se:PolygonSymbolizer>
      <se:PolygonSymbolizer>
        <se:Fill>
          <se:GraphicFill>
            <se:Graphic>
              <se:Mark>
                    <se:WellKnownName>horline</se:WellKnownName>
                    <se:Stroke>
                      <se:SvgParameter name="stroke">#5c00b8</se:SvgParameter>
                      <se:SvgParameter name="stroke-width">3</se:SvgParameter>
                    </se:Stroke>
                  </se:Mark>
                  <se:Size>11</se:Size>
                  <se:Rotation>
                    <ogc:Literal>45</ogc:Literal>
                  </se:Rotation>
                </se:Graphic>
              </se:GraphicFill>
            </se:Fill>
          </se:PolygonSymbolizer>
        </se:Rule>
      </se:FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

更准确地说,我的问题是为什么Geoserver打印模块没有呈现我在leaflet中调用的填充样式,这要归功于带有样式选项fill的leaflet-polygon.fill Pattern.js:'url(assets/img/image.png)',

对于标记层,我可以调用我的图标,并将它们发送到spec JSON中的Geoserver打印模块:

代码语言:javascript
复制
var iconUrl = icon.options.iconUrl;
style = {externalGraphic: this._getAbsoluteUrl(iconUrl)};

因此,我尝试使用: style = {graphicFill: url(assets/img/image.png)};

但它不起作用

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 16:48:46

GeoServer不会将horline识别为众所周知的形状,因为documented here你需要使用shape://horline

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46885231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档