gvSIG bugs #4359
No se puede abrir la tabla de atributos de los ficheros GPX
Status: | Closed | % Done: | 0% | |
---|---|---|---|---|
Priority: | Normal | Spent time: | - | |
Assignee: | Joaquín del Cerro Murciano | |||
Category: | - | |||
Target version: | 2.4.0-2835 (rev. org.gvsig.desktop-2.0.202) | |||
Severity: | Minor | Add-on version: | ||
gvSIG version: | 2.3.0 | Add-on build: | ||
gvSIG build: | 2444 | Add-on resolve version: | ||
Operative System: | Add-on resolve build: | |||
Keywords: | gpx, attribute table | Proyecto: | ||
Has patch: | Hito: | |||
Add-on name: | Unknown |
Description
Cargo un fichero gpx, y selecciono la capa de waypoints. Se añade correctamente a la vista y los puntos están bien situados. Pero al abrir la tabla de atributos se produce un error:
INFO [AWT-EventQueue-0] (DefaultProject.java:374) - add('Attribute table: waypoints') WARN [AWT-EventQueue-0] (AbstractDocumentManager.java:347) - Can't create the document window. java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.gvsig.app.project.documents.AbstractDocumentManager.createDocumentWindow(AbstractDocumentManager.java:339) at org.gvsig.app.project.documents.table.TableManager.getMainWindow(TableManager.java:232) at org.gvsig.app.project.documents.AbstractDocumentManager.getMainWindow(AbstractDocumentManager.java:159) at org.gvsig.app.extension.ShowTable.execute(ShowTable.java:111) at org.gvsig.app.extension.ShowTable.execute(ShowTable.java:77) at org.gvsig.app.project.documents.table.gui.toc.ShowAttributesTableTocMenuEntry.execute(ShowAttributesTableTocMenuEntry.java:72) at org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction.execute(AbstractTocContextMenuAction.java:63) at org.gvsig.app.project.documents.view.toc.gui.FPopupMenu$MenuItem.actionPerformed(FPopupMenu.java:248) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:50) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.lang.NegativeArraySizeException at org.gvsig.fmap.dal.feature.paging.impl.FeaturePagingHelperImpl.loadCurrentPageData(FeaturePagingHelperImpl.java:347) at org.gvsig.tools.dynobject.impl.DefaultDynObjectPagingHelper.setCalculator(DefaultDynObjectPagingHelper.java:168) at org.gvsig.tools.dynobject.impl.DefaultDynObjectPagingHelper.setDefaultCalculator(DefaultDynObjectPagingHelper.java:173) at org.gvsig.fmap.dal.feature.paging.impl.FeaturePagingHelperImpl.reload(FeaturePagingHelperImpl.java:316) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureTableModel.updatePaginHelperWithHiddenColums(FeatureTableModel.java:541) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.ConfigurableFeatureTableModel.initialize(ConfigurableFeatureTableModel.java:368) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureTableModel.<init>(FeatureTableModel.java:130) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureTableModel.<init>(FeatureTableModel.java:114) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureTableModel.<init>(FeatureTableModel.java:96) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.ConfigurableFeatureTableModel.<init>(ConfigurableFeatureTableModel.java:87) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureStoreModel.getFeatureTableModel(FeatureStoreModel.java:132) at org.gvsig.fmap.mapcontrol.dal.feature.swing.table.FeatureStoreModel.getCurrentFeatureTableModel(FeatureStoreModel.java:105) at org.gvsig.fmap.mapcontrol.dal.feature.swing.FeatureTypesTablePanel.showFeatureTypeData(FeatureTypesTablePanel.java:154) at org.gvsig.fmap.mapcontrol.dal.feature.swing.FeatureTypesTablePanel.initializeUI(FeatureTypesTablePanel.java:197) at org.gvsig.fmap.mapcontrol.dal.feature.swing.FeatureTypesTablePanel.<init>(FeatureTypesTablePanel.java:124) at org.gvsig.fmap.mapcontrol.dal.feature.swing.FeatureTypesTablePanel.<init>(FeatureTypesTablePanel.java:114) at org.gvsig.app.project.documents.table.gui.FeatureTableDocumentPanel.<init>(FeatureTableDocumentPanel.java:81) ... 51 more
Si intentas acceder por código layer.getFeatureStore().getFeatureCount() devuelve un -1. Esto ya pasaba en la RC2
Associated revisions
refs #4359. Patch provided by Joaquín del Cerro Murciano. Fix sql generation in OGR provider for rows that requier quetes and a problem when calculate the count of features.
History
#1 Updated by Francisco Puga over 7 years ago
It Still happens in 2.3.1
It neither works trying to show the data of a point with the info tool
INFO [AWT-EventQueue-0] (DefaultActionInfo.java:326) - org.gvsig.app.mainplugin:org.gvsig.app.extension.ViewControls.execute('view-change-scale', Object[] args)
INFO [AWT-EventQueue-0] (DefaultActionInfo.java:326) - org.gvsig.app.mainplugin:org.gvsig.app.extension.ViewControls.execute('view-change-scale', Object[] args)
ERROR 1: SQL Expression Parsing Error: syntax error, unexpected DESC. Occured around :
CT ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_typ
^
WARN [AWT-EventQueue-0] (OGRFetureSetProvider.java:159) - The result of query is null. SQL SELECT ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_type,link2_href,link2_text,link2_type,sym,type,fix,sat,hdop,vdop,pdop,ageofdgpsdata,dgpsid,label,ogr_geometry FROM 'waypoints' FeatureType default:[ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_type,link2_href,link2_text,link2_type,sym,type,fix,sat,hdop,vdop,pdop,ageofdgpsdata,dgpsid,label,ogr_geometry]
WARN [AWT-EventQueue-0] (OGRFetureSetProvider.java:160) - Getting data without SQL filter
ERROR [AWT-EventQueue-0] (NotificationManager.java:90) - java.lang.RuntimeException
java.lang.RuntimeException
at org.gvsig.tools.dynform.impl.DefaultDynFormManager.createJDynFormSet(DefaultDynFormManager.java:207)
at org.gvsig.tools.dynform.impl.DefaultDynFormManager.createJDynFormSet(DefaultDynFormManager.java:155)
at org.gvsig.fmap.mapcontrol.swing.dynobject.impl.DefaultLayersDynObjectSetComponent.setCurrentLayerInfoByPoint(DefaultLayersDynObjectSetComponent.java:194)
at org.gvsig.fmap.mapcontrol.swing.dynobject.impl.DefaultLayersDynObjectSetComponent.valueChanged(DefaultLayersDynObjectSetComponent.java:254)
at javax.swing.JTree.fireValueChanged(JTree.java:2927)
at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3391)
at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:635)
at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1093)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:294)
at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeSelectionModel.java:188)
at javax.swing.JTree.setSelectionPath(JTree.java:1634)
at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2393)
at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(BasicTreeUI.java:3609)
at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(BasicTreeUI.java:3548)
at java.awt.Component.processMouseEvent(Component.java:6532)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
#2 Updated by Francisco Puga over 7 years ago
- Status changed from New to Awaiting response
- File org.gvsig.gdal.prov.ogr-getfeaturecount.patch added
Hi again,
I was taking a look at this. It seems that the call to getLayer().GetFeatureCount(0) in OGRDataStoreProvider.getFeatureCount is returning -1 when the layer comes from gpx or dxf. But it returns the correct result when it comes from spatialite or shp.
The documentation of ogr.Layer.GetFeatureCount says something like this:
Returns the number of features in the layer. For dynamic databases the count may not be exact. If bForce is FALSE, and it would be expensive to establish the feature count a value of -1 may be returned indicating that the count isn't known. If bForce is TRUE some implementations will actually scan the entire layer once to count objects.
So it seems that a full can of the layer is needed in some cases. I provide a patch (against org.gvsig.gdal-1.0.32) that takes this into account.
#3 Updated by Francisco Puga over 7 years ago
- File org.gvsig.gdal.prov.ogr-doblequotes.patch added
My second issue is that my gpx layer has an attribute / field called "desc". This is a very common field when working with software like GPSBabel.
When opening the attribute table all seems to work, but the following error is logged:
ERROR 1: SQL Expression Parsing Error: syntax error, unexpected DESC. Occured around : CT ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_typ ^ WARN [AWT-EventQueue-0] (OGRFetureSetProvider.java:159) - The result of query is null. SQL SELECT ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_type,link2_href,link2_text,link2_type,sym,type,fix,sat,hdop,vdop,pdop,ageofdgpsdata,dgpsid,ogr_geometry FROM 'waypoints' FeatureType default:[ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_type,link2_href,link2_text,link2_type,sym,type,fix,sat,hdop,vdop,pdop,ageofdgpsdata,dgpsid,ogr_geometry] WARN [AWT-EventQueue-0] (OGRFetureSetProvider.java:160) - Getting data without SQL filter
When using the info tool to get more data from a point the same error happens but the point is not correctly obtained.
This error comes from OGRFeatureSetProvider in layer = dataSource.ExecuteSQL(sql). desc is a reserved word in sql so it must be quoted (http://gdal.org/ogr_sql.html). As the doc says to use reserved words double quotes should be used. I'm not sure way double quotes doesn't work for the fields in the order by query (probably a bug in the version of gdal used).
SELECT * FROM layer ORDER BY "my_field" ASC; <-- does not work
But it works for the SELECT fields and to quote the layer name. Right now layer name is quoted with single quotes but my patch changes it to double quotes. So everything seems to work except ordering by a field that is a reserved work.
#4 Updated by Álvaro Anguix over 6 years ago
- Target version set to 2.4.0-2850-final (rev. org.gvsig.desktop-2.0.220)
#5 Updated by Álvaro Anguix over 6 years ago
- Status changed from Awaiting response to New
A revisar por si se mete en la final. O ver alternativas para trabajar con GPX.
#6 Updated by Joaquín del Cerro Murciano over 6 years ago
- Target version changed from 2.4.0-2850-final (rev. org.gvsig.desktop-2.0.220) to 2.4.0-2839-RC2 (rev. org.gvsig.desktop-2.0.206)
#7 Updated by Joaquín del Cerro Murciano over 6 years ago
- Target version changed from 2.4.0-2839-RC2 (rev. org.gvsig.desktop-2.0.206) to 2.4.0-2835 (rev. org.gvsig.desktop-2.0.202)
- Assignee set to Joaquín del Cerro Murciano
#8 Updated by Joaquín del Cerro Murciano over 6 years ago
- Status changed from New to Fixed
#9 Updated by Álvaro Anguix over 6 years ago
- Status changed from Fixed to Closed