Jody, thank you for answer,
I am not really sure this tutorial is exactly what I need.
To illustrate my problem, I cooked a small example based on
SelectionLab.java (it has nothing to do with selection tool, I just used
SelectionLab.java as a starting point).
Here it is:
http://files.rsdn.ru/81424/SelectionLab.java
Please pay attention to createDefaultStyle() method, where otherRule is
being created.
static method createGeotoolsFilter is what I need. It takes interface
implementing filtering logic (ISimpleFeatureFilter) and with it
constructs dynamic filter (using function) which is passed to MapLayer
using Rule.
And this is what I need - to construct filter, whose filtering logic is
implemented outside.
In other words - I need to construct some sort of filter, which would be
indistinguishable from ordinary geotools filter, but with custom logic
inside.
For the supplied example geotools throws java.lang.RuntimeException:
Unable to find function Fooo.
I would be really gratefull for reference implementation inside my
SelectionLab.java...
Thanks,
Sergey
On 29.06.2011 19:44, Jody Garnett wrote:
Oh I think I can help.
We ended up copying the styles internally (to keep a copy that won't
change). As such the code needs to be able to call FunctionFinder with
"foo" and for that to work you need to register your function with the
system as shown here:
- http://docs.geotools.org/latest/userguide/tutorial/advanced/function.html
The above is an "advanced" tutorial as it involves hooking your code
into geotools; all the basic tutorials just involve using geotools.
--
Jody Garnett
On Wednesday, 29 June 2011 at 10:36 PM, LSA wrote:
Hi All,
Solution offered by Michael worked flawlessly for geotools.2.6.3.
However, for geotools 2.7.0, when such filter:
org.opengis.filter.Filter filter = ff2.equals(foo, ff2.literal(true));
passed to MapLayer in Style in Rule (mixed with some other filters using
filterFactory.and())
this gives the following error:
java.lang.RuntimeException: Unable to find function foo
at
org.geotools.filter.FunctionFinder.findFunction(FunctionFinder.java:103)
Any ideas?
Thanks,
Sergey
On 21.05.2010 6:32, Michael Bedward wrote:
Hi again Sergey,
If you are only going to be using your filter programmatically (rather
than in SLD files) you can cheat a bit and set the string that you are
looking for in the filter function constructor like this...
public class Foo extends FunctionExpressionImpl {
private final String typeName;
public Foo(String typeName) {
super("foo");
this.typeName = typeName;
}
@Override
public int getArgCount() {
return 0;
}
@Override
public Object evaluate(Object feature) {
return
(((SimpleFeature)feature).getID().matches(String.format("%s\\.\\d+",
typeName)));
}
}
Then you can use it to create a Filter like this...
FFilterFactory2 ff2 = CommonFactoryFinder.getFilterFactory2(null);
org.opengis.filter.expression.Function foo = new Foo("some_name");
org.opengis.filter.Filter filter = ff2.equals(foo, ff2.literal(true));
Michael
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously
valuable.
Why? It contains a definitive record of application performance,
security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Geotools-gt2-users mailing list
Geotools-gt2-users@lists.sourceforge.net
<mailto:Geotools-gt2-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Geotools-gt2-users mailing list
Geotools-gt2-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users