Hi Jonathan,
I doubt if using UNION would be a good solution, mainly because performance
probably will be (very) poor.
After a little experiment with defining a geoserver sql view [1] I noticed the
view is tightly coupled with the layer itself, so publishing this geoserver sql
view several times (each time with another parameter value) is not an option.
So the only straightforward option left would be to define a geoserver sql view
for every type. So I don't need to create sql server views first. Just
wondering if there is a noticeable difference in performance between layers
based on a database sql view or a geoserver sql view.
Another experiment proves the parametric SQL works.
- With this geoserver sql view definition: SELECT * FROM node WHERE
node_type IN (%types%)
- You can add this to the getmap request:
viewparams=types:'Type1'\,'Type5'\,'Type13'
- And you'll get what you expected (an image with these 3 types)
But you have (obviously) to make sure that the types parameter has a valid
value to use in the IN-clause (which requires adding single quotes for strings
and using + escaping commas between the separate values)
[1]
http://osgeo-org.1560.x6.nabble.com/Publishing-a-geoserver-sql-view-more-than-once-td5159076.html
Kind regards,
Roel
Van: Jonathan Moules [mailto:jonathanmou...@warwickshire.gov.uk]
Verzonden: vrijdag 29 augustus 2014 9:10
Aan: Roel De Nijs
CC: Jorge Sanz; rcefo
Onderwerp: Re: [Geoserver-users] Representing a SQL Server table with different
types
Hi Roel,
I don't know the answer to the parametric SQL, but could maybe using UNION or
UNION ALL with an SQL Server View allow you to present all tables as a single
view? (I'm guessing SQL Server supports these).
So something like:
select * from (
select * from table_1
union
select * from table_2
union
...
) where colA = value
Just a thought.
Cheers,
Jonathan
On 26 August 2014 11:08, Roel De Nijs
<roel.den...@aquafin.be<mailto:roel.den...@aquafin.be>> wrote:
That would indeed be one of the options we are considering.
But we also want to reduce network traffic. Instead of having a WMS-request for
each layer (+- 30 in total) returning an image, we are looking if it's
plausible to just send 1 WMS-request with all visible layers. Some of these
layers are simple (sql server) table-based layers, other are parametric
(geoserver) sql views. So the viewparams parameter should be able to accept
multiple parameter maps. According to the documentation [1] it does (using a
comma as separator). But how can you pass a variable number of view parameters?
You don't want to define one parameter for each possible node-type. So thinking
about using an IN-statement in the geoserver sql view (not sure how to define
this statement correctly), but not sure if it's possible to pass an array to
the viewparams parameter (eg. viewparams=types:['Type1', 'Type5', 'Type13']).
Or maybe I can "simply" escape the comma values? Then I would end up with
something like this:
- The geoserver sql view: SELECT * FROM node WHERE node_type IN (%types%)
- The viewparams parameter: types:'Type1'\,'Type5'\,'Type13'
Reasonable or utterly craziness? Thoughts? Concerns?
[1] http://docs.geoserver.org/stable/en/user/data/database/sqlview.html
Kind regards,
Roel
Van: xurxos...@gmail.com<mailto:xurxos...@gmail.com>
[mailto:xurxos...@gmail.com<mailto:xurxos...@gmail.com>] Namens Jorge Sanz
Verzonden: maandag 25 augustus 2014 23:38
Aan: Roel De Nijs
CC: geoserver-users [geoserver-users@lists.sourcefo
Onderwerp: Re: [Geoserver-users] Representing a SQL Server table with different
types
Why not using just one GeoServer SQL view with a parameter for your types and
in openlayers a function to generate your layers.
You could even generate a void GeoServer SQL layer with a SELECT DISTINCT
query so you could get your types from a WFS query and make it more general.
My 2cts
--
Jorge Sanz
http://jorgesanz.net
Sent from my tablet, sorry for my brevity, top posting, etc.
El 25/08/2014 22:19, "Roel De Nijs"
<roel.den...@aquafin.be<mailto:roel.den...@aquafin.be>> escribió:
Hi list,
We have a SQL Server spatial table node with a node_type column containing
+-350K records. Currently we have +-15 different types; the records are not
equally divided (the least common type 300 records vs the most common type 300K
records). On different (zoom) levels of our map we need to display other node
types and a user can decide to hide/show a given type.
In order to meet this requirement the current setup is as follows:
- A sql server view (based on table node) for each type (viewType1, viewType2,
viewType3, ..., viewType15)
- A geoserver layer for each sql server view (layerType1, layerType2,
layerType3, ..., layerType15)
- An OpenLayers layer switcher to control all these layers
This approach works fine and meets all functional requirements.
At this moment we start a redo of our application. And I was wondering if this
approach (which was already in use before my arrival) could be replaced by
another alternative. One of the reasons would be: if a change of the views is
needed (e.g. filter out out-of-use nodes), I need to change all 15 views (e.g.
adding the same where-clause). If a new node_type is added, you'll have to do
some (easy, copy/paste) work. I'm a bit of a lazy developer, so I'm always
looking to do less if possible :-)
I guess I'm not the 1st one facing such a scenario and just wondering if there
are other alternatives. Maybe creating a geoserver sql view once and publishing
this view 15 times, each time with another type? Or creating just 1 geoserver
sql view with an in-clause and using viewparams to pass all visible types in an
array (if possible)? And what about performance of using a geoserver sql view
vs a geoserver layer based on a sql server view?
Kind regards,
Roel
[Afbeelding verwijderd door afzender. banner Chap-eau]<http://www.chap-eau.be>
________________________________
Volg Aquafin op Facebook<https://www.facebook.com/AquafinNV> |
Twitter<https://twitter.com/aquafinnv> |
YouTube<http://www.youtube.com/channel/UCk_4P5BJ-MtEEDCkCsR_KqQ?feature=mhee> |
LinkedIN<http://www.linkedin.com/company/aquafin/products>
Disclaimer: zie www.aquafin.be<http://www.aquafin.be> P Denk aan het milieu.
Druk deze mail niet onnodig af.
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net<mailto:Geoserver-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geoserver-users
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net<mailto:Geoserver-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geoserver-users
This transmission is intended for the named addressee(s) only and may contain
confidential, sensitive or personal information and should be handled
accordingly. Unless you are the named addressee (or authorised to receive it
for the addressee) you may not copy or use it, or disclose it to anyone else.
If you have received this transmission in error please notify the sender
immediately. All email traffic sent to or from us, including without limitation
all GCSX traffic, may be subject to recording and/or monitoring in accordance
with relevant legislation.
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users