能否在GeoServer单个Layer中同时展示点与多边形要素?
单个Layer实现混合几何类型要素展示的方法
不需要创建两个Layer,GeoServer完全支持在单个Layer中同时展示点和多边形要素,核心是你的数据源要支持存储混合几何类型,同时在GeoServer中做好对应配置:
- 数据源要求:使用支持混合几何类型的数据源,比如PostGIS中用
GEOMETRY类型字段(而非限定为POINT或POLYGON)、GeoPackage等;如果是Shapefile,由于格式本身限制,一个文件只能存单一几何类型,这种情况就得拆分文件后创建多个Layer。 - GeoServer图层配置:发布图层时,将要素类型的几何属性设置为通用的
Geometry类型,而非具体的Point或Polygon。 - 样式区分渲染:通过SLD样式针对不同几何类型设置渲染规则,示例如下:
<!-- 点要素渲染规则 --> <Rule> <Name>Point-Rule</Name> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:Function name="geometryType"> <ogc:PropertyName>geom</ogc:PropertyName> </ogc:Function> <ogc:Literal>Point</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PointSymbolizer> <Graphic> <Mark> <WellKnownName>circle</WellKnownName> <Fill><CssParameter name="fill">#FF5733</CssParameter></Fill> </Mark> <Size>7</Size> </Graphic> </PointSymbolizer> </Rule> <!-- 多边形要素渲染规则 --> <Rule> <Name>Polygon-Rule</Name> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:Function name="geometryType"> <ogc:PropertyName>geom</ogc:PropertyName> </ogc:Function> <ogc:Literal>Polygon</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <PolygonSymbolizer> <Fill><CssParameter name="fill">#33FF57</CssParameter></Fill> <Stroke><CssParameter name="stroke">#000000</CssParameter></Stroke> </PolygonSymbolizer> </Rule>
内容的提问来源于stack exchange,提问作者Rafael Sá
相关产品推荐
相关产品推荐

