You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.4 KiB
Python
62 lines
1.4 KiB
Python
4 years ago
|
import json
|
||
|
import os.path
|
||
|
|
||
|
# Medialab Prado
|
||
|
medialab_prado = [ -3.69380, 40.41041 ]
|
||
|
# X 441133.28
|
||
|
# Y 4473541.39
|
||
|
|
||
|
|
||
|
# Plaza del Sol
|
||
|
# Top left corner of the search field
|
||
|
plaza_del_sol = [ -3.7035, 40.41684 ]
|
||
|
# X 440315.95
|
||
|
# Y 4474261.62
|
||
|
|
||
|
# Atocha Renfe
|
||
|
# Bottom right corner of the search field
|
||
|
atocha_renfe = [ -3.6886, 40.40697 ]
|
||
|
# X 441571.52
|
||
|
# Y 4473156.10
|
||
|
|
||
|
# Return true if the tree lives within the given bounding box
|
||
|
# and it has a street address in the database
|
||
|
def within (bbox):
|
||
|
def eligible (tree):
|
||
|
coords = tree['geometry']['coordinates']
|
||
|
if bbox[0][0] <= coords[0] <= bbox[1][0] \
|
||
|
and bbox[0][1] <= coords[1] <= bbox[1][1] \
|
||
|
and tree['properties']['MINTDIRECCIONAUX'] is not None:
|
||
|
return True
|
||
|
|
||
|
|
||
|
return False
|
||
|
|
||
|
return eligible
|
||
|
|
||
|
# Load trees from the selected_ordered_trees
|
||
|
# who live within barrio de las letras
|
||
|
# and have a postal address recorded in the database
|
||
|
def load_trees_from_json():
|
||
|
basepath = os.path.dirname(__file__)
|
||
|
datafile = os.path.join(basepath, '../data/selected_trees_ordered.geojson')
|
||
|
|
||
|
barrio_de_las_letras = [
|
||
|
[-3.7025, 40.4134],
|
||
|
[-3.6945, 40.4169]
|
||
|
]
|
||
|
|
||
|
with open(datafile, 'r') as fp:
|
||
|
data = json.load(fp)
|
||
|
trees = data['features']
|
||
|
return list(filter(within(barrio_de_las_letras), trees))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
from random import shuffle
|
||
|
|
||
|
eligible_trees = load_trees_from_json()
|
||
|
print(len(eligible_trees))
|
||
|
shuffle(eligible_trees)
|
||
|
print(eligible_trees[:1])
|