Geoserver使用OGC过滤器PropertyIsLike无法读取PostGIS Jsonb类型

错误提示:

code="internalEror"Rendering process falled, Layers: boylat shp_ 1 org,postgresq!.ut.PsQLException: ERRoR: function upperjisonb) does not existHint: No function matches the given name and arqument types, You might need to add explicit type castsPosition:447ERROR: function upper(jsonb)does not existHint: No function matches the given name and arqument types, You might need to add explicit type casts.Position:447

解决办法:使用JsonPointer Function函数

//jsonb示例
{
    "name": "city name",
    "description": "the city description",
    "districts": [
            {
                "name": "district1",
                "population": 2000
            },
            {
                "name": "district2",
                "population": 5000
    }]
    "population":
    {
        "average_age": 35,
        "toal": 50000
    }
}

使用方法:

jsonPointer(city, '/name').
jsonPointer(city, '/population/average_age').
jsonPointer(city, '/districts/0/name').

在OGC过滤器中可以这样使用:

<Rule>
    <Name>Cities</Name>
    <ogc:Filter>
        <ogc:PropertyIsEqualTo>
            <ogc:Function name="jsonPointer">
                <ogc:PropertyName>city</ogc:PropertyName>
                <ogc:Literal>/population/average_age</ogc:Literal>
            </ogc:Function>
            <ogc:Literal>35</ogc:Literal>
        </ogc:PropertyIsEqualTo>
    </ogc:Filter>
    <PointSymbolizer>
        <Graphic>
            <Mark>
                <WellKnownName>square</WellKnownName>
                <Fill>
                    <CssParameter name="fill">#FF0000</CssParameter>
                </Fill>
            </Mark>
            <Size>16</Size>   </Graphic>
    </PointSymbolizer>
</Rule>

参考文档:Geoserver官方文档
中文文档

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
GeoServer是一个开源的地理信息系统服务器,它可以用于发布和管理地理数据服务。通过GeoServer的REST API,我们可以使用PostGIS作为数据源来发布图层。 要使用GeoServer REST API发布PostGIS图层,需要进行以下步骤: 1. 首先,确保你已经安装了GeoServerPostGIS,并且它们都正常运行。 2. 在GeoServer中创建一个工作区(Workspace),工作区是一个逻辑容器,用于组织和管理数据。 3. 创建一个数据存储(Data Store),用于连接到PostGIS数据库。在创建数据存储时,需要提供数据库连接信息,包括数据库类型、主机名、端口号、数据库名称、用户名和密码等。 4. 创建一个样式(Style),用于定义图层的渲染方式。可以使用SLD(Styled Layer Descriptor)语言来创建样式。 5. 创建一个图层(Layer),将数据存储和样式关联起来。在创建图层时,需要指定数据存储和样式的名称。 6. 最后,使用GeoServer的REST API来发布图层。可以使用POST请求将图层发布到指定的工作区下。 下面是一个示例的REST API请求,用于发布一个名为"my_layer"的PostGIS图层: ``` POST /rest/workspaces/{workspace_name}/datastores/{datastore_name}/featuretypes { "featureType": { "name": "my_layer", "nativeName": "my_layer", "title": "My Layer", "srs": "EPSG:4326", "enabled": true } } ``` 其中,{workspace_name}是工作区的名称,{datastore_name}是数据存储的名称。在请求体中,需要提供图层的名称、标题、坐标系等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

话与山鬼听

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值