Well, given that I want the benefits of Shapely in my Python code, what value is there to keeping everything in GeoJSON objects ? We've got simplejson in here already (it just comes with pylons), and it doesn't seem to me that geojson supports wkb, so I still need shapely for converting to a format for the database. In addition, it doesn't provide anything that shapely doesn't already. I could understand at some point if Shapely depends on geojson for converstion to json, but it doesn't yet...
Am I missing some other benefit? Thanks, Doug On May 19, 2009, at 12:07 PM, Sean Gillies wrote: > Sorry, I thought you were talking about using > http://pypi.python.org/pypi/geojson/ > . I recommend giving it a try. Matt Russell did a great job on it, and > I think he's using it in an app not unlike yours. > > Sean > > On May 19, 2009, at 9:42 AM, Douglas Mayle wrote: > >> Which GeoJSON classes? I grepped through the source, and didn't find >> anything. Also, the reason to use the Geometry objects is so that >> they're available to the application. They're stored correctly as >> geometry types in the database, they come out as geometry objects, >> and >> they go back in the same. If I try to make them GeoJSON, I have to >> do >> things to work with them, which defeats the point of on ORM... >> >> Douglas Mayle >> >> On May 19, 2009, at 11:18 AM, Sean Gillies wrote: >> >>> My approach (using Shapely 1.0.12) would be to use the GeoJSON >>> classes >>> all the way through your app, from client to sessions to RDBMS. Use >>> the PointAdapter to wrap objects as needed. >>> >>> Adaptation via the geo interface (__geo_interface__ attribute) is >>> currently broken in 1.1a4, but getting it working is my next highest >>> priority. >>> >>> Sean >>> >>> On May 19, 2009, at 8:28 AM, Douglas Mayle wrote: >>> >>>> Okay, well I have a working solution. Assuming geojson is my dict, >>>> the code becomes >>>> >>>>>>> wkb.loads(asShape(geojson).to_wkb()) >>>> <shapely.geometry.point.Point object at 0x1faead0> >>>> >>>> Douglas Mayle >>>> >>>> On May 19, 2009, at 9:56 AM, Douglas Mayle wrote: >>>> >>>>> A little bit more context. I've got a GeoJSON geometry coming >>>>> back >>>>> from the client side, I call asShape, and it returns the >>>>> PointAdapter. I'm assigning that PointAdapter to a SQLAlchemy >>>>> model >>>>> instance, which is saving it to the database. In certain >>>>> circumstances, I need to save that model instance to a session, >>>>> rather >>>>> than the database. Is there something else I should be using >>>>> instead >>>>> of asShape and PointAdapters ? >>>>> >>>>> Doug >>>>> >>>>> On May 18, 2009, at 6:44 PM, Sean Gillies wrote: >>>>> >>>>>> I'd be really surprised if pickling point adapters worked. At the >>>>>> very >>>>>> least, you'd have to pickle the object they wrap too, and that >>>>>> starts >>>>>> to get beyond their scope. They are really only about temporarily >>>>>> wrapping other long-lived objects. Pickle their context and then >>>>>> re- >>>>>> wrap as needed. >>>>>> >>>>>> Sean >>>>>> >>>>>> On May 18, 2009, at 4:27 PM, Douglas Mayle wrote: >>>>>> >>>>>>> Also, I don't know if you addressed the serialization as >>>>>>> well. I >>>>>>> added: >>>>>>> >>>>>>> def __reduce__(self): >>>>>>> return (self.__class__, (self.context,), self.to_wkb()) >>>>>>> >>>>>>> to the PointAdapter class, which seems to take care of the >>>>>>> issue... >>>>>>> (I tested this by checking out 1.0.12) >>>>>>> >>>>>>> Douglas Mayle >>>>>>> >>>>>>> On May 18, 2009, at 6:03 PM, Sean Gillies wrote: >>>>>>> >>>>>>>> I've just fixed this bug and upload a4 eggs to my index. Care >>>>>>>> to >>>>>>>> try >>>>>>>> again? >>>>>>>> >>>>>>>> More notes at http://sgillies.net/blog/900/diving-into- >>>>>>>> shapely-1-1. >>>>>>>> >>>>>>>> Cheers, >>>>>>>> Sean >>>>>>>> >>>>>>>> On May 18, 2009, at 3:09 PM, Douglas Mayle wrote: >>>>>>>> >>>>>>>>> Hi all, >>>>>>>>> I'm having some trouble pickling shapely geometry objects. >>>>>>>>> After >>>>>>>>> saving a shapely geometry object in my beaker session (which >>>>>>>>> pickles >>>>>>>>> the object, I am unable to reload it from the database) This >>>>>>>>> is >>>>>>>>> the >>>>>>>>> error I'm getting: >>>>>>>>> >>>>>>>>>>>> import cPickle >>>>>>>>>>>> >>>>>>>>> cPickle >>>>>>>>> .loads >>>>>>>>> ("(dp1\nS'session'\np2\n(dp3\nS'media'\np4\n(lp5\nccopy_reg >>>>>>>>> \n_reconstructor\np6\n(ccommunityalmanac.model.almanac\nStory >>>>>>>>> \np7\nc__builtin__\nobject >>>>>>>>> \np8\nNtRp9\n(dp10\nS'text'\np11\nVsadfsfd >>>>>>>>> \np12 >>>>>>>>> \nsS'_sa_instance_state'\np13\ng6\n(csqlalchemy.orm.identity >>>>>>>>> \nIdentityManagedState >>>>>>>>> \np14\ng8\nNtRp15\n(dp16\nS'modified'\np17\nI01\nsS'committed_state'\np18\n(dp19\ng11\ncsqlalchemy.util\nsymbol\np20\n(S'NO_VALUE'\np21\ntRp22\nsS'order'\np23\ng22\nssS'instance'\np24\ng9\nsS'callables'\np25\n(dp26\nsS'parents'\np27\n(dp28\nsS'key'\np29\nNsS'expired_attributes'\np30\nc__builtin__\nfrozenset\np31\n((ltRp32\nsS'expired'\np33\nI00\nsS'pending'\np34\n(dp35\nsbsg23\nI0\nsS'id'\np36\nNsbag6\n(ccommunityalmanac.model.almanac\nMap\np37\ng8\nNtRp38\n(dp39\nS'_sa_instance_state'\np40\ng6\n(g14\ng8\nNtRp41\n(dp42\ng17\nI01\nsg18\n(dp43\nS'location'\np44\ng22\nsS'order'\np45\ng22\nssg24\ng38\nsg25\n(dp46\nsg27\n(dp47\nsg29\nNsg30\ng32\nsg33\nI00\nsg34\n(dp48\nsbsg44\ncshapely.geometry.point\nPointAdapter\np49\n(tRp50\nS'\\x01\\x01\\x00\\x00\\x00\\x00\\xa8\\xb2\\x91\\x1ex_\\xc1I\\x8d%\\xb10\\xf0RA'\nbsg45\nI1\nsbasS'_accessed_time'\np51\nF1242679546.0185621\nsS'_creation_time'\np52\nF1242679454.1160531\nss." >>>>>>>>> ... ) >>>>>>>>> Traceback (most recent call last): >>>>>>>>> File "<stdin>", line 1, in <module> >>>>>>>>> TypeError: ('__init__() takes exactly 2 arguments (1 given)', >>>>>>>>> <class >>>>>>>>> 'shapely.geometry.point.PointAdapter'>, ()) >>>>>>>>>>>> >>>>>>>>> >>>>>>>>> I wanted to check to see if it was just fixed in trunk, but >>>>>>>>> I'm >>>>>>>>> unable >>>>>>>>> to run trunk because util seems to have disappeared: >>>>>>>>> Launching server process >>>>>>>>> /Users/douglas/Projects/almanacpylons/lib/python2.5/site- >>>>>>>>> packages/ >>>>>>>>> Shapely-1.1a3-py2.5.egg/shapely/implementation.py:40: >>>>>>>>> ImplementationWarning: no installed plugin package matches >>>>>>>>> requirements shapely.geos>=1.0a3 >>>>>>>>> warn("no installed plugin package matches requirements %s" % >>>>>>>>> str(e), ImplementationWarning) >>>>>>>>> Traceback (most recent call last): >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/bin/ca", line 22, >>>>>>>>> in >>>>>>>>> <module> >>>>>>>>> main() >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/commands.py", line 184, in main >>>>>>>>> from communityalmanac.config.middleware import make_app >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/config/middleware.py", line 31, in <module> >>>>>>>>> from communityalmanac.config.environment import >>>>>>>>> load_environment >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/config/environment.py", line 29, in <module> >>>>>>>>> import communityalmanac.lib.helpers >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/lib/helpers.py", line 25, in <module> >>>>>>>>> from communityalmanac.lib.base import render >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/lib/base.py", line 27, in <module> >>>>>>>>> from communityalmanac.model import meta >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/model/__init__.py", line 38, in <module> >>>>>>>>> from communityalmanac.model.almanac import Almanac, Page, >>>>>>>>> User, >>>>>>>>> Media, PDF, Sound, Image, Story, Map, Comment >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/model/almanac.py", line 25, in <module> >>>>>>>>> from sqlgeotypes import POINT >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/src/ >>>>>>>>> communityalmanac/ >>>>>>>>> communityalmanac/model/sqlgeotypes.py", line 3, in <module> >>>>>>>>> from shapely import geometry, wkb >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/lib/python2.5/ >>>>>>>>> site- >>>>>>>>> packages/Shapely-1.1a3-py2.5.egg/shapely/geometry/ >>>>>>>>> __init__.py", >>>>>>>>> line >>>>>>>>> 20, in <module> >>>>>>>>> from point import Point, asPoint >>>>>>>>> File "/Users/douglas/Projects/almanacpylons/lib/python2.5/ >>>>>>>>> site- >>>>>>>>> packages/Shapely-1.1a3-py2.5.egg/shapely/geometry/point.py", >>>>>>>>> line >>>>>>>>> 10, >>>>>>>>> in <module> >>>>>>>>> from shapely.geometry.utils import coord_seq >>>>>>>>> ImportError: No module named utils >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Douglas Mayle >>>>>>>>> >>>>>>>>> >>>>>>>>> > _______________________________________________ > Community mailing list > [email protected] > http://lists.gispython.org/mailman/listinfo/community _______________________________________________ Community mailing list [email protected] http://lists.gispython.org/mailman/listinfo/community
