diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-05-29 15:52:12 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2020-05-29 16:18:36 +0200 |
| commit | 22d7974a77900fd0963f17ed2b7e3c3b1217af55 (patch) | |
| tree | f6c1aa2c45681a0c74960a992f996a18605dba04 | |
| parent | 84c368212ec4e897a9025814a108229c37eea534 (diff) | |
| download | PROJ-data-22d7974a77900fd0963f17ed2b7e3c3b1217af55.tar.gz PROJ-data-22d7974a77900fd0963f17ed2b7e3c3b1217af55.zip | |
regenerate_index_html.py: update it for deformation models
| -rwxr-xr-x | regenerate_index_html.py | 72 |
1 files changed, 47 insertions, 25 deletions
diff --git a/regenerate_index_html.py b/regenerate_index_html.py index 6c3527a..f0896fc 100755 --- a/regenerate_index_html.py +++ b/regenerate_index_html.py @@ -53,6 +53,28 @@ lyr.CreateField(ogr.FieldDefn('full_bbox', ogr.OFTRealList)) lyr.CreateField(ogr.FieldDefn('file_size', ogr.OFTInteger64)) lyr.CreateField(ogr.FieldDefn('sha256sum', ogr.OFTString)) +def polygon_from_bbox(xmin, ymin, xmax, ymax): + geom = ogr.Geometry(ogr.wkbPolygon) + ring = ogr.Geometry(ogr.wkbLinearRing) + # Add small epsilon to help unioning polygons touching by edge + eps = 1e-12 + ring.AddPoint_2D(xmin-eps, ymin-eps) + ring.AddPoint_2D(xmin-eps, ymax+eps) + ring.AddPoint_2D(xmax+eps, ymax+eps) + ring.AddPoint_2D(xmax+eps, ymin+eps) + ring.AddPoint_2D(xmin-eps, ymin-eps) + geom.AddGeometry(ring) + return geom + +def normalize_lon(xmin, xmax): + if xmin > 180: + xmin -= 360 + xmax -= 360 + elif xmax < -180: + xmin += 360 + xmax += 360 + return xmin, xmax + total_size = 0 set_files = set() for dirname in sorted(dirnames): @@ -89,7 +111,7 @@ for dirname in sorted(dirnames): ds = gdal.OpenEx(full_filename) if ds: - imageDesc = ds.GetMetadataItem('TIFFTAG_IMAGEDESCRIPTION') + imageDesc = ds.GetMetadataItem('TIFFTAG_IMAGEDESCRIPTION').replace('\r\n', '. ').replace('\n', '. ').replace('. .', '.').replace(' ', ' ') if imageDesc: pos = imageDesc.find('. Converted from') if pos >= 0: @@ -139,33 +161,11 @@ for dirname in sorted(dirnames): sr = osr.SpatialReference() assert sr.SetFromUserInput(target_crs_wkt) == 0 feat['target_crs_name'] = sr.GetName() - elif ds.GetMetadataItem('TYPE') != 'VELOCITY': - assert False - - def normalize_lon(xmin, xmax): - if xmin > 180: - xmin -= 360 - xmax -= 360 - elif xmax < -180: - xmin += 360 - xmax += 360 - return xmin, xmax + elif ds.GetMetadataItem('TYPE') not in ('VELOCITY', 'DEFORMATION_MODEL'): + assert False, (full_filename, target_crs_epsg_code, target_crs_wkt) xmin, xmax = normalize_lon(xmin, xmax) - def polygon_from_bbox(xmin, ymin, xmax, ymax): - geom = ogr.Geometry(ogr.wkbPolygon) - ring = ogr.Geometry(ogr.wkbLinearRing) - # Add small epsilon to help unioning polygons touching by edge - eps = 1e-12 - ring.AddPoint_2D(xmin-eps, ymin-eps) - ring.AddPoint_2D(xmin-eps, ymax+eps) - ring.AddPoint_2D(xmax+eps, ymax+eps) - ring.AddPoint_2D(xmax+eps, ymin+eps) - ring.AddPoint_2D(xmin-eps, ymin-eps) - geom.AddGeometry(ring) - return geom - subds_list = ds.GetSubDatasets() if subds_list: geom = None @@ -200,6 +200,28 @@ for dirname in sorted(dirnames): feat.SetGeometry(geom) + elif full_filename.endswith('.json'): + + json_content = json.loads(open(full_filename, 'rb').read().decode('UTF-8')) + if 'file_type' in json_content and json_content['file_type'] == 'deformation_model_master_file': + feat['type'] = 'DEFORMATION_MODEL' + + feat['source_crs_code'] = json_content['source_crs'] + sr = osr.SpatialReference() + assert sr.SetFromUserInput(feat['source_crs_code']) == 0 + feat['source_crs_name'] = sr.GetName() + + feat['target_crs_code'] = json_content['target_crs'] + sr = osr.SpatialReference() + assert sr.SetFromUserInput(feat['target_crs_code']) == 0 + feat['target_crs_name'] = sr.GetName() + + feat['description'] = json_content['description'].replace('\\n', ' ') + ' (version ' + json_content['version'] + ')' + desc = feat['description'] + xmin, ymin, xmax, ymax = json_content['extent']['parameters']['bbox'] + geom = polygon_from_bbox(xmin, ymin, xmax, ymax) + feat.SetGeometry(geom) + feat['url'] = cdn_url + '/' + f feat['name'] = f feat['source'] = agency['agency'] |
