Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
.spyderproject
.spyproject
.tox/
.run/
.venv
.vscode.ws.code-workspace
.webassets-cache
Expand Down
72 changes: 53 additions & 19 deletions dggrid4py/dggrid_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,7 @@ def get_geo_out(legacy=True, has_gdal=True):
"output_cell_label_type": DggsOutputCellLabelTypeT,
"output_count": bool,
"output_count_field_name": str,
"output_num_classes": bool,
"output_delimiter": str,
"output_file_name": str,
"output_first_seqnum": int,
Expand Down Expand Up @@ -985,21 +986,27 @@ def dgapi_grid_transform(

input_extras = self.check_input_extra_fields(conf_extra)
subset_conf.update(input_extras)
if subset_conf:
for elem, value in subset_conf.items():
metafile.append(f"{elem} " + str(value))

# transform output_types
output_conf = {}
if (
'output_file_name' in output_conf.keys() and
'output_address_type' in output_conf.keys() and
output_conf['output_address_type'] in self.output_address_types
'output_file_name' in conf_extra.keys() and
'output_address_type' in conf_extra.keys() and
conf_extra['output_address_type'] in self.output_address_types
):
for elem in filter(lambda x: x.startswith('output_') , output_conf.keys()):
metafile.append(f"{elem} " + str(output_conf[elem]))
for elem in filter(lambda x: x.startswith('output_') , conf_extra.keys()):
output_conf[elem] = conf_extra[elem]
metafile.append(f"{elem} " + str(conf_extra[elem]))
else:
raise ValueError('no output filename or type given')

output_extras = self.check_output_extra_fields(conf_extra)
if output_extras:
for elem, value in output_extras.items():
output_conf[elem] = value
metafile.append(f"{elem} " + str(value))

result = self.run(metafile)
Expand Down Expand Up @@ -1075,21 +1082,27 @@ def dgapi_point_value_binning(

input_extras = self.check_input_extra_fields(conf_extra)
subset_conf.update(input_extras)
if subset_conf:
for elem, value in subset_conf.items():
metafile.append(f"{elem} " + str(value))

# transform output_types
output_conf = {}
if (
'output_file_name' in output_conf.keys() and
'output_address_type' in output_conf.keys() and
output_conf['output_address_type'] in self.output_address_types
'output_file_name' in conf_extra.keys() and
'output_address_type' in conf_extra.keys() and
conf_extra['output_address_type'] in self.output_address_types
):
for elem in filter(lambda x: x.startswith('output_') , output_conf.keys()):
metafile.append(f"{elem} " + output_conf[elem])
for elem in filter(lambda x: x.startswith('output_') , conf_extra.keys()):
output_conf[elem] = conf_extra[elem]
metafile.append(f"{elem} " + conf_extra[elem])
else:
raise ValueError('no output filename or type given')

output_extras = self.check_output_extra_fields(conf_extra)
if output_extras:
for elem, value in output_extras.items():
output_conf[elem] = conf_extra[elem]
metafile.append(f"{elem} " + str(value))

result = self.run(metafile)
Expand Down Expand Up @@ -1142,22 +1155,39 @@ def dgapi_pres_binning(

input_extras = self.check_input_extra_fields(conf_extra)
subset_conf.update(input_extras)
if subset_conf:
for elem, value in subset_conf.items():
metafile.append(f"{elem} " + str(value))

# pre-patch elements before integrating them to the metafile
if "output_delimiter" in conf_extra:
delim = conf_extra["output_delimiter"] or " "
delim = f'"{delim}"' if '"' not in delim else delim
conf_extra["output_delimiter"] = delim
if "cell_output_control" in conf_extra and conf_extra["cell_output_control"] not in cell_output_controls:
raise ValueError(f"cell_output_control must be one of: {cell_output_controls}")
for field in ["output_count", "output_num_classes"]:
if field in conf_extra:
conf_extra[field] = str(conf_extra[field]).upper() # bool or string-like bool

# transform output_types
output_conf = {}
if (
'output_file_name' in output_conf.keys() and
'output_address_type' in output_conf.keys() and
output_conf['output_address_type'] in self.output_address_types
'output_file_name' in conf_extra.keys() and
'output_address_type' in conf_extra.keys() and
conf_extra['output_address_type'] in self.output_address_types
):
for elem in filter(lambda x: x.startswith('output_') , output_conf.keys()):
metafile.append(f"{elem} " + output_conf[elem])
for elem in filter(lambda x: x.startswith('output_') or x.startswith('cell_output_'), conf_extra.keys()):
output_conf[elem] = conf_extra[elem]
metafile.append(f"{elem} " + conf_extra[elem])
else:
raise ValueError('no output filename or type given')

output_extras = self.check_output_extra_fields(conf_extra)
if output_extras:
for elem, value in output_extras.items():
metafile.append(f"{elem} " + str(value))
output_conf[elem] = conf_extra[elem]
metafile.append(f"{elem} {value!s}")

result = self.run(metafile)

Expand Down Expand Up @@ -1848,7 +1878,7 @@ def cells_for_geo_points(
dggs.update(**conf_extra, strict=True)

cols = set(geodf_points_wgs84.columns.tolist())
cols = cols - set('geometry')
cols = cols - {'geometry'}
geodf_points_wgs84['lon'] = geodf_points_wgs84['geometry'].x
geodf_points_wgs84['lat'] = geodf_points_wgs84['geometry'].y
cols_ordered = ['lon', 'lat']
Expand Down Expand Up @@ -1905,15 +1935,19 @@ def cells_for_geo_points(
return geodf_points_wgs84
else:
# grid_gen from seqnums
dggs_conf = dggs.to_dict()
gdf = self.grid_cell_polygons_from_cellids(
cell_id_list=cell_id_list,
dggs_type=dggs_type,
# dggs_type=dggs_type, passed via dggs_conf
resolution=resolution,
mixed_aperture_level=mixed_aperture_level,
input_address_type=output_address_type,
output_address_type=self.output_address_types,
output_address_type=output_address_type,
**dggs_conf, # ensure any extra parameters are passed on
)
try:
# avoid conflict between input 'name' column and generated 'name' Zone ID
gdf.rename(columns={'name': 'zone'}, inplace=True)
for col in cols_ordered:
gdf[col] = geodf_points_wgs84[col].values
except Exception:
Expand Down
Loading