[Gvsig_desarrolladores] Problemas com gvSIG 2.0.0.2042 com Postgresql: Unknown Geometry Type

Jorge Gustavo jgr en osgeopt.pt
Jue Dic 1 20:43:02 CET 2011


Olá a todos,

Estou com problemas com o gvSIG 2.0 a abrir uma tabela Postgresql. 
Consigo com o gvSIG 1.11, mas não com o gvSIG 2.0.

Me parece que o problema é este:

A query que vai buscar o extend cambiou:
[gvSIG  2.0] Select asbinary(extent(wkb_geometry)) from "public"."caop"
(retorna um POLYGON)
[gvSIG 1.11] SELECT extent("wkb_geometry") AS FullExtent FROM 
"public"."caop"
(retorna uma BOX)

Mais detalhes

Estou usando:

i) Ubuntu 11.10
ii) Versão gvSIG: Version: 2.0.0 Build: 2042 Java version: 1.6.0_20
iii) PostgreSQL 9.1.1 on x86_64-pc-linux-gnu, compiled by gcc-4.6.real 
(Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1, 64-bit | POSTGIS="1.5.3" 
GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" 
LIBXML="2.7.8" USE_STATS (procs from 1.5 r5976 need upgrade)

1. Quando adiciono a capa 'caop' surge o erro: "Unknown Geometry Type"

Error while executing an action in resource 
'org.gvsig.fmap.dal.store.postgresql.PostgreSQLResource en 1d0e43a'. 
Unknown Geometry Type! Error while executing an action in resource 
'org.gvsig.fmap.dal.store.postgresql.PostgreSQLResource en 1d0e43a'. 
Unknown Geometry Type! 
org.gvsig.fmap.dal.resource.exception.ResourceExecuteException: Error 
while executing an action in resource 
'org.gvsig.fmap.dal.store.postgresql.PostgreSQLResource en 1d0e43a'. 
     org.gvsig.fmap.dal.resource.spi.AbstractNonBlockingResource.execute(AbstractNonBlockingResource.java:66)     org.gvsig.fmap.dal.store.postgresql.PostgreSQLHelper.getFullEnvelopeOfField(PostgreSQLHelper.java:184)     org.gvsig.fmap.dal.store.jdbc.JDBCStoreProvider.getEnvelope(JDBCStoreProvider.java:737)     org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.getEnvelope(DefaultFeatureStore.java:347)     org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.getFullEnvelope(FLyrVect.java:322)     org.gvsig.geodb.vectorialdb.wizard.WizardVectorialDB.execute(WizardVectorialDB.java:243)     org.gvsig.app.extension.AddLayer.loadGenericWizardPanelLayers(AddLayer.java:226)     org.gvsig.app.extension.AddLayer.addLayers(AddLayer.java:243)     org.gvsig.app.extension.AddLayer.execute(AddLayer.java:171)     org.gvsig.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:89)     org.gvsig.andami.ui.mdiFrame.MDIFrame.actionPerformed(MDIFrame.java:745)     javax.swing.Abstrac
tButton.fireActionPerformed(Unknown Source)     javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.setPressed(Unknown Source)     javax.swing.AbstractButton.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)     java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)     java.awt.Component.processMouseEvent(Unknown Source)     javax.swing.JComponent.processMouseEvent(Unknown Source)     java.awt.Component.processEvent(Unknown Source)     java.awt.Container.processEvent(Unknown Source)     java.awt.Component.dispatchEventImpl(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)     java.awt.Ligh
tweightDispatcher.processMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.EventQueue.dispatchEvent(Unknown Source)     org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:59)     java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.run(Unknown Source) java.lang.IllegalArgumentException: Unknown Geometry Type!     org.gvsig.fmap.geom.operation.fromwkb.WKBParser2.parseGeometry(WKBParser2.java:189)     org.gvsig.fmap.geom.operation.fromwkb.WKBParser2.parse(WKBParser2.java:115)     org.gvsig.f
map.geom.operation.fromwkb.FromWKB.invoke(FromWKB.java:60)     org.gvsig.fmap.dal.store.postgresql.PostgreSQLHelper$1.run(PostgreSQLHelper.java:210)     org.gvsig.fmap.dal.resource.spi.AbstractResource.performExecution(AbstractResource.java:323)     org.gvsig.fmap.dal.resource.spi.AbstractNonBlockingResource.execute(AbstractNonBlockingResource.java:64)     org.gvsig.fmap.dal.store.postgresql.PostgreSQLHelper.getFullEnvelopeOfField(PostgreSQLHelper.java:184)     org.gvsig.fmap.dal.store.jdbc.JDBCStoreProvider.getEnvelope(JDBCStoreProvider.java:737)     org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.getEnvelope(DefaultFeatureStore.java:347)     org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.getFullEnvelope(FLyrVect.java:322)     org.gvsig.geodb.vectorialdb.wizard.WizardVectorialDB.execute(WizardVectorialDB.java:243)     org.gvsig.app.extension.AddLayer.loadGenericWizardPanelLayers(AddLayer.java:226)     org.gvsig.app.extension.AddLayer.addLayers(AddLayer.java:243)    
 org.gvsig.app.extension.AddLayer.execute(AddLayer.java:171)     org.gvsig.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:89)     org.gvsig.andami.ui.mdiFrame.MDIFrame.actionPerformed(MDIFrame.java:745)     javax.swing.AbstractButton.fireActionPerformed(Unknown Source)     javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.setPressed(Unknown Source)     javax.swing.AbstractButton.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)     java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)     java.awt.Component.processMouseEvent(Unknown Source)     javax.swing.JComponent.processMouseEvent(Unknown Source)     java.awt.Component.processEvent(Unknown Source)     java.awt.Container.processEvent(Unknown Source)     java.
awt.Component.dispatchEventImpl(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.EventQueue.dispatchEvent(Unknown Source)     org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:59)     java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.run(Unknown Sourc
e) User error User error org.gvsig.fmap.dal.resource.exception.ResourceExecuteException: Error while executing an action in resource 'org.gvsig.fmap.dal.store.postgresql.PostgreSQLResource en 1d0e43a'.     org.gvsig.fmap.dal.resource.spi.AbstractNonBlockingResource.execute(AbstractNonBlockingResource.java:66)     org.gvsig.fmap.dal.store.postgresql.PostgreSQLHelper.getFullEnvelopeOfField(PostgreSQLHelper.java:184)     org.gvsig.fmap.dal.store.jdbc.JDBCStoreProvider.getEnvelope(JDBCStoreProvider.java:737)     org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.getEnvelope(DefaultFeatureStore.java:347)     org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.getFullEnvelope(FLyrVect.java:322)     org.gvsig.fmap.mapcontext.MapContext$LayerEventListener.layerAdded(MapContext.java:1277)     org.gvsig.fmap.mapcontext.layers.FLayers.callLayerAdded(FLayers.java:734)     org.gvsig.fmap.mapcontext.layers.FLayers.addLayer(FLayers.java:242)     org.gvsig.fmap.mapcontext.layers.FLayers.addLay
er(FLayers.java:219)     org.gvsig.geodb.vectorialdb.wizard.WizardVectorialDB.execute(WizardVectorialDB.java:306)     org.gvsig.app.extension.AddLayer.loadGenericWizardPanelLayers(AddLayer.java:226)     org.gvsig.app.extension.AddLayer.addLayers(AddLayer.java:243)     org.gvsig.app.extension.AddLayer.execute(AddLayer.java:171)     org.gvsig.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:89)     org.gvsig.andami.ui.mdiFrame.MDIFrame.actionPerformed(MDIFrame.java:745)     javax.swing.AbstractButton.fireActionPerformed(Unknown Source)     javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.setPressed(Unknown Source)     javax.swing.AbstractButton.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)     java.awt.AWTEventMulti
caster.mouseReleased(Unknown Source)     java.awt.Component.processMouseEvent(Unknown Source)     javax.swing.JComponent.processMouseEvent(Unknown Source)     java.awt.Component.processEvent(Unknown Source)     java.awt.Container.processEvent(Unknown Source)     java.awt.Component.dispatchEventImpl(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.EventQueue.dispatchEvent(Unknown Source)     org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:59)     java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)     java.awt.EventDispatchThread.pumpEvents
ForFilter(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.run(Unknown Source) java.lang.IllegalArgumentException: Unknown Geometry Type!     org.gvsig.fmap.geom.operation.fromwkb.WKBParser2.parseGeometry(WKBParser2.java:189)     org.gvsig.fmap.geom.operation.fromwkb.WKBParser2.parse(WKBParser2.java:115)     org.gvsig.fmap.geom.operation.fromwkb.FromWKB.invoke(FromWKB.java:60)     org.gvsig.fmap.dal.store.postgresql.PostgreSQLHelper$1.run(PostgreSQLHelper.java:210)     org.gvsig.fmap.dal.resource.spi.AbstractResource.performExecution(AbstractResource.java:323)     org.gvsig.fmap.dal.resource.spi.AbstractNonBlockingResource.execute(AbstractNonBlockingResource.java:64)     org.gvsig.fmap.dal.store.postgresql.PostgreSQLHelper.getFullEnvelopeOfField(PostgreSQLHelper.java:184)     org.gvsig.f
map.dal.store.jdbc.JDBCStoreProvider.getEnvelope(JDBCStoreProvider.java:737)     org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.getEnvelope(DefaultFeatureStore.java:347)     org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect.getFullEnvelope(FLyrVect.java:322)     org.gvsig.fmap.mapcontext.MapContext$LayerEventListener.layerAdded(MapContext.java:1277)     org.gvsig.fmap.mapcontext.layers.FLayers.callLayerAdded(FLayers.java:734)     org.gvsig.fmap.mapcontext.layers.FLayers.addLayer(FLayers.java:242)     org.gvsig.fmap.mapcontext.layers.FLayers.addLayer(FLayers.java:219)     org.gvsig.geodb.vectorialdb.wizard.WizardVectorialDB.execute(WizardVectorialDB.java:306)     org.gvsig.app.extension.AddLayer.loadGenericWizardPanelLayers(AddLayer.java:226)     org.gvsig.app.extension.AddLayer.addLayers(AddLayer.java:243)     org.gvsig.app.extension.AddLayer.execute(AddLayer.java:171)     org.gvsig.andami.plugins.ExtensionDecorator.execute(ExtensionDecorator.java:89)     org.gvsig.and
ami.ui.mdiFrame.MDIFrame.actionPerformed(MDIFrame.java:745)     javax.swing.AbstractButton.fireActionPerformed(Unknown Source)     javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)     javax.swing.DefaultButtonModel.setPressed(Unknown Source)     javax.swing.AbstractButton.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)     javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)     java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)     java.awt.Component.processMouseEvent(Unknown Source)     javax.swing.JComponent.processMouseEvent(Unknown Source)     java.awt.Component.processEvent(Unknown Source)     java.awt.Container.processEvent(Unknown Source)     java.awt.Component.dispatchEventImpl(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     
java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)     java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)     java.awt.Container.dispatchEventImpl(Unknown Source)     java.awt.Component.dispatchEvent(Unknown Source)     java.awt.EventQueue.dispatchEvent(Unknown Source)     org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:59)     java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)     java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.pumpEvents(Unknown Source)     java.awt.EventDispatchThread.run(Unknown Source)

2. Observando o log do Postgresql, com gvSIG 2.0, a última query que é 
feita é: Select asbinary(extent(wkb_geometry)) from "public"."caop"

Esta query retorna um POLYGON (em binário), mas o gvSIG não gosta do 
resultado :-(

  WET LOG:  execute <unnamed>: SELECT 1  FROM pg_catalog.pg_attrdef 
WHERE adrelid = $1 AND adnum = $2   AND pg_catalog.pg_get_expr(adbin, 
adrelid)       LIKE '%nextval(%'
2011-12-01 19:21:44 WET DETAIL:  parameters: $1 = '21705', $2 = '9'
2011-12-01 19:21:44 WET LOG:  execute <unnamed>: Select 
geometry_columns.*,auth_name || ':' || auth_srid as SRSID from 
geometry_columns left join spatial_ref_sys on geometry_columns.srid = 
spatial_ref_sys.srid WHERE ( F_TABLE_SCHEMA = 'public' AND F_TABLE_NAME 
= 'caop' AND F_GEOMETRY_COLUMN = 'wkb_geometry' )
2011-12-01 19:21:44 WET LOG:  execute <unnamed>: Select 
asbinary(extent(wkb_geometry)) from "public"."caop"
2011-12-01 19:21:44 WET LOG:  execute <unnamed>: Select 
asbinary(extent(wkb_geometry)) from "public"."caop"

3. Fazendo a query no Postgresql (troquei asbinary por st_asewkt):

Select st_asewkt((extent(wkb_geometry))) from "public"."caop"

"POLYGON((-119191.407500066 -300404.803999999,-119191.407500066 
276083.767400001,162129.081100356 276083.767400001,162129.081100356 
-300404.803999999,-119191.407500066 -300404.803999999))"

4. Con la version 1.11 consigo abrir bem esta tabela 'caop'.

SELECT extent("wkb_geometry") AS FullExtent FROM "public"."caop"

O log do Postgresql (usando o gvSIG 1.11) é este:

SELECT * FROM GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'public' AND 
F_TABLE_NAME = 'caop' AND F_GEOMETRY_COLUMN = 'wkb_geometry'
2011-12-01 19:17:36 WET LOG:  statement: declare caop8_wkb_cursor binary 
scroll cursor with hold for SELECT AsEWKB("wkb_geometry", 'XDR'), 
ogc_fid, dicofre, freguesia, municipio, distrito_, area_ea_ha, 
area_t_ha, taa FROM "public"."caop"  ORDER BY ogc_fid
2011-12-01 19:17:36 WET LOG:  statement: fetch forward 5000 in 
caop8_wkb_cursor
2011-12-01 19:17:38 WET LOG:  statement: SELECT ogc_fid FROM 
"public"."caop"  ORDER BY ogc_fid
2011-12-01 19:17:39 WET LOG:  statement: SELECT extent("wkb_geometry") 
AS FullExtent FROM "public"."caop"
2011-12-01 19:17:40 WET LOG:  statement: BEGIN
2011-12-01 19:17:40 WET WARNING:  there is already a transaction in progress
2011-12-01 19:17:40 WET LOG:  statement: declare 
caop8wkb_cursor_prov_13227670601360 binary cursor for SELECT 
AsEWKB("wkb_geometry", 'XDR'), ogc_fid FROM "public"."caop" WHERE 
"wkb_geometry" && GeometryFromText('LINESTRING(-287888.88383966393 
-300404.803999999, 330826.5574399539 -300404.803999999, 
330826.5574399539 276083.767400001, -287888.88383966393 
276083.767400001)', 3763)
2011-12-01 19:17:40 WET LOG:  statement: fetch forward 5000 in 
caop8wkb_cursor_prov_13227670601360

Gracias por toda a ajuda,

Jorge Gustavo



Más información sobre la lista de distribución gvSIG_desarrolladores