Ejemplo n.º 1
0
def find_all_intersection(street_list):
    intersection_list = []
    tmp_street_list = street_list.copy()
    for key_main, value_main in street_list.iteritems():
        index_main = 0
        tmp_street_list.pop(key_main)
        for ponits_main in value_main:
            if index_main <= (len(value_main)-2):
                src = intersect.Point(value_main[index_main][0], value_main[index_main][1])
                dst = intersect.Point(value_main[index_main+1][0], value_main[index_main+1][1])
                index_main = index_main+1
                l1 = intersect.Line(src, dst)
                for key_sub, value_sub in tmp_street_list.iteritems():
                    index_sub = 0
                    for points_sub in value_sub:
                        if index_sub <= (len(value_sub) - 2):
                            src = intersect.Point(value_sub[index_sub][0], value_sub[index_sub][1])
                            dst = intersect.Point(value_sub[index_sub + 1][0], value_sub[index_sub + 1][1])
                            l2 = intersect.Line(src, dst)
                            intersect_point = intersect.intersect(l1,l2)
                            index_sub = index_sub + 1
                            if intersect_point != None and type(intersect_point) != list and (not check_exist_point(intersection_list,intersect_point)):
                                intersection_list.append((intersect_point.x,intersect_point.y))
                            elif intersect_point != None and type(intersect_point) == list:
                                for i in range(0, len(intersect_point)):
                                    tmp_point = intersect.Point(intersect_point[i][0],intersect_point[i][1])
                                    if not check_exist_point(intersection_list,tmp_point):
                                        intersection_list.append((tmp_point.x,tmp_point.y))
    return intersection_list
Ejemplo n.º 2
0
 def add(self, f2):
     f = []
     for block1 in self.blocks[1]:
         for block2 in f2:
             a = intersect(block1[0], block2[0])
             for s in a:
                 f.append((s, block1[1] + block2[1]))
     return f
Ejemplo n.º 3
0
 def __test_intersect(self, i, j):
     if i in self.sentinels or j in self.sentinels:
         return
     pair = (i, j) if i < j else (j, i)  # i, j may tip over on processing.
     if self.reported[pair]:
         return
     x, y = intersect(self.segs[i], self.segs[j])
     if x:
         insort(self.events, ((x, y), (i, j), None))  # swap-event
         self.reported[pair] = True
         return (x, y)
Ejemplo n.º 4
0
def setpot(pot, evvariables, evidstates):
    #FIXME: data format needed to be unified
    vars = pot.variables
    #vars = np.array(pot.variables) # convert to ndarray format
    #evariables = np.array(evvariables)
    # convert to ndarray format
    #evidstates = np.array(evidstates) # convert to ndarray format
    #print "variables:", vars
    table = pot.table
    nstates = pot.card
    #print "number of states:", nstates
    #print "vars:", vars
    #print "evvariables:", evvariables
    intersection, iv, iev = intersect(vars, evvariables)
    #iv = np.array(iv)
    #iev = np.array(iev)
    #print "intersection:", intersection
    #print "iv:", iv
    #print "iev:", iev
    #print "iv type:", type(iv)
    #print "number of intersection:", intersection.size
    if intersection.size == 0:
        newpot = copy.copy(pot)
    else:
        newvar = setminus(vars, intersection)
        dummy, idx = ismember(newvar, vars)
        newns = nstates[idx]
        newpot = potential()
        newpot.variables = newvar
        newpot.card = newns
        newpot.table = np.zeros(newns)
        #print "idx:", idx
        #print "iv:", iv
        for i in range(np.prod(newns)):
            newassign = IndexToAssignment(i, newns)
            oldassign = np.zeros(nstates.size, 'int8')
            oldassign[idx] = newassign
            oldassign[iv] = evidstates
            #print "newpot.table.shape:", newpot.table.shape
            #print "newassign:", newassign
            #print "newassign type:", type(newassign)
            newpot.table[tuple(newassign)] = pot.table[tuple(oldassign)]

    return newpot
Ejemplo n.º 5
0
def setpot(pot, evvariables, evidstates):
    #FIXME: data format needed to be unified
    vars = pot.variables
    #vars = np.array(pot.variables) # convert to ndarray format
    #evariables = np.array(evvariables)
    # convert to ndarray format
    #evidstates = np.array(evidstates) # convert to ndarray format
    #print "variables:", vars
    table = pot.table
    nstates = pot.card
    #print "number of states:", nstates
    #print "vars:", vars
    #print "evvariables:", evvariables
    intersection, iv, iev = intersect(vars, evvariables)
    #iv = np.array(iv)
    #iev = np.array(iev)
    #print "intersection:", intersection
    #print "iv:", iv
    #print "iev:", iev
    #print "iv type:", type(iv)
    #print "number of intersection:", intersection.size
    if intersection.size == 0:
        newpot = copy.copy(pot)
    else:
        newvar = setminus(vars, intersection)
        dummy, idx = ismember(newvar, vars)
        newns = nstates[idx]
        newpot = potential()
        newpot.variables = newvar
        newpot.card = newns
        newpot.table = np.zeros(newns)
        #print "idx:", idx
        #print "iv:", iv
        for i in range(np.prod(newns)):
            newassign = IndexToAssignment(i, newns)
            oldassign = np.zeros(nstates.size, 'int8')
            oldassign[idx] = newassign
            oldassign[iv] = evidstates
            #print "newpot.table.shape:", newpot.table.shape
            #print "newassign:", newassign
            #print "newassign type:", type(newassign)
            newpot.table[tuple(newassign)] = pot.table[tuple(oldassign)]

    return newpot
Ejemplo n.º 6
0
def condpot(pot, varargin):
    #FIXME: only 1 varargin supported , use *arg in further development
    newpot = potential()
    y = []
    x = varargin
    #print "pot.variables:", pot.variables
    #print "pot.table: \n", pot.table
    #print "x:", x
    #print "pot.variables:", pot.variables
    # convert variable to idx (not consistent in Python other than MATLAB)
    intersection, ix, ipot = intersect(x, pot.variables)
    #print "intersection=", intersection
    newpot.variables = intersection
    #print "pot.variables:", pot.variables
    FULL_axis = np.arange(pot.variables.size)
    #print pot.variables
    #print intersection
    axis_intersection = ipot
    #.index(intersection)
    other_axis = setminus(FULL_axis, axis_intersection)
    #print "axis_intersection=", axis_intersection
    #print "other_axis=", other_axis
    #print "Full_axis:", FULL_axis
    #print "other_axis:", other_axis
    newpot.table = np.apply_over_axes(np.sum, pot.table, other_axis)
    #print "newpot.variables:", newpot.variables
    #print "newpot.table: \n", newpot.table

    SUM = potential()
    SUM.variables = np.array([])
    SUM.table = np.sum(newpot.table)
    #print "newpot.table:", newpot.table
    #print "SUM.table:", SUM.table
    newpot = newpot / SUM

    return newpot
Ejemplo n.º 7
0
def condpot(pot,varargin):
#FIXME: only 1 varargin supported , use *arg in further development
	newpot = potential()
	y = []
	x = varargin
	#print "pot.variables:", pot.variables
	#print "pot.table: \n", pot.table
	#print "x:", x
	#print "pot.variables:", pot.variables
# convert variable to idx (not consistent in Python other than MATLAB)
	intersection, ix, ipot = intersect(x, pot.variables)
	#print "intersection=", intersection
	newpot.variables = intersection
        #print "pot.variables:", pot.variables
	FULL_axis = np.arange(pot.variables.size)
        #print pot.variables
        #print intersection
	axis_intersection = ipot
        #.index(intersection)
	other_axis = setminus(FULL_axis,axis_intersection)
	#print "axis_intersection=", axis_intersection
	#print "other_axis=", other_axis
        #print "Full_axis:", FULL_axis
        #print "other_axis:", other_axis
        newpot.table = np.apply_over_axes(np.sum, pot.table, other_axis)
	#print "newpot.variables:", newpot.variables
	#print "newpot.table: \n", newpot.table
	
	SUM = potential()
	SUM.variables = np.array([])
	SUM.table = np.sum(newpot.table)
        #print "newpot.table:", newpot.table
        #print "SUM.table:", SUM.table
	newpot = newpot/SUM
	
	return newpot
Ejemplo n.º 8
0
while not close:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            close = True

    disp.fill(black)
    pygame.display.update()

    # Mouse locations
    (loc_x, loc_y) = pygame.mouse.get_pos()

    x1 = 100
    y1 = 300
    x2 = loc_x
    y2 = loc_y

    draw_cirle(x1, y1)

    draw_walls(walls_x1, walls_y1, walls_x2, walls_y2)

    if intersect(x1, y1, x2, y2, walls_x1, walls_y1, walls_x2, walls_y2):

        draw_rays(x1, y1, x2, y2)
        px, py = intersect(x1, y1, x2, y2, walls_x1, walls_y1, walls_x2,
                           walls_y2)
        pygame.draw.circle(disp, white, (px, py), 5)

    pygame.display.update()
Ejemplo n.º 9
0
import os
import DXFtoPostgis
from connectionData import *
import db
import intersect, Output


tablesKm = db.ImportShpToPostgres(DB, pathKm, field, field1, field2)       #import kat. map; dostanem zoznam importovanych Km  >> bude len jedna
print tablesKm
files = ([name for name in os.listdir(pathCad)])    # prejde vsetky subory v zadanom adresary
count = 0
cadTables = []
for file in files:
    if file.endswith('.dxf'):
        count = count + 1
        fileName = file   # nazov dxf suboru
        name = fileName.split(".")[0]
        cadTables.append(name)
        importDxfToPostgres = DXFtoPostgis.dxfToPostgis(name, fileName)
print cadTables

for tab in tablesKm:
    for tab2 in cadTables:
        intersect = intersect.intersect(tab, tab2)
        rows = intersect[0]
        nam = intersect[1]
        output = Output.Output(rows, nam)
Ejemplo n.º 10
0
    def predict(self, traces):

        print("Taces", traces)

        # Create tracegroups

        print("Creating tracegroups")

        overlap_pairs = set()

        for i, trace in enumerate(traces[:-1]):
            for j, trace2 in enumerate(traces[i + 1:]):
                for coord1 in trace:
                    for coord2 in trace2:
                        if math.hypot(coord2[0] - coord1[0],
                                      coord2[1] - coord1[1]) < 10:
                            overlap_pairs.add((i, i + j + 1))

                # Check lines between endpoints
                overlap = intersect.intersect(trace[0], trace[-1], trace2[0],
                                              trace2[-1])
                print("End to end overlap", overlap)
                if (overlap):
                    overlap_pairs.add((i, i + j + 1))

        print("overlap_pairs", overlap_pairs)

        if len(overlap_pairs) > 0:
            tracegroups = self.create_tracegroups(overlap_pairs)
        else:
            tracegroups = []

        # Add single traces to a tracegroup
        for i, trace in enumerate(traces):
            found = False
            for group in tracegroups:
                if i in group:
                    found = True
            if not found:
                tracegroups.append(set([i]))

        sorted_tracegroups = sorted(tracegroups, key=lambda m: next(iter(m)))

        print(sorted_tracegroups)
        '''
                line1_cycle = cycle(trace)
                next(line1_cycle)

                line2_cycle = cycle(trace2)
                next(line2_cycle)

                for k, coords in enumerate(trace[:-1]):
                    coord_A = coords
                    coord_B = next(line1_cycle)
                    coord_C = trace2[k]
                    coord_D = next(line2_cycle)

                    #print(coord_A, coord_B, coord_C, coord_D)
                    
                    if intersect.intersect(coord_A, coord_B, coord_C, coord_D):
                        #print("i", i)
                        print("Intersect", coord_A, coord_B, coord_C, coord_D)
        '''

        predictions = []

        for group in sorted_tracegroups:
            # lots of copying, TODO optimalize
            res = [traces[i] for i in list(group)]
            res_processed = self.pre_process(res)

            prediction = self.model.predict(res_processed,
                                            steps=1,
                                            batch_size=None,
                                            verbose=1)

            best_pred = (0, 0)

            for i, p in enumerate(prediction[0]):
                print("Predicted: ", classes[i], "as", p)

                if p > best_pred[1]:
                    best_pred = (i, p)
                    predictions.append(best_pred)
        ''' res = self.pre_process(traces)

        prediction = self.model.predict_classes(res, batch_size=1, verbose=1)

        print("Prediction", prediction)

        for i, p in enumerate(prediction[0]):
            print("Predicted: ", classes[i], "as", p)

            if p > best_pred[1]:
                best_pred = (i, p)
         '''

        to_return = []

        for p in predictions:
            to_return.append((classes[p[0]], p[1]))

        return to_return
Ejemplo n.º 11
0
    def generateGraph(self):
        points_dict = {}
        #print 'street dict  ---------------------',self.street_dict
        for key in self.street_dict:
            i = 0
            point_list = []
            while i < len(self.street_dict[key]):
                point = intersect.Point(self.street_dict[key][i][0],
                                        self.street_dict[key][i][1])
                i += 1
                point_list.append(point)
            points_dict[key] = point_list

        lines_dict = {}
        complete_lines = []
        for key in points_dict:
            i = 0
            line_list = []
            while i < len(points_dict[key]) - 1:
                #print points_dict[key][i]
                #print points_dict[key][i+1]
                line = intersect.Line(points_dict[key][i],
                                      points_dict[key][i + 1])
                #print line
                #line = intersect.Line(self.street_dict[key][0],self.street_dict[key][1])
                i += 1
                line_list.append(line)
            lines_dict[key] = line_list
            complete_lines.append(line_list)

        #find intersect
        final_intersects = []
        final_edges = []
        intersection_points = []
        #print "length :"+str(len(complete_lines))
        for i in range(0, len(complete_lines)):
            for k in range(i + 1, len(complete_lines)):
                for j in range(0, len(complete_lines[i])):
                    for m in range(0, len(complete_lines[k])):
                        #print "before function call"
                        point = intersect.intersect(complete_lines[i][j],
                                                    complete_lines[k][m])
                        if (point != -1):
                            final_intersects = final_intersects + point[0]
                            final_edges = final_edges + point[1]
                            if len(point) == 3:
                                intersection_points.append(point[2])
        #print final_intersects

        intersections = []
        for i in intersection_points:
            intersections.append(i[0])

        #print final_edges

        #print "intersections ::",intersections
        new_edges = []
        for edge in final_edges:
            for vertex in intersections:
                isBetween = self.isVertexInBetween(edge[0], edge[1], vertex)
                if isBetween and edge[0] != vertex and edge[1] != vertex:
                    new_edge1 = [edge[0], vertex]
                    new_edge2 = [edge[1], vertex]
                    new_edges.append(new_edge1)
                    new_edges.append(new_edge2)

        #print "new edges   ",new_edges
        final_edges = final_edges + new_edges

        edges_remove_dup = []
        #edges_remove_dup.extend(final_edges)
        #print "edges_remove_dup before-------->",edges_remove_dup
        for a in final_edges:
            l = [a[1], a[0]]
            if a not in edges_remove_dup and l not in edges_remove_dup and l != a:
                edges_remove_dup.append(a)
        #print "edges_remove_dup after-------->",edges_remove_dup
        b_set = set(
            (map(tuple, edges_remove_dup))
        )  #need to convert the inner lists to tuples so they are hashable
        b = map(list, b_set)
        #print "intersection points :::::",intersection_points

        #final_intersects = [(0.0,0.0)]
        self.getVerticesOutput(final_intersects)
        self.getEdgesOutput(b, intersection_points,
                            list(set(final_intersects)))