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 [email protected].
For more options, visit https://groups.google.com/d/optout.