def get_start_end_index(bbox_list): """Convert a Bounding Box to a list of the index of column start, end, row start and end :param bbox_list: a list of BBox object to convert :type bbox_list: list of BBox object """ ss_list = [] reg = Region() for bbox in bbox_list: r_start, c_start = coor2pixel((bbox.west, bbox.north), reg) r_end, c_end = coor2pixel((bbox.east, bbox.south), reg) ss_list.append((int(r_start), int(r_end), int(c_start), int(c_end))) return ss_list
def sample(vect_in_name, rast_in_name): """sample('point00', 'field')""" # instantiate the object maps vect_in = VectorTopo(vect_in_name) rast_in = RasterRow(rast_in_name) vect_out = VectorTopo('test_' + vect_in_name) # define the columns of the attribute table of the new vector map columns = [(u'cat', 'INTEGER PRIMARY KEY'), (rast_in_name, 'DOUBLE')] # open the maps vect_in.open('r') rast_in.open('r') vect_out.open('w', tab_cols=columns, link_driver='sqlite') # get the current region region = Region() # initialize the counter counter = 0 data = [] for pnt in vect_in.viter('points'): counter += 1 # transform the spatial coordinates in row and col value x, y = coor2pixel(pnt.coords(), region) value = rast_in[int(x)][int(y)] data.append((counter, None if np.isnan(value) else float(value))) # write the geometry features vect_out.write(pnt) # write the attributes vect_out.table.insert(data, many=True) vect_out.table.conn.commit() # close the maps vect_in.close() rast_in.close() vect_out.close()
def get_value(self, point, region=None): """This method returns the pixel value of a given pair of coordinates: :param point: pair of coordinates in tuple object """ if not region: region = Region() row, col = functions.coor2pixel(point.coords(), region) if col < 0 or col > region.cols or row < 0 or row > region.rows: return None line = self.get_row(int(row)) return line[int(col)]
def get_value(self, point, region=None): """This method returns the pixel value of a given pair of coordinates: :param point: pair of coordinates in tuple object :type point: tuple :param region: the region to crop the request :type region: Region object """ if not region: region = Region() x, y = functions.coor2pixel(point.coords(), region) return self[x][y]