def compute_occlusions(box): SW, NE = box points = list(POI.objects(at__geo_within_box=(SW, NE))) print("Starting", SW, NE, len(points)) for i, p1 in enumerate(points): for j, p2 in enumerate(points[i+1:]): coords1, coords2 = p1.at['coordinates'], p2.at['coordinates'] dist = math.sqrt(abs(coords1[0]-coords2[0])**2 + abs(coords1[1]-coords2[1])**2) occluded_point = p1 if p1.rank < p2.rank else p2 for zoom, spacing in enumerate(zoomspacing): if dist < spacing: continue break occluded_point.min_zoom = max(occluded_point.min_zoom, zoom) p1.save() print("Finished", SW, NE, len(points))
def compute_occlusions(box): SW, NE = box points = list(POI.objects(at__geo_within_box=(SW, NE))) print("Starting", SW, NE, len(points)) for i, p1 in enumerate(points): for j, p2 in enumerate(points[i + 1:]): coords1, coords2 = p1.at['coordinates'], p2.at['coordinates'] dist = math.sqrt( abs(coords1[0] - coords2[0])**2 + abs(coords1[1] - coords2[1])**2) occluded_point = p1 if p1.rank < p2.rank else p2 for zoom, spacing in enumerate(zoomspacing): if dist < spacing: continue break occluded_point.min_zoom = max(occluded_point.min_zoom, zoom) p1.save() print("Finished", SW, NE, len(points))
def getPoints(): print(request.json) zoom = int(request.json.get("zoom", 1)) seen = request.json.get("seen", []) ensure(seen).is_a_list_of(str) points = POI.objects( at__geo_within_box=(request.json["SW"], request.json["NE"]), min_zoom=zoom, name__nin=request.json["seen"] ) return jsonify( { "points": [ { "name": p.name, "lat": p.at["coordinates"][1], "lng": p.at["coordinates"][0], "abstract": lz4.decompress(p.abstract).decode() if p.abstract else "", "img": p.img, } for p in points ] } )
def getPoints(): print(request.json) zoom = int(request.json.get('zoom', 1)) seen = request.json.get('seen', []) ensure(seen).is_a_list_of(str) points = POI.objects(at__geo_within_box=(request.json['SW'], request.json['NE']), min_zoom=zoom, name__nin=request.json['seen']) return jsonify({ "points": [{ "name": p.name, "lat": p.at['coordinates'][1], "lng": p.at['coordinates'][0], "abstract": lz4.decompress(p.abstract).decode() if p.abstract else '', "img": p.img, } for p in points] })
#!/usr/bin/env python3 import os, sys, logging, urllib, time, string, json, argparse, collections, datetime, re, bz2 import lz4 logging.basicConfig(level=logging.DEBUG) sys.path.append(os.path.join(os.path.dirname(__file__), "lib", "python")) from carta import (logger, POI) from mongoengine import * connect('carta') POI.drop_collection() #POI(name='si02', at=[151.0, -34.0]).save() from xml.etree import cElementTree as ElementTree #from xml.etree import ElementTree # See http://en.wikipedia.org/wiki/Template:Coord #ElementTree.register_namespace('http://www.mediawiki.org/xml/export-0.8/', '') input_filename = "data/enwiki-latest-pages-articles.xml.bz2" coord_re = re.compile("{{coord.+?}}") #{{coord|28|N|2|E|scale:10000000_type:country_region:DZ|format=dms|display=title}} title, text, coord = None, None, None def normalize_coords(lat_d, long_d, lat_m=None, lat_s=None, lat_NS=None, long_m=None, long_s=None, long_EW=None):