I'd like to find all table entries within x meters of a certain location. 
The DAL object in question uses the spatialite adapter (my system's 
spatialite library is the most recent version), and the field of interest 
is of type 'geometry':

db = DAL('spatialite://...')
db.define_table('point', Field('name'), Field('loc','geometry()'))

Massimo suggested the following 
<https://groups.google.com/d/msg/web2py/ahO2ydF7yK0/yPH1QC-h3IYJ> as a 
method of finding rows within distance:

query = db.point.loc.st_distance(geoPoint(37.7833, 122.4167)) < 10
rows = db(query).select(db.point.name)

However, as I understand, the above query does the following 
<http://www.postgis.org/docs/ST_Distance.html>: 

For geometry type Returns the 2-dimensional cartesian minimum distance 
> (based on spatial ref) between two geometries in projected units. For 
> geography type defaults to return spheroidal minimum distance between two 
> geographies in meters.
>

If I change the 'loc' field's type to 'geography()', I get the following 
exception:

3. Exception in 'point definition': Field: unknown field type: geography() 
for loc

I've also tried tinkering with the st_within() method 
<https://groups.google.com/forum/#!searchin/web2py/st_within/web2py/mHHeVNfYV6g/rev9zRKBdXcJ>,
 
but doing so generates this error message:

<type 'exceptions.AttributeError'> 'SpatiaLiteAdapter' object has no 
attribute 'ST_DWITHIN'

When using the spatialite adapter, what is the recommended way to find 
records within some distance, measured in meters?

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to