from osgeo import gdal, ogr, osr import glob import os import json import subprocess cdn_url = 'https://cdn.proj.org' agency_list = json.loads(open('agency.json','rt').read()) agencies = {} for item in agency_list: agencies[item['id']] = item area_list = json.loads(open('area.json','rt').read()) area_dict = {} for item in area_list: area_dict[item['code']] = item files_list = json.loads(open('files.json','rt').read()) files_dict = {} for item in files_list: files_dict[item['name']] = item dirnames = [] links = [] for dirname in glob.glob('*'): if not os.path.isdir(dirname): continue dirnames.append(dirname) gj_ds = ogr.GetDriverByName('GeoJSON').CreateDataSource('files.geojson') sr = osr.SpatialReference() sr.SetAxisMappingStrategy(osr.OAMS_TRADITIONAL_GIS_ORDER) sr.ImportFromEPSG(4326) lyr = gj_ds.CreateLayer('files', srs = sr, options = ['RFC7946=YES']) lyr.CreateField(ogr.FieldDefn('url', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('name', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('area_of_use', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('type', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('source_crs_code', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('source_crs_name', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('target_crs_code', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('target_crs_name', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('source', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('source_country', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('source_id', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('source_url', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('description', ogr.OFTString)) lyr.CreateField(ogr.FieldDefn('full_bbox', ogr.OFTRealList)) lyr.CreateField(ogr.FieldDefn('file_size', ogr.OFTInteger64)) total_size = 0 set_files = set() for dirname in sorted(dirnames): if '_' not in dirname or dirname == 'grid_tools': continue filenames = [] readme_filename = None for f in glob.glob(dirname + '/*'): f = os.path.basename(f) if f.endswith('README.txt'): assert not readme_filename readme_filename = f else: filenames.append(f) agency = agencies[dirname] title = '%s' % (agency['url'].replace('&', "&"), agency['agency']) links.append('

%s