couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Keith Gable <ziggythehams...@outlook.com>
Subject RE: Passing permanent changing arguments to a view?
Date Wed, 19 Feb 2014 02:23:47 GMT
I’ve found it is a lot easier to use GeoCouch to do these kinds of queries. That said, you
will have to create a bounding box (rather than a radius), which means you’ll need to use
the Haversine formula client-side to figure out how big to make the box. If you want a radius
of 5km, you’ll probably want to make the box a bit smaller since there’s a good amount
of area within the box but outside the circle. I’ve got some old Ruby code I can dredge
up if needed.

The GeoCouch couchdb1.3.x branch works on 1.5.

That said, you're probably thinking about writing your views all wrong. You should be emitting
key/value pairs (basically), and the key should be something to help look up your document.
You might be able to emit something like this:

[52, 13]
[52.5, 13.3]
[52.52, 13.39]
[52.521, 13.396]

(and so on)

And then use the amount of precision lost as your level of filtering by radius. This obviously
sucks, so give GeoCouch a try :).


> Date: Wed, 19 Feb 2014 01:24:19 +0100
> Subject: Passing permanent changing arguments to a view?
> From: benskarsgard@gmail.com
> To: user@couchdb.apache.org
> 
> Hello!
> 
> [Introduction] //skip if you want
> My Name is Ben, I'm 34 years old from Germany. I'm developing Apps for iOS
> and Ruby Backends.
> [/Introduction]
> 
> I'm new to couchDB, did some tutorials and really enjoyed working with
> couchDB.
> But now I'm stuck.
> 
> I stored locations (doc) to my couchDB.
> 
> e. g.:
> {
> name: "Location A",
> latitude: 52.521156,
> longitude: 13.396886
> }
> 
> Because it's a mobile app, I only want to get docs within a radius of 5km.
> But I really don't know how to query this.
> 
> Is there a possibility to pass some arguments to a view?
> Something like this:
> 
> function(doc) {
> if (doc.longitude> minLong
> && doc.longitude < maxLong
> && doc.latitude> minLat
> && doc.latitude < maxLat)
> emit(doc.name, null);
> };
> 
> Or should every user create and update his own view?
> 
> Thank you very much,
> 
> Ben
 		 	   		  
Mime
View raw message