Beispiel #1
0
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()
Beispiel #2
0
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()
Beispiel #5
0
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})