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
