summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-05-29 15:52:12 +0200
committerEven Rouault <even.rouault@spatialys.com>2020-05-29 16:18:36 +0200
commit22d7974a77900fd0963f17ed2b7e3c3b1217af55 (patch)
treef6c1aa2c45681a0c74960a992f996a18605dba04
parent84c368212ec4e897a9025814a108229c37eea534 (diff)
downloadPROJ-data-22d7974a77900fd0963f17ed2b7e3c3b1217af55.tar.gz
PROJ-data-22d7974a77900fd0963f17ed2b7e3c3b1217af55.zip
regenerate_index_html.py: update it for deformation models
-rwxr-xr-xregenerate_index_html.py72
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']