maybe a panel to select the columns to be exported for the selected format 
would be A. reusable B. fitting for several formats (eg. csv, json).

..ede

On 15.11.2016 18:44, Giuseppe Aruta wrote:
> Hi everybody
> and thanks for the comments
> 
> @Ede >can CSV writer ignore geoms if i want to write a plain data table?
> This is a good point. As CSV exporter also saves geometries in WKT.
> I did a couple of tests (exporting large shapefiles of Italian
> Regions/Provinces to csv), my LibreOffice speadsheet easly opened them (after
> a couple of quirks that the test is too long). Than I can delete the
> geometry columns and work with the other info
> 
> --------------------------------------------------
> 
> Anyhow, going back to my modification. The problem cames out from the
> following boolean
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> *public static boolean isTable(Layer layer) {
> FeatureCollectionWrapper featureCollection = layer
> .getFeatureCollectionWrapper();        List featureList =
> featureCollection.getFeatures();        Geometry nextGeo = null;        for
> (@SuppressWarnings("unchecked")        Iterator<FeatureCollectionWrapper> i
> = featureList.iterator(); i                .hasNext();) {
> Feature feature = (Feature) i.next();            nextGeo =
> feature.getGeometry();        }        if (!featureCollection.isEmpty() &&
> nextGeo.isEmpty()) {            return true;        } else {
> return false;        }    }*
> It is rought and self explaining (I am not a good developer). The feature
> collection is scanned. If all the geometries associated to all features are
> empty, it gives back true().
> 
> I wonder if I can limit all the trouble on this method, finding a simpler
> and less invasive solution. Just a couple of idea:
> It scan only over  the first 1000 of features
> or
> it does a random scan over only 1000 features.
> 
> There will be probably other simpler solutions. Any  idea is welcome.
> 
> 
> @Michael. Thanks for the nice explanation. Very intuitive for the pictures.
> Unfortunately it requires a hard job, more that the my (or our) target.
> 
> Best regards
> 
> Peppe
> 
> 
> 
> 
> 2016-11-15 12:41 GMT+01:00 <edgar.sol...@web.de>:
> 
>> Mike,
>>
>> i see your point. i'd vote to stick what we've got then and simply
>> autocreate empty geometries as we do now. just curious, can CSV writer
>> ignore geoms if i want to write a plain data table?
>>
>> ..ede
>>
>> On 15.11.2016 09:02, Michaël Michaud wrote:
>>> Hi,
>>>
>>> If I had to refactor the layer hierarchy to include datasets without
>> geometry, I would probably try something like that
>>> (note that it would be a big refactoring, and I am not able to evaluate
>> the workload to achieve it)
>>>
>>> Current layer hierarchy
>>>
>>> Current layer hierarchy
>>>
>>> Proposition to include non-geometric data (and to factorize some
>> attributes)
>>>
>>>
>>> Proposed layer hierachy
>>> Le 14/11/2016 à 14:29, Stefan Steiniger a écrit :
>>>>
>>>> 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 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 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
>>>>>>>>>> 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
>>>>>>>>> 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
>>>>>>>> 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
>>>>>>> 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
>>>>>> 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
>>>>> 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
>>>> 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
>>>> 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
>>>
>>
>> ------------------------------------------------------------
>> ------------------
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> 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
> 

------------------------------------------------------------------------------
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to