Quantcast

wfs-ng offset support doesn't seem to work?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

wfs-ng offset support doesn't seem to work?

Meine Toonen

Dear all,

I try to retrieve features using the WFS-NG module. We do this in batches of 10 to show it in a table-like grid, and we support paging. With the old module this worked: we implemented the "paging"  ourselves when the capabilities showed it didn't support an offset. With the new module, I encounter some weird behavior: according to the querycapabilities it supports offset (link).
The first 10 (ranging from index 0 - 9) work fine, but the second 10 (ranging from index 10 - 19) yields no result.

The comments say that offset is supported through sorting (in the capabilities the sorting is supported through a SortedFeatureReader). But upon inspecting the retrieval of features through the reader, it doesn't use the SortedFeatureReader (the call to canSort() is true: link).


The query to the featuresource is:
  feature type: http://flamingo4.b3p.nl/geoserver/Test_omgeving:Test_omgeving:cbs_gemeente_2014
   filter: [Filter.INCLUDE]
   [properties: GM_CODE, GM_NAAM]
   [sort by: GM_CODE ASCENDING]

MaxFeatures is 10
StartIndex is 10



Any idea what I'm doing wrong? Or did I encounter a bug (if so, I'm happy to supply a patch if someone can point me in the right direction)?

-- 
Met vriendelijke groet,
 

Meine Toonen
B3Partners BV
Tel: 030 214 2083

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: wfs-ng offset support doesn't seem to work?

Ian Turton
That does look like a bug!

I tried the following with a local geoserver 

    SimpleFeatureSource source = datastore.getFeatureSource(name);

for (int i = 0; i < 2; i++) {
      int count = 0;
          Query query = new Query();
    query.setSortBy(new SortBy[] { ff.sort("STATE_NAME", SortOrder.DESCENDING) });
    query.setStartIndex(i);
    query.setMaxFeatures(10);
    
      try (SimpleFeatureIterator itr = source.getFeatures(query).features()) {

        while (itr.hasNext()) {
          SimpleFeature feature = itr.next();

          System.out.println(i+" "+(count++) + " " + feature.getAttribute("STATE_NAME"));

        }
      }
    }

And get 

0 0 Illinois
0 1 District of Columbia
0 2 Delaware
0 3 West Virginia
0 4 Maryland
0 5 Colorado
0 6 Kentucky
0 7 Kansas
0 8 Virginia
0 9 Missouri
1 0 Illinois
1 1 District of Columbia
1 2 Delaware
1 3 West Virginia
1 4 Maryland
1 5 Colorado
1 6 Kentucky
1 7 Kansas
1 8 Virginia
1 9 Missouri

which is neither offset or sorted!

I'll take a look tomorrow and see if anything pops out.

Ian

On 16 February 2017 at 15:56, Meine Toonen <[hidden email]> wrote:

Dear all,

I try to retrieve features using the WFS-NG module. We do this in batches of 10 to show it in a table-like grid, and we support paging. With the old module this worked: we implemented the "paging"  ourselves when the capabilities showed it didn't support an offset. With the new module, I encounter some weird behavior: according to the querycapabilities it supports offset (link).
The first 10 (ranging from index 0 - 9) work fine, but the second 10 (ranging from index 10 - 19) yields no result.

The comments say that offset is supported through sorting (in the capabilities the sorting is supported through a SortedFeatureReader). But upon inspecting the retrieval of features through the reader, it doesn't use the SortedFeatureReader (the call to canSort() is true: link).


The query to the featuresource is:
  feature type: http://flamingo4.b3p.nl/geoserver/Test_omgeving:Test_omgeving:cbs_gemeente_2014
   filter: [Filter.INCLUDE]
   [properties: GM_CODE, GM_NAAM]
   [sort by: GM_CODE ASCENDING]

MaxFeatures is 10
StartIndex is 10



Any idea what I'm doing wrong? Or did I encounter a bug (if so, I'm happy to supply a patch if someone can point me in the right direction)?

-- 
Met vriendelijke groet,
 

Meine Toonen
B3Partners BV
Tel: 030 214 2083

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users




--
Ian Turton

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: wfs-ng offset support doesn't seem to work?

Ian Turton
I take that back - I was still using an old wfs rather than wfs-ng!

So with one change to the previous code change - query.setMaxFeatures(10+i);

and it works fine - the trick seems to be that MaxFeatures is taken to be an absolute count rather than a number of features to return.

As to whether that's a bug or a documentation bug I'll need to check my WFS spec tomorrow.

Ian

PS all my tests so far have been with WFS 1.0.0 


On 16 February 2017 at 17:32, Ian Turton <[hidden email]> wrote:
That does look like a bug!

I tried the following with a local geoserver 

    SimpleFeatureSource source = datastore.getFeatureSource(name);

for (int i = 0; i < 2; i++) {
      int count = 0;
          Query query = new Query();
    query.setSortBy(new SortBy[] { ff.sort("STATE_NAME", SortOrder.DESCENDING) });
    query.setStartIndex(i);
    query.setMaxFeatures(10);
    
      try (SimpleFeatureIterator itr = source.getFeatures(query).features()) {

        while (itr.hasNext()) {
          SimpleFeature feature = itr.next();

          System.out.println(i+" "+(count++) + " " + feature.getAttribute("STATE_NAME"));

        }
      }
    }

And get 

0 0 Illinois
0 1 District of Columbia
0 2 Delaware
0 3 West Virginia
0 4 Maryland
0 5 Colorado
0 6 Kentucky
0 7 Kansas
0 8 Virginia
0 9 Missouri
1 0 Illinois
1 1 District of Columbia
1 2 Delaware
1 3 West Virginia
1 4 Maryland
1 5 Colorado
1 6 Kentucky
1 7 Kansas
1 8 Virginia
1 9 Missouri

which is neither offset or sorted!

I'll take a look tomorrow and see if anything pops out.

Ian

On 16 February 2017 at 15:56, Meine Toonen <[hidden email]> wrote:

Dear all,

I try to retrieve features using the WFS-NG module. We do this in batches of 10 to show it in a table-like grid, and we support paging. With the old module this worked: we implemented the "paging"  ourselves when the capabilities showed it didn't support an offset. With the new module, I encounter some weird behavior: according to the querycapabilities it supports offset (link).
The first 10 (ranging from index 0 - 9) work fine, but the second 10 (ranging from index 10 - 19) yields no result.

The comments say that offset is supported through sorting (in the capabilities the sorting is supported through a SortedFeatureReader). But upon inspecting the retrieval of features through the reader, it doesn't use the SortedFeatureReader (the call to canSort() is true: link).


The query to the featuresource is:
  feature type: http://flamingo4.b3p.nl/geoserver/Test_omgeving:Test_omgeving:cbs_gemeente_2014
   filter: [Filter.INCLUDE]
   [properties: GM_CODE, GM_NAAM]
   [sort by: GM_CODE ASCENDING]

MaxFeatures is 10
StartIndex is 10



Any idea what I'm doing wrong? Or did I encounter a bug (if so, I'm happy to supply a patch if someone can point me in the right direction)?

-- 
Met vriendelijke groet,
 

Meine Toonen
B3Partners BV
Tel: 030 214 2083

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users




--
Ian Turton



--
Ian Turton

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: wfs-ng offset support doesn't seem to work?

Meine Toonen

That was it! Thanks!

Met vriendelijke groet,
 

Meine Toonen
B3Partners BV
Tel: 030 214 2083
On 16-02-17 18:48, Ian Turton wrote:
I take that back - I was still using an old wfs rather than wfs-ng!

So with one change to the previous code change - query.setMaxFeatures(10+i);

and it works fine - the trick seems to be that MaxFeatures is taken to be an absolute count rather than a number of features to return.

As to whether that's a bug or a documentation bug I'll need to check my WFS spec tomorrow.

Ian

PS all my tests so far have been with WFS 1.0.0 


On 16 February 2017 at 17:32, Ian Turton <[hidden email]> wrote:
That does look like a bug!

I tried the following with a local geoserver 

    SimpleFeatureSource source = datastore.getFeatureSource(name);

for (int i = 0; i < 2; i++) {
      int count = 0;
          Query query = new Query();
    query.setSortBy(new SortBy[] { ff.sort("STATE_NAME", SortOrder.DESCENDING) });
    query.setStartIndex(i);
    query.setMaxFeatures(10);
    
      try (SimpleFeatureIterator itr = source.getFeatures(query).features()) {

        while (itr.hasNext()) {
          SimpleFeature feature = itr.next();

          System.out.println(i+" "+(count++) + " " + feature.getAttribute("STATE_NAME"));

        }
      }
    }

And get 

0 0 Illinois
0 1 District of Columbia
0 2 Delaware
0 3 West Virginia
0 4 Maryland
0 5 Colorado
0 6 Kentucky
0 7 Kansas
0 8 Virginia
0 9 Missouri
1 0 Illinois
1 1 District of Columbia
1 2 Delaware
1 3 West Virginia
1 4 Maryland
1 5 Colorado
1 6 Kentucky
1 7 Kansas
1 8 Virginia
1 9 Missouri

which is neither offset or sorted!

I'll take a look tomorrow and see if anything pops out.

Ian

On 16 February 2017 at 15:56, Meine Toonen <[hidden email]> wrote:

Dear all,

I try to retrieve features using the WFS-NG module. We do this in batches of 10 to show it in a table-like grid, and we support paging. With the old module this worked: we implemented the "paging"  ourselves when the capabilities showed it didn't support an offset. With the new module, I encounter some weird behavior: according to the querycapabilities it supports offset (link).
The first 10 (ranging from index 0 - 9) work fine, but the second 10 (ranging from index 10 - 19) yields no result.

The comments say that offset is supported through sorting (in the capabilities the sorting is supported through a SortedFeatureReader). But upon inspecting the retrieval of features through the reader, it doesn't use the SortedFeatureReader (the call to canSort() is true: link).


The query to the featuresource is:
  feature type: http://flamingo4.b3p.nl/geoserver/Test_omgeving:Test_omgeving:cbs_gemeente_2014
   filter: [Filter.INCLUDE]
   [properties: GM_CODE, GM_NAAM]
   [sort by: GM_CODE ASCENDING]

MaxFeatures is 10
StartIndex is 10



Any idea what I'm doing wrong? Or did I encounter a bug (if so, I'm happy to supply a patch if someone can point me in the right direction)?

-- 
Met vriendelijke groet,
 

Meine Toonen
B3Partners BV
Tel: 030 214 2083

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users




--
Ian Turton



--
Ian Turton


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GeoTools-GT2-Users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
Loading...