Example #1
0
    def test01_wktreader(self):
        # Creating a WKTReader instance
        wkt_r = WKTReader()
        wkt = 'POINT (5 23)'

        # read() should return a GEOSGeometry
        ref = GEOSGeometry(wkt)
        g1 = wkt_r.read(wkt.encode())
        g2 = wkt_r.read(wkt)

        for geom in (g1, g2):
            self.assertEqual(ref, geom)

        # Should only accept six.string_types objects.
        self.assertRaises(TypeError, wkt_r.read, 1)
        self.assertRaises(TypeError, wkt_r.read, memoryview(b'foo'))
Example #2
0
    def test01_wktreader(self):
        # Creating a WKTReader instance
        wkt_r = WKTReader()
        wkt = 'POINT (5 23)'

        # read() should return a GEOSGeometry
        ref = GEOSGeometry(wkt)
        g1 = wkt_r.read(wkt.encode())
        g2 = wkt_r.read(wkt)

        for geom in (g1, g2):
            self.assertEqual(ref, geom)

        # Should only accept six.string_types objects.
        self.assertRaises(TypeError, wkt_r.read, 1)
        self.assertRaises(TypeError, wkt_r.read, memoryview(b'foo'))
Example #3
0
    def test01_wktreader(self):
        # Creating a WKTReader instance
        wkt_r = WKTReader()
        wkt = 'POINT (5 23)'

        # read() should return a GEOSGeometry
        ref = GEOSGeometry(wkt)
        g1 = wkt_r.read(wkt)
        g2 = wkt_r.read(unicode(wkt))

        for geom in (g1, g2):
            self.assertEqual(ref, geom)

        # Should only accept basestring objects.
        self.assertRaises(TypeError, wkt_r.read, 1)
        self.assertRaises(TypeError, wkt_r.read, buffer('foo'))
Example #4
0
    def test01_wktreader(self):
        # Creating a WKTReader instance
        wkt_r = WKTReader()
        wkt = 'POINT (5 23)'

        # read() should return a GEOSGeometry
        ref = GEOSGeometry(wkt)
        g1 = wkt_r.read(wkt)
        g2 = wkt_r.read(unicode(wkt))

        for geom in (g1, g2):
            self.assertEqual(ref, geom)

        # Should only accept basestring objects.
        self.assertRaises(TypeError, wkt_r.read, 1)
        self.assertRaises(TypeError, wkt_r.read, buffer('foo'))
Example #5
0
    def test01_wktreader(self):
        # Creating a WKTReader instance
        wkt_r = WKTReader()
        wkt = "POINT (5 23)"

        # read() should return a GEOSGeometry
        ref = GEOSGeometry(wkt)
        g1 = wkt_r.read(wkt)
        g2 = wkt_r.read(six.text_type(wkt))

        for geom in (g1, g2):
            self.assertEqual(ref, geom)

        # Should only accept six.string_types objects.
        self.assertRaises(TypeError, wkt_r.read, 1)
        self.assertRaises(TypeError, wkt_r.read, buffer("foo"))
Example #6
0
File: misc.py Project: iatkin/place
def get_uncovered_area(name, steps=3):
    wktr = WKTReader()
    
    items = BoundedItem.objects.filter(LayerDisplayName__contains=name).distinct("bounds")
    places = get_item_places(name, steps=steps, return_places=True)

    p = wktr.read("GEOMETRYCOLLECTION EMPTY")

    for item in items:
        p = p.union(item.bounds)

    for place in places:
        if "County" in place.split(",")[0]:
            continue
        p = p.difference(places[place])

    return (p, places)
Example #7
0
    def test01_wktreader(self):
        # Creating a WKTReader instance
        wkt_r = WKTReader()
        wkt = "POINT (5 23)"

        # read() should return a GEOSGeometry
        ref = GEOSGeometry(wkt)
        g1 = wkt_r.read(wkt.encode())
        g2 = wkt_r.read(wkt)

        for geom in (g1, g2):
            self.assertEqual(ref, geom)

        # Should only accept string objects.
        with self.assertRaises(TypeError):
            wkt_r.read(1)
        with self.assertRaises(TypeError):
            wkt_r.read(memoryview(b"foo"))
Example #8
0
def add_vermont():
    vt_names = []
    vt_dict = {}
    with open("/tmp/vt_names") as f:
        vt_names = [l.strip() for l in f.readlines()]

    for name in vt_names:
        vt_name = name
        gnis_name = None
        municipality_name = None

        if " - " in name:
            (vt_name, gnis_name, municipality_name) = name.split(" - ")

        if gnis_name:
            gnis = GNIS.objects.get(feature_class="Civil",
                                    state_alpha="VT",
                                    feature_name=gnis_name)
        else:
            gnis = GNIS.objects.filter(
                feature_class="Civil",
                state_alpha="VT",
                feature_name__endswith="of %s" %
                (vt_name)).exclude(feature_name__startswith="Village of")[0]

        vt_dict[vt_name] = {
            "vt_name": vt_name,
            "gnis_name": gnis_name or vt_name,
            "municipality_name": municipality_name or vt_name,
            "gnis": gnis
        }

    wktr = WKTReader()
    sf = shapefile.Reader("/tmp/Boundary_BNDHASH_region_towns.shp")

    for i in range(0, 255):
        shape = sf.shape(i)
        record = sf.record(i)

        wkt = "POLYGON (("
        for p in shape.points:
            p = srs_to_latlng(p[0], p[1], 2852)
            wkt += "%f %f," % (p[1], p[0])
        wkt = wkt[:-1]
        wkt += "))"

        try:
            polygon = wktr.read(wkt)
        except:
            p = srs_to_latlng(shape.points[0][0], shape.points[0][1], 2852)
            wkt = wkt[:-2]
            wkt += ",%f %f))" % (p[1], p[0])
            polygon = wktr.read(wkt)

        dict_entry = vt_dict[record[6]]
        gnis = dict_entry["gnis"]

        m = Municipality()
        m.name = dict_entry["municipality_name"]
        m.geometry = polygon
        m.state_fips = gnis.state_numeric
        m.county_fips = gnis.county_numeric
        m.gnis = gnis.feature_id
        m.save()
        print "Saved %s" % (m)
Example #9
0
File: misc.py Project: iatkin/place
def get_item_places(name, zoom=12, steps=3, distinct_bounds=True, return_places=False):
    nurl = "http://open.mapquestapi.com/nominatim/v1"
    f = open("/tmp/%s-places" % (name), "w", encoding="utf-8")
    wktr = WKTReader()

    ps = {}

    items = BoundedItem.objects.filter(LayerDisplayName__contains="%s" % (name))

    if distinct_bounds:
        items = items.distinct("bounds")

    names = [b.LayerDisplayName for b in items]
    names.sort()

    def do_print_name(name):
        print name

    def dont_print_name(name):
        pass

    print_name = None

    if items.count() > 1:
        print_name = do_print_name
    else:
        print_name = dont_print_name

    for n in names:
        b = BoundedItem.objects.get(LayerDisplayName=n)
        d_x = (b.MaxX - b.MinX)/(steps)
        d_y = (b.MaxY - b.MinY)/(steps)

        xs = []
        ys = []

        for i in range(0,steps+1):
            xs.append(d_x * i)
            ys.append(d_y * i)

        places = []
        print_name(b.LayerDisplayName)
        f.write(b.LayerDisplayName)
        f.write("\n")
        for lon in xs:
            for lat in ys:
                url = "%s/reverse?lat=%f&lon=%f&zoom=%d&format=json" % (nurl, b.MinY + lat, b.MinX + lon, zoom)
                r = requests.get(url).json()
                name =  r["display_name"]

                if (not (name in places)):
                    url = "%s/search?q=\"%s\"&format=json&polygon_text=1" % (nurl, name)
                    r = requests.get(url).json()
                    p = wktr.read(r[0]["geotext"])

                    if b.bounds.intersects(p):
                        ps[name] = p
                        places.append(name)
        places.sort()
        for place in places:
            f.write(place)
            f.write("\n")
        f.write("\n")
    f.close()

    if return_places:
        return ps