Thanks Sean. I already posted on the issue. JP On Sun, Dec 28, 2014 at 12:53 AM, Sean Gillies <sean.gill...@gmail.com> wrote:
> Hi JP, > > I'd love to be able to prevent this kind of breakage at installation. I've > created https://github.com/Toblerity/Shapely/issues/218 to track the > issue and welcome your comments there. > > On Fri, Dec 26, 2014 at 8:33 PM, Juan Pablo Caram <jpca...@gmail.com> > wrote: >> >> Hi Sean, >> >> I've been finding more problems having to do with newer versions of >> Shapely with older versions of GEOS. Please look at the following: >> >> In[23]: from shapely.wkt import dumps >> In[24]: from shapely.geometry import Point >> In[25]: dumps(Point(0,0)) >> Traceback (most recent call last): >> File >> "/usr/local/lib/python2.7/dist-packages/IPython/core/interactiveshell.py", >> line 2883, in run_code >> exec(code_obj, self.user_global_ns, self.user_ns) >> File "<ipython-input-25-6b5b1cef3aeb>", line 1, in <module> >> dumps(Point(0,0)) >> File "/usr/local/lib/python2.7/dist-packages/shapely/wkt.py", line 22, >> in dumps >> return geos.WKTWriter(geos.lgeos, trim=trim, **kw).write(ob) >> File "/usr/local/lib/python2.7/dist-packages/shapely/geos.py", line >> 309, in __init__ >> setattr(self, name, applied_settings[name]) >> File "/usr/local/lib/python2.7/dist-packages/shapely/geos.py", line >> 317, in __setattr__ >> (self.__class__.__name__, name)) >> AttributeError: 'WKTWriter' object has no attribute 'trim' >> >> My environment is: >> >> Shapely 1.5.1 >> GEOS (3, 2, 2) >> >> I understand that my version of GEOS is quite old, but the problem is >> that upgrading Shapely and keeping GEOS is breaking things. Can you >> confirm? This is quite problematic when trying to install software which >> requires Shapely. For example on Ubuntu, if I install the latest available >> Shapely and the latest available GEOS I run into this situation, which >> didn't happen with older versions of Shapely. >> >> Perhaps the way to go about this is to establish which is the minimum >> version of GEOS required in a given version of Shapely and have Shapely >> completely fail as early as possible (ideally on installation or on import >> maybe?). >> >> Thanks, >> >> JP >> >> On Mon, Dec 15, 2014 at 3:10 PM, Juan Pablo Caram <jpca...@gmail.com> >> wrote: >>> >>> Sean, >>> I seems that it's all about a version of GEOS that it's too old. I will >>> try upgrading to the latest and try again. >>> Thanks a lot! >>> JP >>> >>> On Mon, Dec 15, 2014 at 1:51 PM, Sean Gillies <sean.gill...@gmail.com> >>> wrote: >>>> >>>> JP, >>>> >>>> Actually, you can call unary_union with an empty list in the latest >>>> Shapely. >>>> >>>> >>> import shapely >>>> >>> shapely.__version__ >>>> '1.5.1' >>>> >>> import shapely.geos >>>> >>> shapely.geos.geos_version >>>> (3, 4, 2) >>>> >>> from shapely.ops import unary_union >>>> >>> unary_union([]) >>>> <shapely.geometry.collection.GeometryCollection object at 0x10c3b6050> >>>> >>>> In your case, the KeyError gets raised first (I believe because your >>>> GEOS library is too old). Because cascaded_union has been aliased to >>>> unary_union (in Shapely 1.4+), it's the same story there. >>>> >>>> On Mon, Dec 15, 2014 at 11:33 AM, Juan Pablo Caram <jpca...@gmail.com> >>>> wrote: >>>>> >>>>> Hi Sean, >>>>> >>>>> Thanks for your response. What really concerns me here is that in case >>>>> 1 (Newer GEOS and shapely) I cannot call cascaded_union (or unary_union) >>>>> with an empty list. I could on earlier versions. >>>>> >>>>> Thanks, >>>>> >>>>> JP >>>>> >>>>> On Mon, Dec 15, 2014 at 12:15 PM, Sean Gillies <sean.gill...@gmail.com >>>>> > wrote: >>>>>> >>>>>> 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 >>>>>> >>>>>> >>>>> _______________________________________________ >>>>> 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 >>>> >>>> >> _______________________________________________ >> 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 > >
_______________________________________________ Community mailing list Community@lists.gispython.org http://lists.gispython.org/mailman/listinfo/community