Argh...  that code snippet for the CORRECT use of spatial constraints
should read:

  query = new SeQuery(conn, columns, construct);
  query.prepareQuery();
  query.setSpatialConstraints(...);

And agreed, it seems like it's unlikely that WFS alone uses a different
call order.  As you say, it may be that the query is being formulated in a
different way (e.g. perhaps the WFS BBOX filter is not correctly converted
to an ArcSDE spatial constraint - although it seems likely that WMS also
uses a BBOX filter).

If a count is needed (yuck!) then I would hope that the same query is used
as to retrieve the actual data - and then they should be be fast if the
query uses the spatial constraint correctly.  But there is a bunch of logic
in the ArcSDE code around counts, so perhaps something else is going on.

Gabriel, if you have ideas it would be great to hear them.  Also, I'm very
close to having a debug GeoServer environment up and running, so I will be
able to see what's going on.




On Tue, Mar 31, 2015 at 11:12 PM, Andrea Aime <andrea.a...@geo-solutions.it>
wrote:

> On Tue, Mar 31, 2015 at 10:48 PM, Martin Davis <mtncl...@gmail.com> wrote:
>
>> An update on this issue, which I think identifies the source of the
>> problem with the slow WFS query.
>>
>> After experimenting with using the SDE Java API against the troublesome
>> table, I found that the order of API calls is very important.   You might
>> expect that the API calls should look like this:
>>
>>   query = new SeQuery(conn, columns, construct);
>>   query.setSpatialConstraints(...)
>>   query.prepareQuery();
>>
>> There's nothing in the API docs to suggest otherwise.  However, this
>> results in the very slow query performance (I suspect the prepareQuery
>> wipes out the spatial filter, resulting in a full table scan being
>> performed).
>>
>> If the statement order is the following, then the query completes very
>> fast (indicating the spatial index is now being used):
>>
>>   query = new SeQuery(conn, columns, construct);
>>   query.setSpatialConstraints(...)
>>   query.prepareQuery();
>>
>
> Confused, where is the difference? :-)
>
>
>>
>> So the question is: does the WMS path through the SDE driver result in a
>> different statement order than the WFS path?  And if so, how can this be
>> fixed?
>>
>
> Hum... it may be, but a store is just a store, and
> featureSource.getFeatures(Query) is the same method.
> Maybe the contents of Query are different and this triggers a different
> code path in the store?
> One likely difference is that WFS (depending on your config and WFS
> version used) needs to perform a count before getting
> the actual data (part of the response headers), WMS does not.
>
> CC'ing Gabriel, he's the last one to have worked on the SDE store.
>
>
> Cheers
> Andrea
>
>
> --
> ==
> GeoServer Professional Services from the experts! Visit
> http://goo.gl/NWWaa2 for more information.
> ==
>
> Ing. Andrea Aime
> @geowolf
> Technical Lead
>
> GeoSolutions S.A.S.
> Via Poggio alle Viti 1187
> 55054  Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax: +39 0584 1660272
> mob: +39  339 8844549
>
> http://www.geo-solutions.it
> http://twitter.com/geosolutions_it
>
> *AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*
>
> Le informazioni contenute in questo messaggio di posta elettronica e/o
> nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il
> loro utilizzo è consentito esclusivamente al destinatario del messaggio,
> per le finalità indicate nel messaggio stesso. Qualora riceviate questo
> messaggio senza esserne il destinatario, Vi preghiamo cortesemente di
> darcene notizia via e-mail e di procedere alla distruzione del messaggio
> stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
> divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od
> utilizzarlo per finalità diverse, costituisce comportamento contrario ai
> principi dettati dal D.Lgs. 196/2003.
>
>
>
> The information in this message and/or attachments, is intended solely for
> the attention and use of the named addressee(s) and may be confidential or
> proprietary in nature or covered by the provisions of privacy act
> (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection
> Code).Any use not in accord with its purpose, any disclosure, reproduction,
> copying, distribution, or either dissemination, either whole or partial, is
> strictly forbidden except previous formal approval of the named
> addressee(s). If you are not the intended recipient, please contact
> immediately the sender by telephone, fax or e-mail and delete the
> information in this message that has been received in error. The sender
> does not give any warranty or accept liability as the content, accuracy or
> completeness of sent messages and accepts no responsibility  for changes
> made after they were sent or for other risks which arise as a result of
> e-mail transmission, viruses, etc.
>
> -------------------------------------------------------
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to