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'))
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'))
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"))
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)
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"))
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)
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