示例#1
0
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)
示例#2
0
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
示例#3
0
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
示例#4
0
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
示例#5
0
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 
示例#6
0
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
示例#7
0
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)
示例#8
0
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
示例#9
0
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