Hi Andrea,Thanks for your reply again.
I was not able to attach a debugger to the process, however I debugged it with
System.err.print.
Any way, I found that the reason for the NullPointerException is that the
passed feature is nullpublic Object evaluate(Object feature) {
Expression paramsExpression = params.get(0);
int geomId = paramsExpression.evaluate(feature, Integer.class);
....
}I don't know why the feature is null !! I looked into the code of
HeatmapProcess but was not able to find the reason. Could you please help?
My SLD is:
<ogc:Function name="vec:Heatmap">
<ogc:Function name="parameter">
<ogc:Literal>data</ogc:Literal>
</ogc:Function>
<ogc:Function name="parameter">
<ogc:Literal>weightAttr</ogc:Literal>
<ogc:Function name="MyFunction">
<ogc:PropertyName>gtid</ogc:PropertyName>
</ogc:Function>
</ogc:Function>
</ogc:Function>
Regards,Fawzy
--
Securely sent with Tutanota. Claim your encrypted mailbox today!
https://tutanota.com <https://tutanota.com>
27. May 2018 16:01 by andrea.a...@geo-solutions.it
<mailto:andrea.a...@geo-solutions.it>:
> Hi,> I had a cursory look at the heatmap process modifications, they seem
> fine to me (but did not try them).> Suggestion, attach a debugger, stick a
> breakpoint in the process execute method, and see what > expression you're
> really getting, and trace to the source of the issue from there.
> Cheers> Andrea
>
> On Sun, May 27, 2018 at 12:52 PM, <> faw...@tutamail.com
> <mailto:faw...@tutamail.com>> > wrote:
>
>> >> Hi Andrea,
>> Thanks a lot for your reply.
>> It works partially, with a problem.
>> When I do the following, it works:
>> <ogc:Function name="vec:Heatmap">
>> <ogc:Function name="parameter">
>> <ogc:Literal>data</ogc:Literal>
>> </ogc:Function>
>> <ogc:Function name="parameter">
>> <ogc:Literal>weightAttr</ogc:Literal>
>> <ogc:Function name="MyFunction">
>> <ogc:Literal>120</ogc:Literal>
>> </ogc:Function>
>> </ogc:Function>
>> </ogc:Function>
>>
>> Here I'm passing the parameter as a literal value (120), but I need to pass
>> the id field not a literal value, so I did the following, but It doesn't
>> work:
>> <ogc:Function name="vec:Heatmap">
>> <ogc:Function name="parameter">
>> <ogc:Literal>data</ogc:Literal>
>> </ogc:Function>
>> <ogc:Function name="parameter">
>> <ogc:Literal>weightAttr</ogc:Literal>
>> <ogc:Function name="MyFunction">
>> <ogc:PropertyName>gtid</ogc:PropertyName>
>> </ogc:Function>
>> </ogc:Function>
>> </ogc:Function>
>>
>> It gives a NullPointerExeption at the 2nd line of my evaluate function:
>> public Object evaluate(Object feature) {
>> Expression paramsExpression = params.get(0);
>> int geomId = paramsExpression.evaluate(feature, Integer.class);
>> ....
>> }
>>
>> MyFunction works perfectly in other situations, such as the following:
>> <PointSymbolizer>
>> <Graphic>
>> <Mark>
>> <WellKnownName>circle</WellKnownName>
>> <Fill>
>> <CssParameter name="fill">#FF0000</CssParameter>
>> </Fill>
>> </Mark>
>> <Size>
>> <ogc:Function name="MyFunction">
>> <ogc:PropertyName>gtid</ogc:PropertyName>
>> </ogc:Function>
>> </Size>
>> </Graphic>
>> </PointSymbolizer>
>>
>> I've attached the HeatmapProcess.java after modification (all modifications
>> are marked with "CR#temp")
>>
>> Regards,
>> Fawzy
>>
>> --
>> Securely sent with Tutanota. Claim your encrypted mailbox today!
>> https://tutanota.com <https://tutanota.com>
>>
>> 26. May 2018 17:08 by >> andrea.a...@geo-solutions.it
>> <mailto:andrea.a...@geo-solutions.it>>> :
>>
>>
>>> Hi,>>> the current definition of the process only accepts a String:
>>> https://github.com/geotools/geotools/blob/865cc72a90b07841a4c871d1b07fcc8e5defd35b/modules/unsupported/process-feature/src/main/java/org/geotools/process/vector/HeatmapProcess.java#L140
>>>
>>> <https://github.com/geotools/geotools/blob/865cc72a90b07841a4c871d1b07fcc8e5defd35b/modules/unsupported/process-feature/src/main/java/org/geotools/process/vector/HeatmapProcess.java#L140>
>>>
>>> You'll have to modify the process so that it accepts an Expression instead,
>>> and then>>> you should be able to call it like this (completely untested,
>>> mind, I hope it's going to work but I'm not sure):
>>> <ogc:Function name="vec:Heatmap">
>>> <ogc:Function name="parameter">
>>> <ogc:Literal>data</ogc:>>> Literal>
>>> </ogc:Function>
>>> <ogc:Function name="parameter">
>>> <ogc:Literal>weightAttr</ogc:>>> Literal>
>>> <>>> ogc:Function name="yourFunction">>>>
>>> ....>>> </ogc:Function>
>>> </ogc:Function>
>>> </ogc:Function>
>>>
>>> Cheers>>> Andrea
>>>
>>> On Sat, May 26, 2018 at 3:47 PM, <>>> faw...@tutamail.com
>>> <mailto:faw...@tutamail.com>>>> > wrote:
>>>
>>>> >>>> Hi,
>>>> In Geoserver's heat-map, as mentioned in the documentations, I can select
>>>> the weightAtrr field, for example:
>>>>
>>>> <ogc:Function name="vec:Heatmap">
>>>> <ogc:Function name="parameter">
>>>> <ogc:Literal>data</ogc:Literal>
>>>> </ogc:Function>
>>>> <ogc:Function name="parameter">
>>>> <ogc:Literal>weightAttr</ogc:Literal>
>>>> <ogc:Literal>field1</ogc:Literal>
>>>> </ogc:Function>
>>>> </ogc:Function>
>>>>
>>>> My situation is that the weight attribute, that I want to create the
>>>> heat-map depending on it, is not a field of the layer, it's a Geotools
>>>> custom function that I created. This function takes the field id as a
>>>> parameter, and makes some queries according to it, then returns a number.
>>>> For example the function is in the form:
>>>> int GetTheValue(int id)
>>>>
>>>> My question is that how to make this in SLD.
>>>>
>>>> <ogc:Function name="vec:Heatmap">
>>>> <ogc:Function name="parameter">
>>>> <ogc:Literal>data</ogc:Literal>
>>>> </ogc:Function>
>>>> <ogc:Function name="parameter">
>>>> <ogc:Literal>weightAttr</ogc:Literal>
>>>> <!-- call the function here -->
>>>> </ogc:Function>
>>>> </ogc:Function>
>>>>
>>>> Regards,>>>> Fawzy
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Check out the vibrant tech community on one of the world's most
>>>> engaging tech sites, Slashdot.org! >>>> http://sdm.link/slashdot
>>>> <http://sdm.link/slashdot>
>>>> _______________________________________________
>>>> 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#/
>>>> <http://www.ianturton.com/talks/foss4g.html#/>
>>>> - The GeoServer user list posting guidelines: >>>>
>>>> http://geoserver.org/comm/userlist-guidelines.html
>>>> <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
>>>>
>>>> <https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer>
>>>>
>>>>
>>>> Geoserver-users@lists.sourceforge.net
>>>> <mailto:Geoserver-users@lists.sourceforge.net>
>>>> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>>>> <https://lists.sourceforge.net/lists/listinfo/geoserver-users>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>>
>>> Regards,Andrea Aime==GeoServer Professional Services from the experts!
>>> Visit >>> http://goo.gl/it488V <http://goo.gl/it488V>>>> for more
>>> information.==Ing. Andrea Aime @geowolfTechnical LeadGeoSolutions S.A.S.Via
>>> di Montramito 3/A55054 Massarosa (LU)phone: +39 0584 962313fax: +39 0584
>>> 1660272mob: +39 339 8844549>>> http://www.geo-solutions.it
>>> <http://www.geo-solutions.it>>>> http://twitter.com/geosolutions_it
>>> <http://twitter.com/geosolutions_it>>>>
>>> ------------------------------------------------------->>> Con riferimento
>>> alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 -
>>> Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni
>>> circostanza inerente alla presente email (il suo contenuto, gli eventuali
>>> allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i
>>> destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per
>>> errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le
>>> sarei comunque grato se potesse darmene notizia.This email is intended only
>>> for the person or entity to which it is addressed and may contain
>>> information that is privileged, confidential or otherwise protected from
>>> disclosure. We remind that - as provided by European Regulation 2016/679
>>> “GDPR” - copying, dissemination or use of this e-mail or the information
>>> herein by anyone other than the intended recipient is prohibited. If you
>>> have received this email by mistake, please notify us immediately by
>>> telephone or e-mail.
>>>
>>
>
>
>
> --
>
> Regards,Andrea Aime==GeoServer Professional Services from the experts! Visit
> > http://goo.gl/it488V <http://goo.gl/it488V>> for more information.==Ing.
> Andrea Aime @geowolfTechnical LeadGeoSolutions S.A.S.Via di Montramito
> 3/A55054 Massarosa (LU)phone: +39 0584 962313fax: +39 0584 1660272mob: +39
> 339 8844549> http://www.geo-solutions.it <http://www.geo-solutions.it>>
> http://twitter.com/geosolutions_it <http://twitter.com/geosolutions_it>>
> -------------------------------------------------------> Con riferimento alla
> normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento
> generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza
> inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.)
> è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati
> dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a
> cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se
> potesse darmene notizia.This email is intended only for the person or entity
> to which it is addressed and may contain information that is privileged,
> confidential or otherwise protected from disclosure. We remind that - as
> provided by European Regulation 2016/679 “GDPR” - copying, dissemination or
> use of this e-mail or the information herein by anyone other than the
> intended recipient is prohibited. If you have received this email by mistake,
> please notify us immediately by telephone or e-mail.
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
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