[Geoserver-users] Problems creating a Geoserver Layer on a PostGIS View

Hi,

I made a short test with GS 2.0-pre-release with these objects:

CREATE TABLE viewtest

(

“GEOMETRY” geometry(PointZ,3067),

attribute character varying

)

INSERT INTO viewtest (“GEOMETRY”, attribute)

VALUES ( ST_GeomFromText(‘POINTZ (640079 7002754 100)’,3067), ‘feature_1’);

CREATE MATERIALIZED VIEW view_viewtest

AS SELECT viewtest.“GEOMETRY”::GEOMETRY(PointZ,3067) AS geometry, attribute

from viewtest;

CREATE VIEW view_viewtest_2

AS SELECT viewtest.“GEOMETRY”::GEOMETRY(PointZ,3067) AS geometry, attribute

from viewtest;

I could publish the table and the normal view fine, the admin utility shows geometry type as point and layer preview with OpenLayers is fine.

I could not publish the materialized view at all because it does not appear in the list of available layers when I open my PostGIS store.

There is a corresponding row in the geometry_columns

“gis9”;“public”;“view_viewtest”;“geometry”;3;3067;“POINT”

This makes me think that there is perhaps something that does not quite work with materialized views.

I have two suggestions:

  1. Have a try with a plain, non-materialized view.

  2. Consider if you could do the same as I did above and send complete SQL commands for reproducing test data and the issue. It would have a few good points:

a. It makes you to make another test with most simple schema and data and verify that issue does not come from the source data

b. It makes it possible for the reviewers to make an exact copy of your case

c. If it is fast and easy, more people may really make a test for helping you

This is something that I have not yet discussed with Geoserver developers but I have been reading a few hundred open tickets during past two months and found that the ones with SQL are quite nice to study. Perhaps we could write some Best Practice document about how to report about issues which are dealing with databases.

-Jukka Rahkonen-

Andrea Aime wrote:

···

On Mon, Mar 23, 2015 at 11:52 AM, dkuenzel <audiotecture@…157…> wrote:

Hi Stefano,

thanks for your reply.

The only difference between the two screenshots is the symbol at the
beginning of the line. The Original layer shows a point symbol while the
view shows a rectangle (polygon?), the weird thing is, that both layers
contain exactly the same type of data (the view is a subset).

Geoserver itself doesn’t give any error, but I can’t display the WFS in
Qgis. The Attribute table then shows all the features but there are no
objects shown on the map.

To add some more confusion: it is possible to preview the layer in the
Geoserver UI (Openlayers) but if I try to add it to my own openlayers map
there won’t be any objects on the map.

I suppose it might be a problem with Geoserver computing the Geometry from
the view correctly and sending it via WFS but I don’t see any reason why
that should be the case. The only difference between the original table and
the view is that symbol I mentioned at the beginning.

Did you ask GeoServer to try and figure out the geometry type and srid when

listing the sql view attributes?

Even in case GeoServer does not recognize them correctly, you can manually

fix them

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.


On Mon, Mar 23, 2015 at 1:36 PM, Rahkonen Jukka (MML) <
jukka.rahkonen@anonymised.com> wrote:

Hi,

I made a short test with GS 2.0-pre-release with these objects:

CREATE TABLE viewtest

(

  "GEOMETRY" geometry(PointZ,3067),

  attribute character varying

  )

INSERT INTO viewtest ("GEOMETRY", attribute)

  VALUES ( ST_GeomFromText('POINTZ (640079 7002754 100)',3067),
'feature_1');

CREATE MATERIALIZED VIEW view_viewtest

AS SELECT viewtest."GEOMETRY"::GEOMETRY(PointZ,3067) AS geometry, attribute

from viewtest;

CREATE VIEW view_viewtest_2

AS SELECT viewtest."GEOMETRY"::GEOMETRY(PointZ,3067) AS geometry, attribute

from viewtest;

I could publish the table and the normal view fine, the admin utility
shows geometry type as point and layer preview with OpenLayers is fine.

I could not publish the materialized view at all because it does not
appear in the list of available layers when I open my PostGIS store.

There is a corresponding row in the geometry_columns

"gis9";"public";"view_viewtest";"geometry";3;3067;"POINT"

This makes me think that there is perhaps something that does not quite
work with materialized views.

Know issue: http://jira.codehaus.org/browse/GEOT-4635 , we have the code
fixes, but we still need to upgrade
the postgresql driver to complete the work, up until recently we could not
due to a bug in the postgresql driver
itself, right now it's only a matter of giving up a test that does not pass
anymore due to a change in behavior
in the latest version of the driver (in which the other bigger problem has
been solved).

We'll have the upgrade going for 2.8.0, not sure if we are going to
backport to 2.7.x (the 300+ tests
we have showed us two changes in behavior, there might be more that our
tests are not covering...
so I'd be cautious about an upgrade).

And oh, that said, you can manually remove the old postgresql driver from
web-in/lib and add the
latest one as a replacement, that should work fine, we have made no changes
in the actual
code to support the new driver, we'll only have to disable one test.

I have two suggestions:

1) Have a try with a plain, non-materialized view.

2) Consider if you could do the same as I did above and send
complete SQL commands for reproducing test data and the issue. It would
have a few good points:

a. It makes you to make another test with most simple schema and
data and verify that issue does not come from the source data

b. It makes it possible for the reviewers to make an exact copy of
your case

c. If it is fast and easy, more people may really make a test for
helping you

This is something that I have not yet discussed with Geoserver developers
but I have been reading a few hundred open tickets during past two months
and found that the ones with SQL are quite nice to study. Perhaps we could
write some Best Practice document about how to report about issues which
are dealing with databases.

Yep, summarizing your experience in the bug tracker in a guide for people
reporting issues would certainly be quite valuable

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.

-------------------------------------------------------

Hey Andrea,

the description from Jukka Rahkonen doesn't fit my problem because I am able
to publish the materialized view. I am running Geoserver V 2.6.0. But thanks
for the notice that there might be something wrong with the materialized
view. At the Moment it is not possible to work with a normal view instead
because it would impair the performance a lot.

I think I will just have to wait for the driver to be reworked to see if it
works then. In the meantime I will try to work around the problem with
direct DB-Interface instead and wait for the new Geoserver Version.

Thanks for your help anyways. :wink:

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/Problems-creating-a-Geoserver-Layer-on-a-PostGIS-View-tp5194895p5195401.html
Sent from the GeoServer - User mailing list archive at Nabble.com.

On Wed, Mar 25, 2015 at 4:02 PM, dkuenzel <audiotecture@anonymised.com> wrote:

Hey Andrea,

the description from Jukka Rahkonen doesn't fit my problem because I am
able
to publish the materialized view. I am running Geoserver V 2.6.0. But
thanks
for the notice that there might be something wrong with the materialized
view. At the Moment it is not possible to work with a normal view instead
because it would impair the performance a lot.

You can just pick the latest postgresql jdbc driver and replace the old one
in the GeoServer own WEB-INF/lib, it should work fine

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.

-------------------------------------------------------