Hi, What do you mean? You did lot of work with empty geometries two years ago. In December 1st, 2014 I answered you, probably after the final tests
"Hi Ede, All this seems to work perfectly now: - Different empty geometries are visualized with corresponding icons - All kind of empty geometries can be saved into JUMP jml and FME GML and returned as they were. - Empty geometries in shapefiles are handled in a reasonable way: - "Extract layers by geometry type" extracts empty points to a point layer, empty linestrings to a linestring layer etc. - Empty geometries which are read from a shapefile are marked to be empty geometries of the same type as the not-empty geometries. A point shapefile brings empty points, a line shapefile empty multilinestrings and a polygon shape empty multipolygons. Because shapefiles do not make much difference between simple and multivariants this is just right." -Jukka- -----Alkuperäinen viesti----- Lähettäjä: edgar.sol...@web.de [mailto:edgar.sol...@web.de] Lähetetty: 15. marraskuuta 2016 12:11 Vastaanottaja: Rahkonen Jukka (MML) <jukka.rahko...@maanmittauslaitos.fi>; OpenJump develop and use <jump-pilot-devel@lists.sourceforge.net> Aihe: Re: [JPP-Devel] SVN: [5185] core/trunk/src/com/vividsolutions/jump/workbench/ui/ LayerNameRenderer.java GeometryCollection is afaik the only possibility to have an empty geometry as all other geom types require either coordinates or sub geoms per definition. ..ede On 15.11.2016 11:06, Rahkonen Jukka (MML) wrote: > Hi, > > DB Query plugin is attaching a fake GEOMETRYCOLLECTION EMPTY to all the lines > without a real geometry. For my purposes it has been a good solution but I > can’t say if it suits for other use cases. > > -Jukka Rahkonen- > > Stefan Steiniger wrote: > > > Hi, > > i used empty geomcollection so far, to have something there... I am not sure > how much work it would be to introduce a new table/data layer without a > geometry - as i am not sure if OJ is designed for that. Simplest may be to > copy and make the field invisible for now. > > Perhaps Michaël has a better idea about the possibility to throw out the geom. > > > > cheers, > > stefan > > > ------ Originalnachricht ------ > Von: > Datum: 14.11.2016 9:45 > An: OpenJump develop and use; > Betreff:Re: [JPP-Devel] SVN: [5185] > core/trunk/src/com/vividsolutions/jump/workbench/ui/ LayerNameRenderer.java > > i guess the cleanest solution would be a new layer class eg. DataLayer, that > simply does not allow adding/editing geometries or does not even have a > geometry attribute. > > > > in the 2nd case you would probably need a new featurecollection w/o a > geometry column as well and the whole thing would throw some exceptions here > and there, as OJ expects geometries in featurecollections, but apart from > that it would be clean and the renderer would not need to monitor geom > changes at all. > > > > ..ede > > > > On 14.11.2016 10:39, Giuseppe Aruta wrote: > >> Thanks Michael Ede > >> Indeed I came across (as a side relative problem ) working on Saxtante. > >> Sextante allows to work on Table files while Oj not. We can take advance of > >> the Sextante table algorithms allowing Sextante to decode the vector > >> layers, with all features with empty geometries (see for instance loading > >> .csv on auto mode) as tables (I already added added into Sextante binding a > >> Boolean method that allows to decode these files). > >> I wondered if users would also have benefit to visualize that a table is > >> loaded into OJ workbench, with a table icon. > >> I will check other solutions. Thanks for the hint. > >> Peppe > >> > >> Il 13/Nov/2016 23:21, "Michaël Michaud" ha > >> scritto: > >> > >>> Hi Peppe, > >>> > >>> Seel also my answer on 2016-10-29. > >>> > >>> TreeLayerNamePanel has a listener, but to avoid a featureCollection scan > >>> after each change > >>> you probably need to keep a cache in the Layer as suggested by Ede, and > >>> use the Layer's > >>> listener to update the cache every time a feature is added, removed or > >>> changed > >>> > >>> Michaël > >>> > >>> > >>> Le 13/11/2016 à 19:51, edgar.sol...@web.de<mailto:edgar.sol...@web.de> a >>> écrit : > >>>> thanks.. how about implementing the caching/listener approach if you > >>> like to have icon? ..ede > >>>> > >>>> On 13.11.2016 18:57, Giuseppe Aruta wrote: > >>>>> Ok Ede, I didn't know it. I will revert the change. > >>>>> Thanks again > >>>>> Peppe > >>>>> > >>>>> Il 13/Nov/2016 18:48, ha scritto: > >>>>> > >>>>>> Peppe, > >>>>>> > >>>>>> NACK.. this is going to get very slow for huge datasets containing > >>> empty > >>>>>> geoms only, as it is run on every redraw of the layer tree. please > >>> cache > >>>>>> the state and use a layer change listener or else users will complain > >>> about > >>>>>> a frozen OJ some time in the future and we will have a hard time to > >>>>>> pinpoint the reason, again ;) > >>>>>> > >>>>>> ..ede > >>>>>> > >>>>>> On 13.11.2016 18:41, >>>>>> jump-pilot-...@lists.sourceforge.net<mailto:jump-pilot-...@lists.sourceforge.net> >>>>>> wrote: > >>>>>>> Revision: 5185 > >>>>>>> http://sourceforge.net/p/jump-pilot/code/5185 > >>>>>>> Author: ma15569 > >>>>>>> Date: 2016-11-13 17:41:37 +0000 (Sun, 13 Nov 2016) > >>>>>>> Log Message: > >>>>>>> ----------- > >>>>>>> The layer tree shows a table icon for layers that have features with > >>>>>> empty geometries > >>>>>>> Modified Paths: > >>>>>>> -------------- > >>>>>>> core/trunk/src/com/vividsolutions/jump/workbench/ > >>>>>> ui/LayerNameRenderer.java > >>>>>>> Modified: core/trunk/src/com/vividsolutions/jump/workbench/ > >>>>>> ui/LayerNameRenderer.java > >>>>>>> =================================================================== > >>>>>>> --- core/trunk/src/com/vividsolutions/jump/workbench/ > >>> ui/LayerNameRenderer.java > >>>>>> 2016-11-13 17:21:20 UTC (rev 5184) > >>>>>>> +++ core/trunk/src/com/vividsolutions/jump/workbench/ > >>> ui/LayerNameRenderer.java > >>>>>> 2016-11-13 17:41:37 UTC (rev 5185) > >>>>>>> @@ -36,6 +36,7 @@ > >>>>>>> import java.awt.Rectangle; > >>>>>>> import java.io.File; > >>>>>>> import java.util.Iterator; > >>>>>>> +import java.util.List; > >>>>>>> > >>>>>>> import javax.swing.DefaultListCellRenderer; > >>>>>>> import javax.swing.Icon; > >>>>>>> @@ -54,9 +55,11 @@ > >>>>>>> import org.openjump.core.rasterimage.RasterImageLayer; > >>>>>>> > >>>>>>> import com.vividsolutions.jts.geom.Envelope; > >>>>>>> +import com.vividsolutions.jts.geom.Geometry; > >>>>>>> import com.vividsolutions.jump.I18N; > >>>>>>> import com.vividsolutions.jump.feature.Feature; > >>>>>>> import com.vividsolutions.jump.feature.FeatureCollection; > >>>>>>> +import com.vividsolutions.jump.feature.FeatureCollectionWrapper; > >>>>>>> import com.vividsolutions.jump.io.datasource.DataSourceQuery; > >>>>>>> import com.vividsolutions.jump.util.StringUtil; > >>>>>>> import com.vividsolutions.jump.workbench.JUMPWorkbench; > >>>>>>> @@ -118,6 +121,7 @@ > >>>>>>> private ImageIcon rasterIcon = IconLoader.icon("map_13.png"); > >>>>>>> private ImageIcon sextante_rasterIcon = > >>> IconLoader.icon("mapSv2_13. > >>>>>> png"); > >>>>>>> private ImageIcon sextante_rasterIcon2 = > >>>>>> IconLoader.icon("mapSv2_13bw.png"); > >>>>>>> + private ImageIcon table_Icon = IconLoader.icon("Table.gif"); > >>>>>>> private final static String LAYER_NAME = I18N > >>>>>>> .get("org.openjump.core.ui.plugin.layer. > >>>>>> LayerPropertiesPlugIn.Layer-Name"); > >>>>>>> private final static String FILE_NAME = > >>>>>> I18N.get("ui.MenuNames.FILE"); > >>>>>>> @@ -379,6 +383,12 @@ > >>>>>>> .getFeatureCollectionWrapper().size() > 1 ? > >>>>>> multiRasterIcon > >>>>>>> : rasterIcon); > >>>>>>> imageLabel.setVisible(true); > >>>>>>> + } else if (showColorPanel && layerable instanceof Layer > >>>>>>> + && isTable((Layer) layerable)) { > >>>>>>> + //Show a table icon if the Layer has features with empty > >>>>>> geometries > >>>>>>> + imageLabel.setIcon(table_Icon); > >>>>>>> + imageLabel.setVisible(true); > >>>>>>> + > >>>>>>> } else if (showColorPanel && layerable instanceof Layer) { > >>>>>>> colorPanel.init((Layer) layerable, isSelected, > >>>>>>> list.getBackground(), > >>> list.getSelectionBackground()) > >>>>>> ; > >>>>>>> @@ -1022,4 +1032,27 @@ > >>>>>>> && bgc.equals(p.getBackground()) && p.isOpaque(); > >>>>>>> return !colorMatchOrOpaque && super.isOpaque(); > >>>>>>> } > >>>>>>> + > >>>>>>> + /* > >>>>>>> + * [Giuseppe Aruta 11.2016] . True if all the layer geometries > >>> are > >>>>>> empty > >>>>>>> + * (Geometrycollection empty). Workaround to decode table files > >>>>>> (like .csv or .dbf) > >>>>>>> + * so that they are loaded in Sextante as table > >>>>>>> + */ > >>>>>>> + public static boolean isTable(Layer layer) { > >>>>>>> + FeatureCollectionWrapper featureCollection = layer > >>>>>>> + .getFeatureCollectionWrapper(); > >>>>>>> + List featureList = featureCollection.getFeatures(); > >>>>>>> + Geometry nextGeo = null; > >>>>>>> + for (@SuppressWarnings("unchecked") > >>>>>>> + Iterator i = > >>> featureList.iterator(); > >>>>>> i > >>>>>>> + .hasNext();) { > >>>>>>> + Feature feature = (Feature) i.next(); > >>>>>>> + nextGeo = feature.getGeometry(); > >>>>>>> + } > >>>>>>> + if (!featureCollection.isEmpty() && nextGeo.isEmpty()) { > >>>>>>> + return true; > >>>>>>> + } else { > >>>>>>> + return false; > >>>>>>> + } > >>>>>>> + } > >>>>>>> } > >>>>>>> \ No newline at end of file > >>>>>>> > >>>>>>> > >>>>>>> ------------------------------------------------------------ > >>>>>> ------------------ > >>>>>>> Developer Access Program for Intel Xeon Phi Processors > >>>>>>> Access to Intel Xeon Phi processor-based developer platforms. > >>>>>>> With one year of Intel Parallel Studio XE. > >>>>>>> Training and support from Colfax. > >>>>>>> Order your platform today. http://sdm.link/xeonphi > >>>>>>> _______________________________________________ > >>>>>>> Jump-pilot-devel mailing list > >>>>>>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > >>>>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>>>>>> > >>>>>> ------------------------------------------------------------ > >>>>>> ------------------ > >>>>>> Developer Access Program for Intel Xeon Phi Processors > >>>>>> Access to Intel Xeon Phi processor-based developer platforms. > >>>>>> With one year of Intel Parallel Studio XE. > >>>>>> Training and support from Colfax. > >>>>>> Order your platform today. http://sdm.link/xeonphi > >>>>>> _______________________________________________ > >>>>>> Jump-pilot-devel mailing list > >>>>>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > >>>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>>>>> > >>>>> > >>>>> > >>>>> ------------------------------------------------------------ > >>> ------------------ > >>>>> Developer Access Program for Intel Xeon Phi Processors > >>>>> Access to Intel Xeon Phi processor-based developer platforms. > >>>>> With one year of Intel Parallel Studio XE. > >>>>> Training and support from Colfax. > >>>>> Order your platform today. http://sdm.link/xeonphi > >>>>> > >>>>> > >>>>> > >>>>> _______________________________________________ > >>>>> Jump-pilot-devel mailing list > >>>>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > >>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>>>> > >>>> ------------------------------------------------------------ > >>> ------------------ > >>>> Developer Access Program for Intel Xeon Phi Processors > >>>> Access to Intel Xeon Phi processor-based developer platforms. > >>>> With one year of Intel Parallel Studio XE. > >>>> Training and support from Colfax. > >>>> Order your platform today. http://sdm.link/xeonphi > >>>> _______________________________________________ > >>>> Jump-pilot-devel mailing list > >>>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > >>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>>> > >>> > >>> > >>> ------------------------------------------------------------ > >>> ------------------ > >>> Developer Access Program for Intel Xeon Phi Processors > >>> Access to Intel Xeon Phi processor-based developer platforms. > >>> With one year of Intel Parallel Studio XE. > >>> Training and support from Colfax. > >>> Order your platform today. http://sdm.link/xeonphi > >>> _______________________________________________ > >>> Jump-pilot-devel mailing list > >>> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > >>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >>> > >> > >> > >> > >> ------------------------------------------------------------------------------ > >> Developer Access Program for Intel Xeon Phi Processors > >> Access to Intel Xeon Phi processor-based developer platforms. > >> With one year of Intel Parallel Studio XE. > >> Training and support from Colfax. > >> Order your platform today. http://sdm.link/xeonphi > >> > >> > >> > >> _______________________________________________ > >> Jump-pilot-devel mailing list > >> Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > >> > > > > ------------------------------------------------------------------------------ > > Developer Access Program for Intel Xeon Phi Processors > > Access to Intel Xeon Phi processor-based developer platforms. > > With one year of Intel Parallel Studio XE. > > Training and support from Colfax. > > Order your platform today. http://sdm.link/xeonphi > > _______________________________________________ > > Jump-pilot-devel mailing list > > Jump-pilot-devel@lists.sourceforge.net<mailto:Jump-pilot-devel@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > ------------------------------------------------------------------------------ _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel