def generate_band(folder): # getting image filenames images = get_images(folder) # generating bands bands = generate_bands(images) # generating imageframes imageframe = generate_rgb_array(images) # generating shape ranges (previously columns and indexs) dims = imageframe.shape datacolumns = range(0,dims[1]) dataindex = range(0,dims[0]) # setting up newlists header header = ['X','Y','LONG','LAT','GEOHASH','RED','GREEN','BLUE'] newlist = [header] # getting corner points corners = generate_corners(folder) # getting iterables of top and bottom points toppoints,bottompoints = generate_horizontal_ranges(corners,len(datacolumns)) # creating generators for toppoints, bottompoints, and datacolumns genertop = gener(toppoints[1:]) generbottom = gener(bottompoints[1:]) genercolumns = gener(datacolumns) toppoints = [] bottompoints =[] datacolumns = [] indouter = 0 while indouter == 0: try: # getting row position and setting up generator x = next(genercolumns) toppoint = next(genertop) bottompoint = next(generbottom) # setting up generator for index generx = gener(dataindex) # getting points horizontal and setting up generator pointsindex = generate_vertical_ranges(toppoint,bottompoint,len(dataindex)) # setting up generator to iterate through the y values generpoints = gener(pointsindex[1:]) # getting the size of points index indexsize = len(pointsindex[1:]) pointsindex = [] ind = 0 while ind == 0: try: y = next(generx) point = next(generpoints) hash = geohash.encode(float(point[1]), float(point[0]),7) values = generate_intensities3(imageframe,x,y).tolist() newlist.append([x,y,point[0],point[1],hash]+values) except StopIteration: ind = 1 except StopIteration: indouter = 1 newlist=bl.list2df(newlist) newlist = newlist[(newlist.BLUE > 0)|(newlist.RED > 0)|(newlist.GREEN > 0)] newlist.to_csv('point_band_tiff.csv',index = False)
def make_squares_table(table): checkrow = bl.df2list(table)[1] if not checkrow[-5] == 1 or checkrow[-5] == 0: startx = checkrow[0] starty = checkrow[1] # getting the first and second position point point1 = table[(table.X == startx)&(table.Y == starty)] point2 = table[(table.X == (startx + 1))&(table.Y == (starty + 1))] else: # getting the first and second position point point1 = table[(table.X == 1)&(table.Y == 1)] point2 = table[(table.X == 2)&(table.Y == 2)] # taking table to list table = bl.df2list(table) # getting header header = table[0] # getting first row firstrow = bl.df2list(point1)[1] # getting second row secondrow = bl.df2list(point2)[1] # getting point1 and point2 point1 = getlatlong(header,firstrow) point2 = getlatlong(header,secondrow) # settin up newlist with header header newlist = [['GEOHASH','LAT1','LONG1','LAT2','LONG2','LAT3','LONG3','LAT4','LONG4','X','Y','RED','GREEN','BLUE','COLORKEY']] # getting distance distance = (((point1[0] - point2[0]) ** 2) + ((point1[1] - point2[1]) ** 2)) ** .5 distance_vert = abs(point1[1] - point2[1]) / 2.0 distance_horz = abs(point1[0] - point2[0]) / 2.0 # iterating through each point to make squares for row in table[1:]: # getting point info to be added to square pointinfo = row[-5:] # getting point for each row point = getlatlong(header,row) # adding distance to get each corner point ul_point = [point[0] - distance_horz,point[1] + distance_vert] ur_point = [point[0] + distance_horz,point[1] + distance_vert] bl_point = [point[0] - distance_horz,point[1] - distance_vert] br_point = [point[0] + distance_horz,point[1] - distance_vert] # making newrow newrow = [pointinfo[0]] + [bl_point[1],bl_point[0]] + [br_point[1],br_point[0]] + [ul_point[1],ul_point[0]] + [ur_point[1],ur_point[0]] + [row[0],row[1]] +pointinfo[1:] newlist.append(newrow) # taking newlist to dataframe again newlist = bl.list2df(newlist) return newlist
def make_image(file): src = rasterio.open(file) data = src.read() dims = data.shape print dims print src.meta['crs']['init'] if 'espg:4326' in str(src.meta['crs']['init']): # getting extrema extrema = get_extrema(src.bounds) else: extrema = get_extrema(src.bounds,transform=True) # generating indices for the extrema given x1,x2,y1,y2 = generate_point_range_extrema(dims,extrema) # generating shape ranges (previously columns and indexs) datacolumns = range(0,dims[2]) dataindex = range(0,dims[1]) # setting up newlists header header = ['X','Y','LONG','LAT','GEOHASH','RED','GREEN','BLUE'] newlist = [header] # newcorners ul_point = [extrema['w'],extrema['n'],'ul'] ur_point = [extrema['e'],extrema['n'],'ur'] ll_point = [extrema['w'],extrema['s'],'ll'] lr_point = [extrema['e'],extrema['s'],'lr'] newcorners = [['LONG','LAT','POS'],ul_point,ur_point,ll_point,lr_point] # getting iterables of top and bottom points toppoints,bottompoints = generate_horizontal_ranges(newcorners,len(datacolumns)) print toppoints[:5] # creating generators for toppoints, bottompoints, and datacolumns genertop = gener(toppoints[1:]) generbottom = gener(bottompoints[1:]) genercolumns = gener(datacolumns) toppoints = [] bottompoints =[] datacolumns = [] indouter = 0 while indouter == 0: try: # getting row position and setting up generator x = next(genercolumns) toppoint = next(genertop) bottompoint = next(generbottom) # setting up generator for index generx = gener(dataindex) # getting points horizontal and setting up generator pointsindex = generate_vertical_ranges(toppoint,bottompoint,len(dataindex)) # setting up generator to iterate through the y values generpoints = gener(pointsindex[1:]) # getting the size of points index indexsize = len(pointsindex[1:]) ind = 0 while ind == 0: try: y = next(generx) #print x,y point = next(generpoints) #print point hash = geohash.encode(float(point[1]), float(point[0]),7) values = [data[0,y,x],data[1,y,x],data[2,y,x]] #values = next(genersamplegen).tolist() newlist.append([x,y,point[0],point[1],hash]+values) except StopIteration: ind = 1 print '[%s/%s]' % (x,indexsize) except StopIteration: indouter = 1 newlist=bl.list2df(newlist) newlist = bl.make_colorkey_table(newlist) newlist = make_squares_table(newlist) newlist.to_csv('output.csv',index = False) return newlist
def map_image(args): filename,extrema,yshape,xshape = args src = rasterio.open(filename) data = src.read() dims = src.shape # generating indices for the extrema given # generating shape ranges (previously columns and indexs) datacolumns = range(0,dims[1]) dataindex = range(yshape[0],yshape[1]) # setting up newlists header header = ['X','Y','LONG','LAT','GEOHASH','RED','GREEN','BLUE'] newlist = [header] # newcorners ul_point = [extrema['w'],extrema['n'],'ul'] ur_point = [extrema['e'],extrema['n'],'ur'] ll_point = [extrema['w'],extrema['s'],'ll'] lr_point = [extrema['e'],extrema['s'],'lr'] newcorners = [['LONG','LAT','POS'],ul_point,ur_point,ll_point,lr_point] # getting iterables of top and bottom points toppoints,bottompoints = generate_horizontal_ranges(newcorners,len(datacolumns)) # creating generators for toppoints, bottompoints, and datacolumns genertop = gener(toppoints[1:]) generbottom = gener(bottompoints[1:]) genercolumns = gener(datacolumns) toppoints = [] bottompoints =[] datacolumns = [] indouter = 0 while indouter == 0: try: # getting row position and setting up generator x = next(genercolumns) toppoint = next(genertop) bottompoint = next(generbottom) # setting up generator for index generx = gener(dataindex) # getting points horizontal and setting up generator pointsindex = generate_vertical_ranges(toppoint,bottompoint,len(dataindex)) # setting up generator to iterate through the y values generpoints = gener(pointsindex[1:]) # getting the size of points index indexsize = len(pointsindex[1:]) ind = 0 while ind == 0: try: y = next(generx) #print x,y point = next(generpoints) #print point hash = geohash.encode(float(point[1]), float(point[0]),7) values = [data[0,y,x],data[1,y,x],data[2,y,x]] #values = next(genersamplegen).tolist() newlist.append([x,y,point[0],point[1],hash]+values) except StopIteration: ind = 1 print '[%s/%s]' % (x,indexsize) except StopIteration: indouter = 1 newlist = bl.list2df(newlist) return newlist
squares=pd.read_csv('squares3.csv') squares=squares[:10] # getting the top 10 densest geohash squares # getting each unique geohash geohashs=np.unique(squares['GEOHASH']).tolist() # constructing list of all top shark attack incidents total=[data.columns.values.tolist()] for row in geohashs: temp=data[data.GEOHASH==str(row)] # getting all the geohashs within the entire table temp=bl.df2list(temp) # taking dataframe to list total+=temp[1:] #ignoring the header on each temporary list # taking list back to dataframe total=bl.list2df(total) # getting the unique activities that occured uniques=np.unique(total['Activity']).tolist() # we now have a list with each top geohash in a aggregated table # we can now style each color icon based on each activity being performed during the attack count=0 filenames=[] for unique,color in itertools.izip(uniques,colors): count+=1 filename=str(count)+'.geojson' # generating a dummy file name temp=total[total.Activity==unique] if not len(temp)==0: # if dataframe is empty will not make_points temp['color']=str(color) # setting specific color to object a=bl.make_points(temp,list=True) # making geojson object
def make_squares_table(table): checkrow = bl.df2list(table)[1] if not checkrow[-5] == 1 or checkrow[-5] == 0: startx = checkrow[0] starty = checkrow[1] # getting the first and second position point point1 = table[(table.X == startx) & (table.Y == starty)] point2 = table[(table.X == (startx + 1)) & (table.Y == (starty + 1))] else: # getting the first and second position point point1 = table[(table.X == 1) & (table.Y == 1)] point2 = table[(table.X == 2) & (table.Y == 2)] # taking table to list table = bl.df2list(table) # getting header header = table[0] # getting first row firstrow = bl.df2list(point1)[1] # getting second row secondrow = bl.df2list(point2)[1] # getting point1 and point2 point1 = getlatlong(header, firstrow) point2 = getlatlong(header, secondrow) # settin up newlist with header header newlist = [[ 'GEOHASH', 'LAT1', 'LONG1', 'LAT2', 'LONG2', 'LAT3', 'LONG3', 'LAT4', 'LONG4', 'X', 'Y', 'RED', 'GREEN', 'BLUE', 'COLORKEY' ]] # getting distance distance = (((point1[0] - point2[0])**2) + ((point1[1] - point2[1])**2))**.5 distance_vert = abs(point1[1] - point2[1]) / 2.0 distance_horz = abs(point1[0] - point2[0]) / 2.0 # iterating through each point to make squares for row in table[1:]: # getting point info to be added to square pointinfo = row[-5:] # getting point for each row point = getlatlong(header, row) # adding distance to get each corner point ul_point = [point[0] - distance_horz, point[1] + distance_vert] ur_point = [point[0] + distance_horz, point[1] + distance_vert] bl_point = [point[0] - distance_horz, point[1] - distance_vert] br_point = [point[0] + distance_horz, point[1] - distance_vert] # making newrow newrow = [pointinfo[0]] + [bl_point[1], bl_point[0]] + [ br_point[1], br_point[0] ] + [ul_point[1], ul_point[0]] + [ur_point[1], ur_point[0] ] + [row[0], row[1]] + pointinfo[1:] newlist.append(newrow) # taking newlist to dataframe again newlist = bl.list2df(newlist) return newlist
def generate_band(folder): # getting image filenames images = get_images(folder) # generating bands bands = generate_bands(images) # generating imageframes imageframe = generate_rgb_array(images) # generating shape ranges (previously columns and indexs) dims = imageframe.shape datacolumns = range(0, dims[1]) dataindex = range(0, dims[0]) # setting up newlists header header = ['X', 'Y', 'LONG', 'LAT', 'GEOHASH', 'RED', 'GREEN', 'BLUE'] newlist = [header] # getting corner points corners = generate_corners(folder) # getting iterables of top and bottom points toppoints, bottompoints = generate_horizontal_ranges( corners, len(datacolumns)) # creating generators for toppoints, bottompoints, and datacolumns genertop = gener(toppoints[1:]) generbottom = gener(bottompoints[1:]) genercolumns = gener(datacolumns) toppoints = [] bottompoints = [] datacolumns = [] indouter = 0 while indouter == 0: try: # getting row position and setting up generator x = next(genercolumns) toppoint = next(genertop) bottompoint = next(generbottom) # setting up generator for index generx = gener(dataindex) # getting points horizontal and setting up generator pointsindex = generate_vertical_ranges(toppoint, bottompoint, len(dataindex)) # setting up generator to iterate through the y values generpoints = gener(pointsindex[1:]) # getting the size of points index indexsize = len(pointsindex[1:]) pointsindex = [] ind = 0 while ind == 0: try: y = next(generx) point = next(generpoints) hash = geohash.encode(float(point[1]), float(point[0]), 7) values = generate_intensities3(imageframe, x, y).tolist() newlist.append([x, y, point[0], point[1], hash] + values) except StopIteration: ind = 1 except StopIteration: indouter = 1 newlist = bl.list2df(newlist) newlist = newlist[(newlist.BLUE > 0) | (newlist.RED > 0) | (newlist.GREEN > 0)] newlist.to_csv('point_band_tiff.csv', index=False)
def map_image(args): filename, extrema, yshape, xshape = args src = rasterio.open(filename) data = src.read() dims = src.shape # generating indices for the extrema given # generating shape ranges (previously columns and indexs) datacolumns = range(0, dims[1]) dataindex = range(yshape[0], yshape[1]) # setting up newlists header header = ['X', 'Y', 'LONG', 'LAT', 'GEOHASH', 'RED', 'GREEN', 'BLUE'] newlist = [header] # newcorners ul_point = [extrema['w'], extrema['n'], 'ul'] ur_point = [extrema['e'], extrema['n'], 'ur'] ll_point = [extrema['w'], extrema['s'], 'll'] lr_point = [extrema['e'], extrema['s'], 'lr'] newcorners = [['LONG', 'LAT', 'POS'], ul_point, ur_point, ll_point, lr_point] # getting iterables of top and bottom points toppoints, bottompoints = generate_horizontal_ranges( newcorners, len(datacolumns)) # creating generators for toppoints, bottompoints, and datacolumns genertop = gener(toppoints[1:]) generbottom = gener(bottompoints[1:]) genercolumns = gener(datacolumns) toppoints = [] bottompoints = [] datacolumns = [] indouter = 0 while indouter == 0: try: # getting row position and setting up generator x = next(genercolumns) toppoint = next(genertop) bottompoint = next(generbottom) # setting up generator for index generx = gener(dataindex) # getting points horizontal and setting up generator pointsindex = generate_vertical_ranges(toppoint, bottompoint, len(dataindex)) # setting up generator to iterate through the y values generpoints = gener(pointsindex[1:]) # getting the size of points index indexsize = len(pointsindex[1:]) ind = 0 while ind == 0: try: y = next(generx) #print x,y point = next(generpoints) #print point hash = geohash.encode(float(point[1]), float(point[0]), 7) values = [data[0, y, x], data[1, y, x], data[2, y, x]] #values = next(genersamplegen).tolist() newlist.append([x, y, point[0], point[1], hash] + values) except StopIteration: ind = 1 print '[%s/%s]' % (x, indexsize) except StopIteration: indouter = 1 newlist = bl.list2df(newlist) return newlist
def make_image(file): src = rasterio.open(file) data = src.read() dims = data.shape print dims print src.meta['crs']['init'] if 'espg:4326' in str(src.meta['crs']['init']): # getting extrema extrema = get_extrema(src.bounds) else: extrema = get_extrema(src.bounds, transform=True) # generating indices for the extrema given x1, x2, y1, y2 = generate_point_range_extrema(dims, extrema) # generating shape ranges (previously columns and indexs) datacolumns = range(0, dims[2]) dataindex = range(0, dims[1]) # setting up newlists header header = ['X', 'Y', 'LONG', 'LAT', 'GEOHASH', 'RED', 'GREEN', 'BLUE'] newlist = [header] # newcorners ul_point = [extrema['w'], extrema['n'], 'ul'] ur_point = [extrema['e'], extrema['n'], 'ur'] ll_point = [extrema['w'], extrema['s'], 'll'] lr_point = [extrema['e'], extrema['s'], 'lr'] newcorners = [['LONG', 'LAT', 'POS'], ul_point, ur_point, ll_point, lr_point] # getting iterables of top and bottom points toppoints, bottompoints = generate_horizontal_ranges( newcorners, len(datacolumns)) print toppoints[:5] # creating generators for toppoints, bottompoints, and datacolumns genertop = gener(toppoints[1:]) generbottom = gener(bottompoints[1:]) genercolumns = gener(datacolumns) toppoints = [] bottompoints = [] datacolumns = [] indouter = 0 while indouter == 0: try: # getting row position and setting up generator x = next(genercolumns) toppoint = next(genertop) bottompoint = next(generbottom) # setting up generator for index generx = gener(dataindex) # getting points horizontal and setting up generator pointsindex = generate_vertical_ranges(toppoint, bottompoint, len(dataindex)) # setting up generator to iterate through the y values generpoints = gener(pointsindex[1:]) # getting the size of points index indexsize = len(pointsindex[1:]) ind = 0 while ind == 0: try: y = next(generx) #print x,y point = next(generpoints) #print point hash = geohash.encode(float(point[1]), float(point[0]), 7) values = [data[0, y, x], data[1, y, x], data[2, y, x]] #values = next(genersamplegen).tolist() newlist.append([x, y, point[0], point[1], hash] + values) except StopIteration: ind = 1 print '[%s/%s]' % (x, indexsize) except StopIteration: indouter = 1 newlist = bl.list2df(newlist) newlist = bl.make_colorkey_table(newlist) newlist = make_squares_table(newlist) newlist.to_csv('output.csv', index=False) return newlist