On Mar 22, 2010, at 12:31 PM, Tobias wrote: > Hi, > > I am working on the extension GeoAlchemy [1]. Currently GeoAlchemy > always fetches the data for the mapped geometry attributes in the > database internal format. I am trying to force GeoAlchemy to use the > format WKB for the communication with the database. > > @compiles(MyColumn) > def compile_mycolumn(element, compiler, **kw): > return "AsBinary(%s)" % element.name > > I am using the compiler extension to query for the geometry in WKB. So > far this works fine for loading and inserting/updating mapped objects, > but it is getting a bit ugly for queries. Please consider to following > query: > > session.query(MyPoint).filter(MyPoint.the_geom.within(polygon.the_geom)).first() > > After modifying the SpatialComparator, the query send to the database > looks like this: > > SELECT AsBinary(the_geom) AS tests_the_geom, tests.id AS tests_id, > tests.name AS tests_name > FROM tests > WHERE Within(GeomFromWKB(AsBinary(the_geom)), GeomFromWKB(%s)) > LIMIT 0, 1 > > For this query the method compile_mycolumn(..) is called two times: > one time for the select clause and one time for the where clause. The > first time it is intended, but the second time I have to do this round- > trip "GeomFromWKB(AsBinary(the_geom))" to make it work. > > > My question is: Is there a way to determine if the attribute is used > in the select clause, so that only then the name is surrounded by the > function call?
take a look in **kw. there should be a "within_columns_clause" flag. if not, try 0.6beta2. if not there, let me know. > > Or is there another possibility to use a different format than the > database internal? > > > Thank you, > Tobias > > > [1]: http://geoalchemy.org/ > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.