#!/usr/bin/env python # Scan the osm-vector directory, update the osm-vector-idx.json, add menu-defs from geojson import Feature, Point, FeatureCollection, Polygon import geojson import json import os import sys import fnmatch IIAB_PATH='/etc/iiab' if not IIAB_PATH in sys.path: sys.path.append(IIAB_PATH) from iiab_env import get_iiab_env doc_root = get_iiab_env('WWWROOT') menuDefs = doc_root + "/js-menu/menu-files/menu-defs/" map_catalog = {} map_menu_defs ={} def main(): global map_menu_defs get_map_catalog() map_menu_defs = get_menu_def_names() def get_map_catalog(): global map_catalog #input_json = "{{ iiab_dir }}" + '/regions.json' input_json = "/etc/iiab" + '/regions.json' with open(input_json,'r') as regions: reg_str = regions.read() map_catalog = json.loads(reg_str) #print(json.dumps(map_catalog,indent=2)) def get_menu_def_names(intended_use='map'): menu_def_dict = {} os.chdir(menuDefs) for filename in os.listdir('.'): if fnmatch.fnmatch(filename, '*.json'): try: with open(filename,'r') as json_file: readstr = json_file.read() data = json.loads(readstr) except: print("failed to parse %s"%filename) print(readstr) if data.get('intended_use','') != intended_use: continue mapname = data.get('name','') if mapname != '': menu_def_dict[data['map_name']] = menuDefs + filename return menu_def_dict def human_readable(num): # return 3 significant digits and unit specifier num = float(num) units = [ '','K','M','G'] for i in range(4): if num<10.0: return "%.2f%s"%(num,units[i]) if num<100.0: return "%.1f%s"%(num,units[i]) if num < 1000.0: return "%.0f%s"%(num,units[i]) num /= 1000.0 if __name__ == '__main__': main()