I have to read all the WFS features, but it can't be sequential read, because server crashes then using this method (feature count is ~3 000 000). I managed to read in all features with 10 different WFS readers and XML filtering by attribute. Is there any simpler/faster way to pull it? For example it is possible to somehow read first 100k features, then request another 100k and so on?
1. SDE reader reads the polygon feature which will be used for clipping feature types;
2. FEATURE_TYPES public parameter is fetched. It lists what feature types to read;
3. A few Testers and FeatureReaders is used (depending how many layers are in the DB):
If FEATURE_TYPES contains FeatureX When FeatureReader is initiated to read only what FeatureX;
4. All features read are passed on to the Clippee, etc.
Is there any better workflow which reduces Testers and FeatureReaders to be used? I tried using one FeatureReader and query the feature types to read, but FeatureReader always reads all the features and passes only the ones, what are queried. This is not good, considering the different DB features have millions objects and reading all of them is time consuming.
So if DB contains, for exmaple 60 layers, I need to use 60 Testers and 60 FeatureReaders. It's insane.
I'm having a problem using WFS XML filter. I'm trying to read only 6 features from entire dataset and I get the following error:
I wrote query in SQL and need to convert it to XML:
"SAV_ID" IN (21,23,25,55,56,88)
Interestingly when I'm quering only 2 of thoses features, I get no errors. XML filter (working one) for 2 features is:
<ogc:Filter> <ogc:Or> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>21</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>23</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Or> </ogc:Filter>
I tried the following variants (for more than 2 features):
(1) (gives error)
<ogc:Filter> <ogc:Or> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>21</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>23</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>25</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>55</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Or> </ogc:Filter>
(2) (gives error)
<ogc:Filter> <ogc:Or> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>21</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>23</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> </ogc:Or> <ogc:Or> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>25</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>55</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Or> </ogc:Filter>
(3)
<ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:Function name "in"> <ogc:PropertyName>SAV_ID</ogc:PropertyName> <ogc:Literal>21</ogc:Literal> <ogc:Literal>23</ogc:Literal> <ogc:Literal>25</ogc:Literal> <ogc:Literal>55</ogc:Literal> </ogc:Function name "in"> </ogc:PropertyIsEqualTo> </ogc:Filter>
Last one (3) downloads all the features. Any help on that?