Ejemplo n.º 1
0
func (this *Index) GetWayInBBox(bb geo.Bbox, tag string) ([]int64, error) {
	var ret []int64
	size := bb.Size()
	iter := this.db.NewIterator(util.BytesPrefix([]byte(tag+":")), nil)
	for iter.Next() {
		key := iter.Key()
		//log.Println(iter.Key())
		if key[0] != byte('_') {
			tmp := Bboxfrombytes(iter.Value())
			//TODO determine best ratio
			if bb.IntersectWith(tmp) && size < tmp.Size()*1000 && size*1000 > tmp.Size() {
				//log.Println(iter.Key())
				//				ret = append(ret, Int64frombytes(key))
				k, _ := strconv.ParseInt(strings.Split(string(key[:]), ":")[1], 10, 64)
				ret = append(ret, k)
			}
		}
	}
	iter.Release()
	err := iter.Error()
	log.Printf("%d Ways found in %v", len(ret), bb)
	return ret, err
}