Hi JP, As far as I can tell, the main difference between your cases is that in case 2, the included GEOS lib has a version >= 3.3. GEOS 3.2.2 (which is 4.5 years old, by the way) does not support unary union.
See https://github.com/Toblerity/Shapely/blob/master/shapely/geos.py#L721 <https://github.com/Toblerity/Shapely/blob/master/shapely/geos.py#L72> I admit that the KeyError is not the most helpful of errors. NotSupported might be bettter. I'll create a new issue in the tracker. On Sat, Dec 13, 2014 at 3:18 PM, Juan Pablo Caram <jpca...@gmail.com> wrote: > Hi, > > Could someone give me some light into this: I'm getting very different > behavior between versions/platforms for cascaded_union and unary_union. I > would like to know what it the expected/latest/correct behavior. These are > the two cases: > > CASE 1 > ====== > > Os: Ubuntu 12.04 > libgeos-c1: 3.2.2-3ubuntu1 > shapely: 1.5.1 > python: 2.7.3 > > >>> cascaded_union([]) > --------------------------------------------------------------------------- > ValueError Traceback (most recent call last) > /home/jpcaram/flatcam/<ipython-input-4-0c768f786c71> in <module>() > ----> 1 cascaded_union([]) > > /usr/local/lib/python2.7/dist-packages/shapely/ops.pyc in > cascaded_union(self, geoms) > 128 subs[i] = g._geom > 129 collection = lgeos.GEOSGeom_createCollection(6, subs, L) > --> 130 return > geom_factory(lgeos.methods['cascaded_union'](collection)) > 131 > 132 def unary_union(self, geoms): > > /usr/local/lib/python2.7/dist-packages/shapely/geometry/base.pyc in > geom_factory(g, parent) > 53 # Abstract geometry factory for use with topological methods > below > > 54 if not g: > ---> 55 raise ValueError("No Shapely geometry can be created from > null value") > 56 ob = BaseGeometry() > 57 geom_type = geometry_type_name(g) > > ValueError: No Shapely geometry can be created from null value > > >>> unary_union([]) > --------------------------------------------------------------------------- > KeyError Traceback (most recent call last) > /home/jpcaram/flatcam/<ipython-input-6-9089513baa4e> in <module>() > ----> 1 unary_union([]) > > /usr/local/lib/python2.7/dist-packages/shapely/ops.pyc in > unary_union(self, geoms) > 146 subs[i] = g._geom > 147 collection = lgeos.GEOSGeom_createCollection(6, subs, L) > --> 148 return > geom_factory(lgeos.methods['unary_union'](collection)) > 149 > 150 operator = CollectionOperator() > > KeyError: 'unary_union' > > >>> cascaded_union([Point(0,0)]) > <shapely.geometry.point.Point at 0x201d510> > > >>> unary_union([Point(0,0)]) > --------------------------------------------------------------------------- > KeyError Traceback (most recent call last) > /home/jpcaram/flatcam/<ipython-input-9-858a4018548e> in <module>() > ----> 1 unary_union([Point(0,0)]) > > /usr/local/lib/python2.7/dist-packages/shapely/ops.pyc in > unary_union(self, geoms) > 146 subs[i] = g._geom > 147 collection = lgeos.GEOSGeom_createCollection(6, subs, L) > --> 148 return > geom_factory(lgeos.methods['unary_union'](collection)) > 149 > 150 operator = CollectionOperator() > > KeyError: 'unary_union' > > > CASE 2: > ======= > > Os: Windows 7 > python: 2.7.6 > shapely: 1.3.0 (Installer came with geos) > > >>> cascaded_union([]) > <shapely.geometry.collection.GeometryCollection at 0x7708830> > > >>> unary_union([]) > <shapely.geometry.collection.GeometryCollection at 0x7708ab0> > > > > In CASE 1, everything is newer except for the python version. Has the > behavior of shapely/geos changed? > > Thank You, > > JP > > > _______________________________________________ > Community mailing list > Community@lists.gispython.org > http://lists.gispython.org/mailman/listinfo/community > > -- Sean Gillies
_______________________________________________ Community mailing list Community@lists.gispython.org http://lists.gispython.org/mailman/listinfo/community