Exemplo n.º 1
0
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]))
Exemplo n.º 2
0
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]))
Exemplo n.º 3
0
 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, {})
Exemplo n.º 4
0
 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, {})
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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)