Hi, Attribute names are auto-shortened and if needed, automatically renamed from the end of the name for avoiding duplicate names. No warnings. Rather user friendly solution which is also used in GDAL and some other software. Only drawback is that the result may not please users and they must go to edit the schema and re-export. But if user reads data from database or WFS the new layer has again schema with long names. That is probably why Michaël has made the re-usable renaming tool.
-Jukka Rahkonen- edgar soldin wrote: > 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-dev >>>>>>>>>>>> el >>>>>>>>>>>> >>>>>>>>>>> ------------------------------------------------------------ >>>>>>>>>>> ------------------ >>>>>>>>>>> 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-deve >>>>>>>>>>> l >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> ------------------------------------------------------------ >>>>>>>> ------------------ >>>>>>>>>> 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 ------------------------------------------------------------------------------ _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel