def test_initialization(self): """test that sorted list is initialized """ l = sorted_points_list(self.normal_list) # points with larger importance are earlier zs = [x['importance'] for x in l] for i in range(len(zs) - 1): self.assertTrue(zs[i] >= zs[i + 1])
def test_initialization(self): """test that sorted list is initialized """ l = sorted_points_list(self.normal_list) # points with larger importance are earlier zs = [x['importance'] for x in l] for i in range(len(zs)-1): self.assertTrue(zs[i]>=zs[i+1])
def test_insertion(self): "test insertions" l = sorted_points_list(self.normal_list) len_init = len(l) # inserting more important point p = {'importance': 1234567} l.insert(p) self.assertEqual(len(l), len_init + 1) self.assertTrue(p in l) # inserting non-important point p = {'importance': 1} l.insert(p) self.assertEqual(len(l), len_init + 2) self.assertTrue(p in l)
def test_insertion(self): "test insertions" l = sorted_points_list(self.normal_list) len_init = len(l) # inserting more important point p = {'importance':1234567} l.insert(p) self.assertEqual(len(l),len_init+1) self.assertTrue(p in l) # inserting non-important point p = {'importance':1} l.insert(p) self.assertEqual(len(l),len_init+2) self.assertTrue(p in l)
def insert_to_tile(self, gt_key_name=None, max_z=None): if not gt_key_name: gt_key_name = GeoTree._GEO_TREE_KEY if not max_z: max_z = get_max_z(gt_key_name) x,y,z = lat_lon_to_tile(self.coord.lat, self.coord.lon, max_z) tile_key_name = '%d,%d,%d,%s' % (x,y,z,gt_key_name) t = Tile.get_by_key_name(tile_key_name) if not t: t = Tile(x=x, y=y, z=z, key_name=tile_key_name, gt_key_name=gt_key_name) point_dict = {'key_name':self.key().name(),'importance':self.importance,'coord':(self.coord.lat,self.coord.lon),'name':self.name} if t.points_native: # use sorted list because this is used during merging of tiles points_native = sorted_points_list(json.loads(t.points_native)) points_native.insert(point_dict) t.points_native = json.dumps(points_native) else: points_native = [point_dict] t.points_native = json.dumps(points_native) t.put() return tile_key_name
def update_importance(self, importance_new, gt_key_name=None, max_z=None): """updates importance of the point and the maximum zoom tile, other tiles are not updated""" if not gt_key_name: gt_key_name = GeoTree._GEO_TREE_KEY if not max_z: max_z = get_max_z(gt_key_name) self.importance = importance_new self.put() x,y,z = lat_lon_to_tile(self.coord.lat, self.coord.lon, max_z) tile_key_name = '%d,%d,%d,%s' % (x,y,z,gt_key_name) t = Tile.get_by_key_name(tile_key_name) if t: if t.points_native: points_native = json.loads(t.points_native) self_key_name = self.key().name() for p in points_native: if p['key_name'] == self_key_name: p['importance'] = importance_new t.points_native = json.dumps(sorted_points_list(points_native)) break t.put() GeoTree.mark_tile_updated(tile_key_name, gt_key_name)