def read_points(file): reader = csv.reader(file, delimiter="\t", strict=True) for rec in reader: if len(rec) != 3: inc_counter("read_points", "invalid_input") continue yield (rec[0],float(rec[1]),float(rec[2]))
def read_points(file): reader = csv.reader(file, delimiter="\t", strict=True) for rec in reader: if len(rec) != 3: inc_counter("read_points", "invalid_input") continue yield (rec[0], float(rec[1]), float(rec[2]))
def _points(bbox): for tile, mx, my in TuplesDatasource.get_source(): p = Point(mx, my) if not bbox.contains(p): inc_counter("TuplesDatasource._points", "query_out_of_range") continue yield (p.wkb, {})
def sample_geometry(geom, count): """ Given a Geometry and count, returns count Points contained by that geom. """ ll, bb, rr, tt = bbox(geom) point = None success_sample = 0 fail_sample = 0 for i in range(count): while True: point = make_point(uniform(ll, rr), uniform(bb, tt)) if geom.Contains(point): success_sample += 1 break else: fail_sample += 1 yield (point.GetX(), point.GetY()) inc_counter("sample_geometry", "success_sample", success_sample) inc_counter("sample_geometry", "fail_sample", fail_sample)
def sample_geometry(geom, count): """ Given a Geometry and count, returns count Points contained by that geom. """ ll,bb,rr,tt = bbox(geom) point = None success_sample = 0 fail_sample = 0 for i in range(count): while True: point = make_point(uniform(ll, rr), uniform(bb, tt)) if geom.Contains(point): success_sample += 1 break else: fail_sample += 1 yield (point.GetX(), point.GetY()) inc_counter("sample_geometry", "success_sample", success_sample) inc_counter("sample_geometry", "fail_sample", fail_sample)
def bbox(geom): ll = float("inf") bb = float("inf") rr = float("-inf") tt = float("-inf") hull = geom.ConvexHull() if not hull: inc_counter("bbox", "invalid hull") return None boundary = hull.GetBoundary() if not boundary: inc_counter("bbox", "invalid boundary") return None points = boundary.GetPoints() if not points: inc_counter("bbox", "invalid points") return None for x, y in points: ll = min(ll, x) rr = max(rr, x) bb = min(bb, y) tt = max(tt, y) return (ll, bb, rr, tt)
def bbox(geom): ll = float("inf") bb = float("inf") rr = float("-inf") tt = float("-inf") hull = geom.ConvexHull() if not hull: inc_counter("bbox", "invalid hull") return None boundary = hull.GetBoundary() if not boundary: inc_counter("bbox", "invalid boundary") return None points = boundary.GetPoints() if not points: inc_counter("bbox", "invalid points") return None for x, y in points: ll = min(ll, x) rr = max(rr, x) bb = min(bb, y) tt = max(tt, y) return (ll,bb,rr,tt)
def read_feature(file): """ Read a single feature from the input source. Expects to find a geometry and a population count. yield (org.Geometry, int(population)) """ reader = csv.reader(file, strict=True) feature_count = 0 for row in reader: # this is the outter loop; send a status update every once in a while if feature_count == 10000: inc_counter("read_feature", "feature_count", feature_count) feature_count = 0 if row[0].lower() == "wkt": inc_counter("read_feature", "skipped_lines") continue feature_count += 1 geom = ogr.Geometry(wkt=row[0]) if not geom: inc_counter("read_feature", "invalid_geom") continue yield (geom, int(row[8])) inc_counter("read_feature", "feature_count", feature_count)