620 |
620 |
templates['computed_property_%s' % key] = Template(tplt)
|
621 |
621 |
except TemplateSyntaxError:
|
622 |
622 |
pass
|
|
623 |
|
|
624 |
def add_coordinates(coordinates):
|
|
625 |
nonlocal min_lat, min_lon, max_lat, max_lon
|
|
626 |
if not coordinates:
|
|
627 |
return
|
|
628 |
if not isinstance(coordinates[0], (float, int)):
|
|
629 |
for child in coordinates:
|
|
630 |
add_coordinates(child)
|
|
631 |
return
|
|
632 |
|
|
633 |
# position
|
|
634 |
lon, lat = coordinates
|
|
635 |
if min_lat is None or lat < min_lat:
|
|
636 |
min_lat = lat
|
|
637 |
if max_lat is None or lat > max_lat:
|
|
638 |
max_lat = lat
|
|
639 |
if min_lon is None or lon < min_lon:
|
|
640 |
min_lon = lon
|
|
641 |
if max_lon is None or lon > max_lon:
|
|
642 |
max_lon = lon
|
|
643 |
|
623 |
644 |
for feature in data['data']:
|
624 |
645 |
geometry = feature.get('geometry') or {}
|
625 |
646 |
if not geometry:
|
... | ... | |
635 |
656 |
# define bbox, lat/lon as min values, bbox_lat2/bbox_lon2 as max values
|
636 |
657 |
min_lat, min_lon, max_lat, max_lon = None, None, None, None
|
637 |
658 |
|
638 |
|
def add_coordinates(coordinates):
|
639 |
|
nonlocal min_lat, min_lon, max_lat, max_lon
|
640 |
|
if not coordinates:
|
641 |
|
return
|
642 |
|
if not isinstance(coordinates[0], (float, int)):
|
643 |
|
for child in coordinates:
|
644 |
|
add_coordinates(child)
|
645 |
|
return
|
646 |
|
|
647 |
|
# position
|
648 |
|
lon, lat = coordinates
|
649 |
|
if min_lat is None or lat < min_lat:
|
650 |
|
min_lat = lat
|
651 |
|
if max_lat is None or lat > max_lat:
|
652 |
|
max_lat = lat
|
653 |
|
if min_lon is None or lon < min_lon:
|
654 |
|
min_lon = lon
|
655 |
|
if max_lon is None or lon > max_lon:
|
656 |
|
max_lon = lon
|
657 |
|
|
658 |
659 |
add_coordinates(geometry['coordinates'])
|
659 |
660 |
lat, lon, lat2, lon2 = min_lat, min_lon, max_lat, max_lon
|
660 |
661 |
|
661 |
|
-
|