def insert_data(db): """ ret = db.session.query(landmarks.Landmark).all() for x in ret: db.session.delete(x) db.session.commit() return """ d = geojson.load(open("natural.geojson", "r+")) for x in list(d['features']): lat = float(x['geometry']['coordinates'][1]) lng = float(x['geometry']['coordinates'][0]) gc = geo_coords.GeoCoords() geo, isFound = get_or_create(db.session, geo_coords.GeoCoords, latitude=lat, longitude=lng) lp = landmarks.Landmark() lp.name = x['properties']['name'].encode( 'ascii', 'xmlcharrefreplace') if 'name' in x['properties'] else "" lp.geo = geo lp.landmark_category = x['properties']['natural'] if 'natural' in x[ 'properties'] else "" db.session.add(lp) db.session.commit()
def insert_data(db): d = geojson.load(open("tourism_viewpoint.geojson", "r+")) for x in list(d['features']): if x['geometry']['type'] <> "Point": last = False avg = [0, 0] for coords in x['geometry']['coordinates'][0]: if last <> False: avg[0] = (last[0] + coords[0]) / 2 avg[1] = (last[1] + coords[1]) / 2 last = coords x['geometry']['coordinates'] = avg lat = float(x['geometry']['coordinates'][1]) lng = float(x['geometry']['coordinates'][0]) gc = geo_coords.GeoCoords() geo, isFound = get_or_create(db.session, geo_coords.GeoCoords, latitude=lat, longitude=lng) lp = landmarks.Landmark() lp.name = x['properties']['name'].encode( 'ascii', 'xmlcharrefreplace') if 'name' in x['properties'] else "" lp.geo = geo lp.landmark_category = x['properties']['amenity'] if 'amenity' in x[ 'properties'] else "viewpoint" db.session.add(lp) db.session.commit()
def insert_data(db): d = etree.parse(open("monumentaltrees.xml", "r+")).getroot() for x in list(d): if x.tag == "m": lat = float(x.attrib['lat']) lng = float(x.attrib['lng']) gc = geo_coords.GeoCoords() geo, isFound = get_or_create(db.session, geo_coords.GeoCoords, latitude=lat, longitude=lng) lp = landmarks.Landmark() lp.name = x.attrib['t'].encode('ascii', 'xmlcharrefreplace') lp.url = "http://www.monumentaltrees.com/" + x.attrib['u'] lp.geo = geo lp.landmark_category = "tree" db.session.add(lp) db.session.commit()
def insert_data(db): d = geojson.load(open("historic.geojson", "r+")) for x in list(d['features']): d = {} d['lat'] = x['geometry']['coordinates'][1] d['lng'] = x['geometry']['coordinates'][0] gc = geo_coords.GeoCoords() geo, isFound = get_or_create(db.session, geo_coords.GeoCoords, latitude=float(d['lat']), longitude=float(d['lng'])) d = {} d['name'] = x['properties']['name'] if 'name' in x['properties'] else "" d['landmark_category'] = x['properties'][ 'historic'] if 'historic' in x['properties'] else "" lp = landmarks.Landmark() lp.geo = geo lp.name = d['name'].encode('ascii', 'xmlcharrefreplace') lp.landmark_category = d['landmark_category'] db.session.add(lp) db.session.commit()
def tour_json(): d = {} rq = request.get_json() places = set() facets = {} places_by_polygon = {} # so we can limit routing to nearby places first gc = geo_coords.GeoCoords() hp = historicplace.HistoricPlace() lp = landmarks.Landmark() from sqlalchemy import func, distinct for rect in rq['polygons']: if rect[0:4] <> "rect": continue latlngs = rq['polygons'][rect]['latlngs'] latmin = latlngs[0]['lat'] latmax = latlngs[2]['lat'] lngmin = latlngs[0]['lng'] lngmax = latlngs[2]['lng'] ret = [ x[0] for x in db.session.query(geo_coords.GeoCoords.guid).filter( geo_coords.GeoCoords.latitude >= latmin, geo_coords.GeoCoords. latitude <= latmax, geo_coords.GeoCoords.longitude >= lngmin, geo_coords.GeoCoords.longitude <= lngmax).all() ] geo_q = landmarks.Landmark.geo_id.in_(ret) # gather facet aggregate information """ q = db.session.query(landmarks.Landmark.landmark_category, func.count(landmarks.Landmark.guid)).filter(geo_q).group_by(landmarks.Landmark.landmark_category) for f in q.all(): if f[0] not in facets: facets[f[0]] = 0 facets[ f[0] ] = f[1] q = db.session.query(landmarks.Landmark).filter(geo_q) for row in q.all(): places.add( row ) """ q = db.session.query(historicplace.HistoricPlace).filter(geo_q) if 'historic_place' not in facets: facets['historic_place'] = 0 facets['historic_place'] += q.count() for row in q.all(): places.add(row) i = 0 for x in places: cat = getattr(x, 'landmark_category', None) if cat is None: cat = x.discriminator tmp = { 'category': cat, 'name': x.name, 'pos': { 'lat': float(x.geo.latitude), 'lng': float(x.geo.longitude) } } d[i] = tmp i += 1 return jsonify({'facets': facets, 'places': d})