That looks like an SQL error message - can you turn on GEOTOOLS-DEVELOPER
logging and try again, then post the relevant part of the log file - it
should include the actual SQL being sent to the database.
And if you could mention the type of database and the version of GeoServer
you are using that will help too,


Ian

On Thu, 9 Jun 2022 at 09:16, emmexx <emm...@tiscalinet.it> wrote:

> I want to use WPS Aggregation process to get a pivot table based on some
> attribute for a subset of the features of a layer.
> [
> https://docs.geoserver.org/latest/en/user/services/wps/processes/gs.html#aggregation-process
> ]
>
> I started with a simple gs:CollectGeometries:
>
> <?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0"
> service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns="http://www.opengis.net/wps/1.0.0";
> xmlns:wfs="http://www.opengis.net/wfs";
> xmlns:wps="http://www.opengis.net/wps/1.0.0";
> xmlns:ows="http://www.opengis.net/ows/1.1";
> xmlns:gml="http://www.opengis.net/gml";
> xmlns:ogc="http://www.opengis.net/ogc";
> xmlns:wcs="http://www.opengis.net/wcs/1.1.1";
> xmlns:xlink="http://www.w3.org/1999/xlink";
> xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
> http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd";>
>   <ows:Identifier>gs:CollectGeometries</ows:Identifier>
>   <wps:DataInputs>
>     <wps:Input>
>       <ows:Identifier>features</ows:Identifier>
>       <wps:Reference mimeType="text/xml"
> xlink:href="http://geoserver/wfs"; method="POST">
>         <wps:Body>
>           <wfs:GetFeature service="WFS" version="1.0.0"
> outputFormat="GML2" xmlns:bi="http://bi.org";>
>             <wfs:Query typeName="bi:ways">
>               <ogc:PropertyIsEqualTo>
>                         <ogc:Function name="strMatches">
>                               <ogc:PropertyName>myField</ogc:PropertyName>
>                                 <ogc:Literal>.*\b(131)\b.*</ogc:Literal>
>                         </ogc:Function>
>                         <ogc:Literal>true</ogc:Literal>
>               </ogc:PropertyIsEqualTo>
>               </wfs:Query>
>           </wfs:GetFeature>
>         </wps:Body>
>       </wps:Reference>
>     </wps:Input>
>   </wps:DataInputs>
>   <wps:ResponseForm>
>     <wps:RawDataOutput mimeType="text/xml; subtype=gml/3.1.1">
>       <ows:Identifier>result</ows:Identifier>
>     </wps:RawDataOutput>
>   </wps:ResponseForm>
> </wps:Execute>
>
> It works and I get a gml:MultiLineString with the features of the subset
> as a result.
>
> So I try the aggregate function with a simple filter:
>
> <?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0"
> service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns="http://www.opengis.net/wps/1.0.0";
> xmlns:wfs="http://www.opengis.net/wfs";
> xmlns:wps="http://www.opengis.net/wps/1.0.0";
> xmlns:ows="http://www.opengis.net/ows/1.1";
> xmlns:gml="http://www.opengis.net/gml";
> xmlns:ogc="http://www.opengis.net/ogc";
> xmlns:wcs="http://www.opengis.net/wcs/1.1.1";
> xmlns:xlink="http://www.w3.org/1999/xlink";
> xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
> http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd";>
>   <ows:Identifier>gs:Aggregate</ows:Identifier>
>   <wps:DataInputs>
>     <wps:Input>
>       <ows:Identifier>features</ows:Identifier>
>       <wps:Reference mimeType="text/xml"
> xlink:href="http://geoserver/wfs"; method="POST">
>         <wps:Body>
>           <wfs:GetFeature service="WFS" version="1.0.0"
> outputFormat="GML2" xmlns:bicitalia="http://bi.org";>
>             <wfs:Query typeName="bi:ways">
>                         <ogc:Filter>
>                       <ogc:PropertyIsEqualTo>
>
> <ogc:PropertyName>myField</ogc:PropertyName>
>
> <ogc:Literal>131</ogc:Literal>
>                                          <ogc:Literal>true</ogc:Literal>
>               </ogc:PropertyIsEqualTo>
>                         </ogc:Filter>
>
>               </wfs:Query>
>           </wfs:GetFeature>
>         </wps:Body>
>       </wps:Reference>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>aggregationAttribute</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>length</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>function</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>Sum</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>singlePass</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>false</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>groupByAttributes</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>surface</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>      <wps:Input>
>       <ows:Identifier>groupByAttributes</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>width</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>   </wps:DataInputs>
>   <wps:ResponseForm>
>     <wps:RawDataOutput mimeType="application/json">
>       <ows:Identifier>result</ows:Identifier>
>     </wps:RawDataOutput>
>   </wps:ResponseForm>
> </wps:Execute>
>
> It works as expected.
>
> Now I dare to use strMatches with the aggregate function:
>
> <?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0"
> service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns="http://www.opengis.net/wps/1.0.0";
> xmlns:wfs="http://www.opengis.net/wfs";
> xmlns:wps="http://www.opengis.net/wps/1.0.0";
> xmlns:ows="http://www.opengis.net/ows/1.1";
> xmlns:gml="http://www.opengis.net/gml";
> xmlns:ogc="http://www.opengis.net/ogc";
> xmlns:wcs="http://www.opengis.net/wcs/1.1.1";
> xmlns:xlink="http://www.w3.org/1999/xlink";
> xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
> http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd";>
>   <ows:Identifier>gs:Aggregate</ows:Identifier>
>   <wps:DataInputs>
>     <wps:Input>
>       <ows:Identifier>features</ows:Identifier>
>       <wps:Reference mimeType="text/xml"
> xlink:href="http://geoserver/wfs"; method="POST">
>         <wps:Body>
>           <wfs:GetFeature service="WFS" version="1.0.0"
> outputFormat="GML2" xmlns:bicitalia="http://bi.org";>
>             <wfs:Query typeName="bi:ways">
>                         <ogc:Filter>
>                       <ogc:PropertyIsEqualTo>
>
>                                          <ogc:Function name="strMatches">
>
> <ogc:PropertyName>myField</ogc:PropertyName>
>
> <ogc:Literal>.*\b(131)\b.*</ogc:Literal>
>                                          </ogc:Function>
>                                          <ogc:Literal>true</ogc:Literal>
>               </ogc:PropertyIsEqualTo>
>                         </ogc:Filter>
>
>               </wfs:Query>
>           </wfs:GetFeature>
>         </wps:Body>
>       </wps:Reference>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>aggregationAttribute</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>length</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>function</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>Sum</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>singlePass</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>false</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>     <wps:Input>
>       <ows:Identifier>groupByAttributes</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>surface</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>      <wps:Input>
>       <ows:Identifier>groupByAttributes</ows:Identifier>
>       <wps:Data>
>         <wps:LiteralData>width</wps:LiteralData>
>       </wps:Data>
>     </wps:Input>
>   </wps:DataInputs>
>   <wps:ResponseForm>
>     <wps:RawDataOutput mimeType="application/json">
>       <ows:Identifier>result</ows:Identifier>
>     </wps:RawDataOutput>
>   </wps:ResponseForm>
> </wps:Execute>
>
> Now I get an error:
>
> <wps:ExecuteResponse xml:lang="en" service="WPS"
> serviceInstance="https://bi.org/geoserver/ows?"; version="1.0.0">
> <wps:Process wps:processVersion="1.0.0">
> <ows:Identifier>gs:Aggregate</ows:Identifier>
> <ows:Title>Aggregate</ows:Title>
> <ows:Abstract>
> Computes one or more aggregation functions on a feature attribute.
> Functions include Count, Average, Max, Median, Min, StdDev, and Sum.
> </ows:Abstract>
> </wps:Process>
> <wps:Status creationTime="2022-06-09T07:44:02.223Z">
> <wps:ProcessFailed>
> <ows:ExceptionReport version="1.1.0">
> <ows:Exception exceptionCode="NoApplicableCode">
> <ows:ExceptionText>
> Process failed during execution java.io.IOExceptionERROR: function
> strmatches(character varying, unknown) does not exist Hint: No function
> matches the given name and argument types. You might need to add
> explicit type casts. Position: 108
> </ows:ExceptionText>
> </ows:Exception>
> </ows:ExceptionReport>
> </wps:ProcessFailed>
> </wps:Status>
> </wps:ExecuteResponse>
>
> Why is that? Why does strMatches work with gs:CollectGeometries but not
> with gs:Aggregate?
>
> Any clue?
>
> thank you
>         maxx
>
>
> _______________________________________________
> Geoserver-users mailing list
>
> Please make sure you read the following two resources before posting to
> this list:
> - Earning your support instead of buying it, but Ian Turton:
> http://www.ianturton.com/talks/foss4g.html#/
> - The GeoServer user list posting guidelines:
> http://geoserver.org/comm/userlist-guidelines.html
>
> If you want to request a feature or an improvement, also see this:
> https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer
>
>
> Geoserver-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>


-- 
Ian Turton
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to