def main(points_file): places = load_points(points_file) #random_place = dict([places.popitem()]) random_place = discard_outliers(places) bbox = get_bbox_for_points(places) for obj in get_osm_ways(bbox): print obj.to_dict()
cur.execute("""select distinct(label, name) FROM votes v JOIN geoplanet_places ON label::int = woe_id WHERE id LIKE '%s%%'""" % (areaid)) for row in cur: parts = row[0].split(',') place_id = parts[0][1:] name = (','.join(parts[1:])).replace('"', '').replace(')', '') print '%s %s' % (place_id, name) all_names[int(place_id)] = name count += 1 if count % 1000 == 0: print >>sys.stderr, "\rRead %d names" % count print >>sys.stderr, "\rRead %d names" % count places = load_points(all_names.keys()) for place_id in places: names[place_id] = all_names.get(place_id, "") places = discard_outliers(places) lines = [] cur.execute("""select geom as geojson_geom FROM tabblock10 tb WHERE statefp10 = %s AND countyfp10 = %s AND blockce10 NOT LIKE '0%%'""", (statefp10, countyfp10)) for r in cur: lines.append(wkb.loads(r[0].decode('hex'))) blocks = [poly.__geo_interface__ for poly in lines] if not os.path.exists(areaid + '.cache'): if do_cache: print >>sys.stderr, "Caching points, blocks, and names ..." pickle.dump((names, blocks, places), file(areaid + ".cache", "w"), -1) blocks = map(asShape, blocks) points = []
else: all_names = {} count = 0 for line in file(name_file): place_id, name = line.strip().split(None, 1) all_names[int(place_id)] = name count += 1 if count % 1000 == 0: print >> sys.stderr, "\rRead %d names from %s." % (count, name_file), print >> sys.stderr, "\rRead %d names from %s." % (count, name_file) places = load_points(point_file) for place_id in places: names[place_id] = all_names.get(place_id, "") places = discard_outliers(places) lines = [] do_polygonize = False print >> sys.stderr, "Reading lines from %s..." % line_file, for feature in geojson.loads(file(line_file).read()): if feature.geometry.type in ('LineString', 'MultiLineString'): do_polygonize = True lines.append(asShape(feature.geometry.to_dict())) print >> sys.stderr, "%d lines read." % len(lines) if do_polygonize: print >> sys.stderr, "Polygonizing %d lines..." % (len(lines)), blocks = [poly.__geo_interface__ for poly in polygonize(lines)] print >> sys.stderr, "%d blocks formed." % len(blocks) else: blocks = [poly.__geo_interface__ for poly in lines]
if count % 1000 == 0: print >>sys.stderr, "\rRead %d names from %s." % (count, name_file), print >>sys.stderr, "\rRead %d names from %s." % (count, name_file) votes = load_points(point_file, name_filter) if verbose: print >>sys.stderr, "votes: %s" % len(votes) print >>sys.stderr, "place_id: %s, pts: %s" % (place_id, place_id) for place_id, pts in votes: names[place_id] = all_names.get(place_id, "") for pt in pts: pt_count += 1 print >>sys.stderr, "pt_count: %s" % (pt_count) votes = discard_outliers(votes) lines = [] do_polygonize = False print >>sys.stderr, "Reading lines from %s..." % line_file, for feature in geojson.loads(file(line_file).read())["features"]: if verbose: print >>sys.stderr, "\nfeature: %s" % feature, if feature["geometry"]["type"] in ('LineString', 'MultiLineString'): do_polygonize = True lines.append(asShape(feature["geometry"])) if verbose: print >>sys.stderr, "%d lines read." % len(lines) if do_polygonize: if verbose: print >>sys.stderr, "Polygonizing %d lines..." % (len(lines)), blocks = [poly.__geo_interface__ for poly in polygonize(lines)] if verbose: print >>sys.stderr, "%d blocks formed." % len(blocks) else: