[Geoserver-users] Primary keys and geometry in Oracle

Hi,

About the "Unrecognized geometry type”, in Oracle the default is that you can store all kind of geometries (points, lines, multipolygons, geometrycollections etc.) into same sdo_geometry column. Many other GIS systems have constraints for geometry types allowed on a single layer. A shapefile can hold polygons and multipolygons but you cannot store points into the same shapefile. Sometimes

There is only one way in Oracle to set such constraint and it is to create the spatial index with additional parameter like PARAMETERS (‘layer_gtype=POLYGON’);

If Geoserver finds such parameter from spatial index metadata it can announce in WFS DescribeFeatureType the exact geometry type. If it does not find the info it can only say that column holds some geometries. That may make trouble for some WFS clients because they are often made according to the shapefile logic. It is works warning server manager about this situation.

I do not know why finding unique index fails for you if your table has such. Generally speaking primary key is used at least for generating WFS fids which must be unique and also stable in the database if updates and deletes are to be done. For inserts the system must also know what field must get a new and unique value. If you will continue to WFS-T with Oracle you will find it is a little bit tricky because you must create a sequence and a trigger on Oracle side and insert a new line into geoserver_metadata table which was created for making living a little bit easier.

-Jukka Rahkonen-

···

Jonathan Moules wrote:

Hi List,

When I start GeoServer (2.3-RC1), the first time I go to the layer list, in the console I see the below three lines for many of the layers.

05 Mar 11:26:03 WARN [org.geotools.jdbc] - Failure occurred while looking up the primary key with finder: org.geotools.jdbc.HeuristicPrimaryKeyFinder@anonymised.com

05 Mar 11:26:03 WARN [org.geotools.jdbc] - No primary key or unique index found for BOUNDARY_SUBREGION.

05 Mar 11:26:06 WARN [org.geotools.jdbc] - Unrecognized geometry type DEFAULT falling back on generic ‘GEOMETRY’

These are all Oracle Layers. They have an non-nullable unique-value column that has an index.

Being WARN level events I figured I should try and find out what they’re on about but googling doesn’t find much.

Can anyone advise? It all seems to work so it can probably be ignored, but…

So my questions:

— What does GeoServer need the primary key for?

— What happens if it can’t find it?

— What does “Unrecognized geometry type DEFAULT falling back on generic ‘GEOMETRY’” mean? My geometry is all in sdo_geometry type columns.

Thanks,

Jonathan

This transmission is intended for the named addressee(s) only and may contain sensitive or protectively marked material up to RESTRICTED 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.

On Tue, Mar 5, 2013 at 2:14 PM, Rahkonen Jukka <jukka.rahkonen@anonymised.com86…> wrote:

Hi,

About the "Unrecognized geometry type”, in Oracle the default is that you can store all kind of geometries (points, lines, multipolygons, geometrycollections etc.) into same sdo_geometry column. Many other GIS systems have constraints for geometry types allowed on a single layer. A shapefile can hold polygons and multipolygons but you cannot store points into the same shapefile. Sometimes

There is only one way in Oracle to set such constraint and it is to create the spatial index with additional parameter like PARAMETERS (‘layer_gtype=POLYGON’);

If Geoserver finds such parameter from spatial index metadata it can announce in WFS DescribeFeatureType the exact geometry type. If it does not find the info it can only say that column holds some geometries. That may make trouble for some WFS clients because they are often made according to the shapefile logic. It is works warning server manager about this situation.

I do not know why finding unique index fails for you if your table has such. Generally speaking primary key is used at least for generating WFS fids which must be unique and also stable in the database if updates and deletes are to be done. For inserts the system must also know what field must get a new and unique value. If you will continue to WFS-T with Oracle you will find it is a little bit tricky because you must create a sequence and a trigger on Oracle side and insert a new line into geoserver_metadata table which was created for making living a little bit easier.

Btw, both issues (geometry type and primary key) have a dedicated metadata table that can be
used to compensate for lack of metadata in the “raw” database:
http://docs.geoserver.org/latest/en/user/data/database/oracle.html#using-the-geometry-metadata-table
http://docs.geoserver.org/stable/en/user/data/database/primarykey.html

Cheers
Andrea

-Jukka Rahkonen-

Jonathan Moules wrote:

Hi List,

When I start GeoServer (2.3-RC1), the first time I go to the layer list, in the console I see the below three lines for many of the layers.

05 Mar 11:26:03 WARN [org.geotools.jdbc] - Failure occurred while looking up the primary key with finder: org.geotools.jdbc.HeuristicPrimaryKeyFinder@anonymised.com

05 Mar 11:26:03 WARN [org.geotools.jdbc] - No primary key or unique index found for BOUNDARY_SUBREGION.

05 Mar 11:26:06 WARN [org.geotools.jdbc] - Unrecognized geometry type DEFAULT falling back on generic ‘GEOMETRY’

These are all Oracle Layers. They have an non-nullable unique-value column that has an index.

Being WARN level events I figured I should try and find out what they’re on about but googling doesn’t find much.

Can anyone advise? It all seems to work so it can probably be ignored, but…

So my questions:

— What does GeoServer need the primary key for?

— What happens if it can’t find it?

— What does “Unrecognized geometry type DEFAULT falling back on generic ‘GEOMETRY’” mean? My geometry is all in sdo_geometry type columns.

Thanks,

Jonathan

This transmission is intended for the named addressee(s) only and may contain sensitive or protectively marked material up to RESTRICTED 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.


Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb


Geoserver-users mailing list
Geoserver-users@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it 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


Hi Both,
Thanks for this information. Its interesting and hopefully useful for the future.
Thanks again,
Jonathan

On 5 March 2013 13:28, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Tue, Mar 5, 2013 at 2:14 PM, Rahkonen Jukka <jukka.rahkonen@anonymised.com> wrote:

Hi,

About the "Unrecognized geometry type”, in Oracle the default is that you can store all kind of geometries (points, lines, multipolygons, geometrycollections etc.) into same sdo_geometry column. Many other GIS systems have constraints for geometry types allowed on a single layer. A shapefile can hold polygons and multipolygons but you cannot store points into the same shapefile. Sometimes

There is only one way in Oracle to set such constraint and it is to create the spatial index with additional parameter like PARAMETERS (‘layer_gtype=POLYGON’);

If Geoserver finds such parameter from spatial index metadata it can announce in WFS DescribeFeatureType the exact geometry type. If it does not find the info it can only say that column holds some geometries. That may make trouble for some WFS clients because they are often made according to the shapefile logic. It is works warning server manager about this situation.

I do not know why finding unique index fails for you if your table has such. Generally speaking primary key is used at least for generating WFS fids which must be unique and also stable in the database if updates and deletes are to be done. For inserts the system must also know what field must get a new and unique value. If you will continue to WFS-T with Oracle you will find it is a little bit tricky because you must create a sequence and a trigger on Oracle side and insert a new line into geoserver_metadata table which was created for making living a little bit easier.

Btw, both issues (geometry type and primary key) have a dedicated metadata table that can be
used to compensate for lack of metadata in the “raw” database:
http://docs.geoserver.org/latest/en/user/data/database/oracle.html#using-the-geometry-metadata-table
http://docs.geoserver.org/stable/en/user/data/database/primarykey.html

Cheers
Andrea

-Jukka Rahkonen-

Jonathan Moules wrote:

Hi List,

When I start GeoServer (2.3-RC1), the first time I go to the layer list, in the console I see the below three lines for many of the layers.

05 Mar 11:26:03 WARN [org.geotools.jdbc] - Failure occurred while looking up the primary key with finder: org.geotools.jdbc.HeuristicPrimaryKeyFinder@anonymised.com

05 Mar 11:26:03 WARN [org.geotools.jdbc] - No primary key or unique index found for BOUNDARY_SUBREGION.

05 Mar 11:26:06 WARN [org.geotools.jdbc] - Unrecognized geometry type DEFAULT falling back on generic ‘GEOMETRY’

These are all Oracle Layers. They have an non-nullable unique-value column that has an index.

Being WARN level events I figured I should try and find out what they’re on about but googling doesn’t find much.

Can anyone advise? It all seems to work so it can probably be ignored, but…

So my questions:

— What does GeoServer need the primary key for?

— What happens if it can’t find it?

— What does “Unrecognized geometry type DEFAULT falling back on generic ‘GEOMETRY’” mean? My geometry is all in sdo_geometry type columns.

Thanks,

Jonathan

This transmission is intended for the named addressee(s) only and may contain sensitive or protectively marked material up to RESTRICTED 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.


Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb


Geoserver-users mailing list
Geoserver-users@anonymised.comeforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it 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



Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb


Geoserver-users mailing list
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 sensitive or protectively marked material up to RESTRICTED 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.