what does currently happen when saving shapefiles w/ too long attrib names? do they get auto shorted, the user a warning or?
..ede On 15.11.2016 23:44, Michaël Michaud wrote: > Hi, > > Renaming attributes to be compatible with shapefile specification is a > common need. > I also had this need and decided to go through configuration files. With > layers having > 20 to 30 attributes each, if you have to rename attributes more than one > or two times, > a graphical interface will not do it. > > Currently, I just have a quick and dirty plugin, and I'm not completely > satisfied with it > but I would be happy do discuss possible improvements. Current choices > and limitations : > 1 - not linked with drivers : layer names and attribute names are > changed in the project > -> not possible to remove geometry column > 2 - renaming is not undoable > (structure change is generally not undoable in OpenJUMP) > 3 - I choose plain text file rather than xml to keep it as simple as > possible > > Notice : this is more a ETL capability. Wonder if it could be integrated > to Sextante > modeler. > > Michaël > > > Le 15/11/2016 à 21:49, Rahkonen Jukka (MML) a écrit : >> Good idea. How about having an option to rename the columns to be exported >> by the same? Would be handy for example when exporting columns with long >> names into shapefiles when automatic truncation can create non-informative >> names. >> >> -Jukka Rahkonen- >> >> edgar soldin wrote: >> >>> 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 >> >> ------------------------------------------------------------------------------ >> _______________________________________________ >> 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