def find_better(self): processed = set() for fun in self.functions: simpl = simplify(fun) r = repr(simpl) if r in processed: continue processed.add(r) root = self.transform(simpl) gen = BodyGenerator(root, self.AssemblerClass()) body = gen.run() index = fun.bin() if len(body) < len(self.data[index][1]): print print "improved %02x (%s):" % (index, root) print "was:" print "\n".join(self.data[index][1]) print "better:" print "\n".join(body) print self.data[index] = (root, body) self.improved.add(index)
def conditions(): processed = set() functions = [] for fun in chain(variables(), functions_1level(), functions_2levels()): expr = simplify(fun) index = expr.bin() if index not in processed: processed.add(index) functions.append(expr) for var in [Variable('A'), Variable('B'), Variable('C')]: for t in functions: for f in functions: yield Condition(var, t, f)
def simplify_track(filepath, filename, simplify_dir): """ parse GPX file, simplifying track and create new GPX file with simplified track """ full_filename = os.path.join(filepath, filename) print "{0}:".format(filename) parsed_gpx, points = gpx.get_data(full_filename) print "\tPoints before simplifying: {0}".format(len(points)) simplified_points = simplify.simplify(points, TOLERANCE, True) print "\tPoints after simplifying: {0}\n".format(len(simplified_points)) with open(os.path.join(simplify_dir, filename), 'w') as f: f.write(gpx.generate_gpx(parsed_gpx, simplified_points)) f.flush()
def reduce_wgs_rdp(coordinates, resolution): """Takes a set of coordinates (a polygon) and smooths the lines using the Ramer-Douglas-Peucker algorithm to reduce the number of vertices. Arguments: coordinates: List of coordinates in the form [(lon, lat), ...] resolution: Vertices reduction factor. Returns: A flattened list of coordinates, of the form [lon, lat, lon, lat, lon, lat, ...] """ coordinates = [{"x": point[1], "y": point[0]} for point in coordinates] coordinates = simplify.simplify(coordinates, resolution) output = list() for point in coordinates: output.extend([point['y'], point['x']]) return output