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

Reply via email to