right again, and i even quoted the http://geojson.org/geojson-spec.html part to you wrt. properties some mails ago ;(. obviously need more coffee still. will patch the writer accordingly, even though OJ internally does not know null geometries i implemented it just for completion.
i know i can create empty geoms with JTS, not sure those are supposed to be written in GeoJSON, as eg. a point must hold coordinates afaiu it. ..ede On 15.11.2016 11:40, Rahkonen Jukka (MML) wrote: > Hi, > > According to this mail empty geometries in GeoJSON are {"geometry": null} > http://lists.geojson.org/pipermail/geojson-geojson.org/2013-October/000839.html > > -Jukka- > > > -----Alkuperäinen viesti----- > Lähettäjä: edgar.sol...@web.de [mailto:edgar.sol...@web.de] > Lähetetty: 15. marraskuuta 2016 12:35 > Vastaanottaja: jump devel <jump-pilot-devel@lists.sourceforge.net> > Aihe: Re: [JPP-Devel] SVN: [5185] > core/trunk/src/com/vividsolutions/jump/workbench/ui/ LayerNameRenderer.java > > Jukka, > > nothing to worry, my mind was w/ GeoJSON still and the only possibility to > add an empty geom there is to use GeometryCollection because of the > constraints i described. > > my bad ..ede > > On 15.11.2016 11:16, Rahkonen Jukka (MML) wrote: >> 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 > ------------------------------------------------------------------------------ > _______________________________________________ > 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