Volumetric DGGS Package¶
The surface_dggs package consists of all of the scripts and django web application components necessary to build and query Surface DGGS Instances
The Subpackages contain the python modules and scripts that perform the core backend DGGS related tasks.
The Submodules contain the django web application resources to expose the Surface DGGS Resources to the user.
Volumetric DGGS Subpackages¶
The following Subpackages are defined by this package.
Volumetric DGGS Submodules¶
The following submodules are defined by this package.
volumetric_dggs.apps module¶
Note
Module Details
Volumetric DGGS Application Registration module
This Class module is required to register each Django package under the main web application.
Created: 7 September 2017
@author: Dr. Matthew B.J. Purss
volumetric_dggs.consumers module¶
Note
Module Details
Volumetric DGGS Asynchronous “Consumers” Module
This Class module defines the consumers for asynchronous requests to the SurfaceDGGS application resources through TerraNexus.
This is the asynchronous equivalent to the “views” module.
Created: 30 June 2020
@author: Dr. Matthew B.J. Purss
- class src.volumetric_dggs.consumers.BuildVolumetricDGGSConsumer(*args, **kwargs)¶
Bases:
AsyncJsonWebsocketConsumer
- buildVolumetricDGGS_consumer_task = <@task: src.volumetric_dggs.consumers.buildVolumetricDGGS_consumer_task of TerraNexus>¶
- async connect()¶
- async disconnect(close_code)¶
Called when a WebSocket connection is closed.
- async receive_json(content)¶
Called with decoded JSON content.
- async response_message(event)¶
- class src.volumetric_dggs.consumers.DGGSGenerateVoxelsConsumer(*args, **kwargs)¶
Bases:
AsyncJsonWebsocketConsumer
- async connect()¶
- async disconnect(close_code)¶
Called when a WebSocket connection is closed.
- generate_voxels_task = <@task: src.volumetric_dggs.consumers.generate_voxels_task of TerraNexus>¶
- async receive_json(content)¶
Called with decoded JSON content.
- async response_message(event)¶
- class src.volumetric_dggs.consumers.DGGSGetRegisteredVoxelsConsumer(*args, **kwargs)¶
Bases:
AsyncJsonWebsocketConsumer
- async connect()¶
- async disconnect(close_code)¶
Called when a WebSocket connection is closed.
- get_registered_voxels_consumer_task = <@task: src.volumetric_dggs.consumers.get_registered_voxels_consumer_task of TerraNexus>¶
- async receive_json(content)¶
Called with decoded JSON content.
- async response_message(event)¶
volumetric_dggs.forms module¶
Note
Module Details
Volumetric DGGS “Django Forms” Definition Module
This module contains the “Form” definitions for the surface_dggs web application resources.
Created: 21 May 2017
@author: Dr. Matthew B.J. Purss
- class src.volumetric_dggs.forms.BuildVolumetricDGGSForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'earth_model_comboBox': <django.forms.fields.ChoiceField object>, 'surface_dggs_selection_comboBox': <django.forms.fields.ChoiceField object>}¶
- declared_fields = {'earth_model_comboBox': <django.forms.fields.ChoiceField object>, 'surface_dggs_selection_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.BuildVolumetricTerraNexusForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'a_max': <django.forms.fields.DecimalField object>, 'a_min': <django.forms.fields.DecimalField object>, 'cell_type_comboBox': <django.forms.fields.ChoiceField object>, 'earth_model_comboBox': <django.forms.fields.ChoiceField object>, 'equal_volume_threshold': <django.forms.fields.DecimalField object>, 'polyhedron_comboBox': <django.forms.fields.ChoiceField object>, 'ref_lat': <django.forms.fields.DecimalField object>, 'ref_lon': <django.forms.fields.DecimalField object>, 'refinement_ratio_comboBox': <django.forms.fields.ChoiceField object>, 'rotate_checkbox': <django.forms.fields.BooleanField object>}¶
- declared_fields = {'a_max': <django.forms.fields.DecimalField object>, 'a_min': <django.forms.fields.DecimalField object>, 'cell_type_comboBox': <django.forms.fields.ChoiceField object>, 'earth_model_comboBox': <django.forms.fields.ChoiceField object>, 'equal_volume_threshold': <django.forms.fields.DecimalField object>, 'polyhedron_comboBox': <django.forms.fields.ChoiceField object>, 'ref_lat': <django.forms.fields.DecimalField object>, 'ref_lon': <django.forms.fields.DecimalField object>, 'refinement_ratio_comboBox': <django.forms.fields.ChoiceField object>, 'rotate_checkbox': <django.forms.fields.BooleanField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.LoadDataForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'Horizontal_scale_factor': <django.forms.fields.DecimalField object>, 'Vertical_scale_factor': <django.forms.fields.DecimalField object>, 'chunk_size': <django.forms.fields.IntegerField object>, 'dataimportFile': <django.forms.fields.FileField object>, 'dataimportType_comboBox': <django.forms.fields.ChoiceField object>, 'ref_height': <django.forms.fields.DecimalField object>, 'ref_lat': <django.forms.fields.DecimalField object>, 'ref_lon': <django.forms.fields.DecimalField object>, 'res_max': <django.forms.fields.IntegerField object>, 'res_min': <django.forms.fields.IntegerField object>}¶
- declared_fields = {'Horizontal_scale_factor': <django.forms.fields.DecimalField object>, 'Vertical_scale_factor': <django.forms.fields.DecimalField object>, 'chunk_size': <django.forms.fields.IntegerField object>, 'dataimportFile': <django.forms.fields.FileField object>, 'dataimportType_comboBox': <django.forms.fields.ChoiceField object>, 'ref_height': <django.forms.fields.DecimalField object>, 'ref_lat': <django.forms.fields.DecimalField object>, 'ref_lon': <django.forms.fields.DecimalField object>, 'res_max': <django.forms.fields.IntegerField object>, 'res_min': <django.forms.fields.IntegerField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.RepairVolumetricDGGSForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)¶
Bases:
Form
- base_fields = {'selected_dggs': <django.forms.fields.CharField object>}¶
- declared_fields = {'selected_dggs': <django.forms.fields.CharField object>}¶
- property media¶
Return all media required to render the widgets on this form.
- class src.volumetric_dggs.forms.VolumetricTerraNexus_FindVoxelsQueryForm(*args, min_height=-1, max_height=1, **kwargs)¶
Bases:
Form
- base_fields = {'find_voxels_chunk_size': <django.forms.fields.IntegerField object>, 'find_voxels_constructvoxels_checkbox': <django.forms.fields.BooleanField object>, 'find_voxels_equaliseVoxel_Volume_checkbox': <django.forms.fields.BooleanField object>, 'find_voxels_height_max': <django.forms.fields.DecimalField object>, 'find_voxels_height_min': <django.forms.fields.DecimalField object>, 'find_voxels_ref_height': <django.forms.fields.DecimalField object>, 'find_voxels_ref_lat': <django.forms.fields.DecimalField object>, 'find_voxels_ref_lon': <django.forms.fields.DecimalField object>, 'find_voxels_res_max': <django.forms.fields.IntegerField object>, 'find_voxels_res_min': <django.forms.fields.IntegerField object>, 'find_voxels_search_radius': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_polygon_file': <django.forms.fields.FileField object>, 'find_voxels_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'find_voxels_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- declared_fields = {'find_voxels_chunk_size': <django.forms.fields.IntegerField object>, 'find_voxels_constructvoxels_checkbox': <django.forms.fields.BooleanField object>, 'find_voxels_equaliseVoxel_Volume_checkbox': <django.forms.fields.BooleanField object>, 'find_voxels_height_max': <django.forms.fields.DecimalField object>, 'find_voxels_height_min': <django.forms.fields.DecimalField object>, 'find_voxels_ref_height': <django.forms.fields.DecimalField object>, 'find_voxels_ref_lat': <django.forms.fields.DecimalField object>, 'find_voxels_ref_lon': <django.forms.fields.DecimalField object>, 'find_voxels_res_max': <django.forms.fields.IntegerField object>, 'find_voxels_res_min': <django.forms.fields.IntegerField object>, 'find_voxels_search_radius': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_polygon_file': <django.forms.fields.FileField object>, 'find_voxels_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'find_voxels_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'find_voxels_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetChildVoxelsQueryForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_child_voxels_id': <django.forms.fields.CharField object>, 'get_child_voxels_res_steps': <django.forms.fields.IntegerField object>}¶
- declared_fields = {'get_child_voxels_id': <django.forms.fields.CharField object>, 'get_child_voxels_res_steps': <django.forms.fields.IntegerField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetDataMeshForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_data_mesh_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_data_mesh_params_surface_base_radial_step': <django.forms.fields.IntegerField object>, 'get_data_mesh_params_surface_base_theta_step': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_surface_resolution_scale_factor': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_tetgen_max_radius_edge_ratio': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_tetgen_min_dihedral_angle': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_tetgen_optimization_level': <django.forms.fields.IntegerField object>, 'get_data_mesh_params_tetgen_verbosity': <django.forms.fields.IntegerField object>, 'get_data_mesh_ref_lat': <django.forms.fields.DecimalField object>, 'get_data_mesh_ref_lon': <django.forms.fields.DecimalField object>, 'get_data_mesh_res_max': <django.forms.fields.IntegerField object>, 'get_data_mesh_res_min': <django.forms.fields.IntegerField object>, 'get_data_mesh_search_radius': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_data_mesh_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchtype_comboBox': <django.forms.fields.ChoiceField object>, 'selected_mapped_data': <django.forms.fields.CharField object>}¶
- declared_fields = {'get_data_mesh_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_data_mesh_params_surface_base_radial_step': <django.forms.fields.IntegerField object>, 'get_data_mesh_params_surface_base_theta_step': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_surface_resolution_scale_factor': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_tetgen_max_radius_edge_ratio': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_tetgen_min_dihedral_angle': <django.forms.fields.DecimalField object>, 'get_data_mesh_params_tetgen_optimization_level': <django.forms.fields.IntegerField object>, 'get_data_mesh_params_tetgen_verbosity': <django.forms.fields.IntegerField object>, 'get_data_mesh_ref_lat': <django.forms.fields.DecimalField object>, 'get_data_mesh_ref_lon': <django.forms.fields.DecimalField object>, 'get_data_mesh_res_max': <django.forms.fields.IntegerField object>, 'get_data_mesh_res_min': <django.forms.fields.IntegerField object>, 'get_data_mesh_search_radius': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_data_mesh_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_data_mesh_searchtype_comboBox': <django.forms.fields.ChoiceField object>, 'selected_mapped_data': <django.forms.fields.CharField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetMappedDataForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_mapped_data_chunk_size': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_alpha_radius': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_surface_base_radial_step': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_surface_base_theta_step': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_surface_resolution_scale_factor': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_tetgen_max_radius_edge_ratio': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_tetgen_min_dihedral_angle': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_tetgen_optimization_level': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_tetgen_verbosity': <django.forms.fields.IntegerField object>, 'get_mapped_data_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_mapped_data_output_type_comboBox': <django.forms.fields.ChoiceField object>, 'get_mapped_data_ref_lat': <django.forms.fields.DecimalField object>, 'get_mapped_data_ref_lon': <django.forms.fields.DecimalField object>, 'get_mapped_data_res_max': <django.forms.fields.IntegerField object>, 'get_mapped_data_res_min': <django.forms.fields.IntegerField object>, 'get_mapped_data_search_radius': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_mapped_data_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- clean()¶
Hook for doing any extra form-wide cleaning after Field.clean() has been called on every field. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field named ‘__all__’.
- declared_fields = {'get_mapped_data_chunk_size': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_alpha_radius': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_surface_base_radial_step': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_surface_base_theta_step': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_surface_resolution_scale_factor': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_tetgen_max_radius_edge_ratio': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_tetgen_min_dihedral_angle': <django.forms.fields.DecimalField object>, 'get_mapped_data_mesh_params_tetgen_optimization_level': <django.forms.fields.IntegerField object>, 'get_mapped_data_mesh_params_tetgen_verbosity': <django.forms.fields.IntegerField object>, 'get_mapped_data_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_mapped_data_output_type_comboBox': <django.forms.fields.ChoiceField object>, 'get_mapped_data_ref_lat': <django.forms.fields.DecimalField object>, 'get_mapped_data_ref_lon': <django.forms.fields.DecimalField object>, 'get_mapped_data_res_max': <django.forms.fields.IntegerField object>, 'get_mapped_data_res_min': <django.forms.fields.IntegerField object>, 'get_mapped_data_search_radius': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_mapped_data_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_mapped_data_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetNeighbouringVoxelsQueryForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_neighbouring_voxels_edge_checkbox': <django.forms.fields.BooleanField object>, 'get_neighbouring_voxels_id': <django.forms.fields.CharField object>, 'get_neighbouring_voxels_radius_steps': <django.forms.fields.IntegerField object>, 'get_neighbouring_voxels_vertex_checkbox': <django.forms.fields.BooleanField object>}¶
- declared_fields = {'get_neighbouring_voxels_edge_checkbox': <django.forms.fields.BooleanField object>, 'get_neighbouring_voxels_id': <django.forms.fields.CharField object>, 'get_neighbouring_voxels_radius_steps': <django.forms.fields.IntegerField object>, 'get_neighbouring_voxels_vertex_checkbox': <django.forms.fields.BooleanField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetParentVoxelQueryForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_parent_voxels_id': <django.forms.fields.CharField object>, 'get_parent_voxels_res_steps': <django.forms.fields.IntegerField object>}¶
- declared_fields = {'get_parent_voxels_id': <django.forms.fields.CharField object>, 'get_parent_voxels_res_steps': <django.forms.fields.IntegerField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetVoxelCentroidsForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_voxel_centroids_ID': <django.forms.fields.CharField object>, 'get_voxel_centroids_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_voxel_centroids_ref_lat': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_ref_lon': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_res_max': <django.forms.fields.IntegerField object>, 'get_voxel_centroids_res_min': <django.forms.fields.IntegerField object>, 'get_voxel_centroids_search_radius': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_voxel_centroids_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- declared_fields = {'get_voxel_centroids_ID': <django.forms.fields.CharField object>, 'get_voxel_centroids_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_voxel_centroids_ref_lat': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_ref_lon': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_res_max': <django.forms.fields.IntegerField object>, 'get_voxel_centroids_res_min': <django.forms.fields.IntegerField object>, 'get_voxel_centroids_search_radius': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_voxel_centroids_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_voxel_centroids_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetVoxelMeshForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_voxel_mesh_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_voxel_mesh_params_surface_base_radial_step': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_params_surface_base_theta_step': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_surface_resolution_scale_factor': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_tetgen_max_radius_edge_ratio': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_tetgen_min_dihedral_angle': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_tetgen_optimization_level': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_params_tetgen_verbosity': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_ref_lat': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_ref_lon': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_res_max': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_res_min': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_search_radius': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_voxel_mesh_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- declared_fields = {'get_voxel_mesh_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_voxel_mesh_params_surface_base_radial_step': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_params_surface_base_theta_step': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_surface_resolution_scale_factor': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_tetgen_max_radius_edge_ratio': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_tetgen_min_dihedral_angle': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_params_tetgen_optimization_level': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_params_tetgen_verbosity': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_ref_lat': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_ref_lon': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_res_max': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_res_min': <django.forms.fields.IntegerField object>, 'get_voxel_mesh_search_radius': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_voxel_mesh_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_voxel_mesh_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_GetVoxelVertsForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'get_voxel_verts_ID': <django.forms.fields.CharField object>, 'get_voxel_verts_height_max': <django.forms.fields.DecimalField object>, 'get_voxel_verts_height_min': <django.forms.fields.DecimalField object>, 'get_voxel_verts_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_voxel_verts_ref_lat': <django.forms.fields.DecimalField object>, 'get_voxel_verts_ref_lon': <django.forms.fields.DecimalField object>, 'get_voxel_verts_res_max': <django.forms.fields.IntegerField object>, 'get_voxel_verts_res_min': <django.forms.fields.IntegerField object>, 'get_voxel_verts_search_radius': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_voxel_verts_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- declared_fields = {'get_voxel_verts_ID': <django.forms.fields.CharField object>, 'get_voxel_verts_height_max': <django.forms.fields.DecimalField object>, 'get_voxel_verts_height_min': <django.forms.fields.DecimalField object>, 'get_voxel_verts_output_format_comboBox': <django.forms.fields.ChoiceField object>, 'get_voxel_verts_ref_lat': <django.forms.fields.DecimalField object>, 'get_voxel_verts_ref_lon': <django.forms.fields.DecimalField object>, 'get_voxel_verts_res_max': <django.forms.fields.IntegerField object>, 'get_voxel_verts_res_min': <django.forms.fields.IntegerField object>, 'get_voxel_verts_search_radius': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_voxel_verts_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_voxel_verts_searchtype_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_MapDataForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'map_data_chunk_size': <django.forms.fields.IntegerField object>, 'map_data_datatype_comboBox': <django.forms.fields.ChoiceField object>, 'map_data_equaliseVoxel_Volumes_checkbox': <django.forms.fields.BooleanField object>, 'map_data_horizontal_scale_factor': <django.forms.fields.DecimalField object>, 'map_data_input_data_file': <django.forms.fields.FileField object>, 'map_data_ref_height': <django.forms.fields.DecimalField object>, 'map_data_ref_lat': <django.forms.fields.DecimalField object>, 'map_data_ref_lon': <django.forms.fields.DecimalField object>, 'map_data_res_max': <django.forms.fields.IntegerField object>, 'map_data_res_min': <django.forms.fields.IntegerField object>, 'map_data_search_radius': <django.forms.fields.DecimalField object>, 'map_data_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'map_data_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'map_data_searchbox_polygon_file': <django.forms.fields.FileField object>, 'map_data_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'map_data_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'map_data_searchtype_comboBox': <django.forms.fields.ChoiceField object>, 'map_data_vertical_scale_factor': <django.forms.fields.DecimalField object>}¶
- declared_fields = {'map_data_chunk_size': <django.forms.fields.IntegerField object>, 'map_data_datatype_comboBox': <django.forms.fields.ChoiceField object>, 'map_data_equaliseVoxel_Volumes_checkbox': <django.forms.fields.BooleanField object>, 'map_data_horizontal_scale_factor': <django.forms.fields.DecimalField object>, 'map_data_input_data_file': <django.forms.fields.FileField object>, 'map_data_ref_height': <django.forms.fields.DecimalField object>, 'map_data_ref_lat': <django.forms.fields.DecimalField object>, 'map_data_ref_lon': <django.forms.fields.DecimalField object>, 'map_data_res_max': <django.forms.fields.IntegerField object>, 'map_data_res_min': <django.forms.fields.IntegerField object>, 'map_data_search_radius': <django.forms.fields.DecimalField object>, 'map_data_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'map_data_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'map_data_searchbox_polygon_file': <django.forms.fields.FileField object>, 'map_data_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'map_data_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'map_data_searchtype_comboBox': <django.forms.fields.ChoiceField object>, 'map_data_vertical_scale_factor': <django.forms.fields.DecimalField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_RegisteredVoxelsQueryForm(*args, min_height=-1, max_height=1, **kwargs)¶
Bases:
Form
- base_fields = {'get_registered_voxels_get_centroids_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_get_edges_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_get_vertices_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_get_voxel_mesh_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_ref_height': <django.forms.fields.DecimalField object>, 'get_registered_voxels_ref_lat': <django.forms.fields.DecimalField object>, 'get_registered_voxels_ref_lon': <django.forms.fields.DecimalField object>, 'get_registered_voxels_res_max': <django.forms.fields.IntegerField object>, 'get_registered_voxels_res_min': <django.forms.fields.IntegerField object>, 'get_registered_voxels_search_height_max': <django.forms.fields.DecimalField object>, 'get_registered_voxels_search_height_min': <django.forms.fields.DecimalField object>, 'get_registered_voxels_search_radius': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_registered_voxels_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchtype_comboBox': <django.forms.fields.ChoiceField object>, 'get_registered_voxels_visualise_response_checkbox': <django.forms.fields.BooleanField object>}¶
- declared_fields = {'get_registered_voxels_get_centroids_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_get_edges_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_get_vertices_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_get_voxel_mesh_checkbox': <django.forms.fields.BooleanField object>, 'get_registered_voxels_ref_height': <django.forms.fields.DecimalField object>, 'get_registered_voxels_ref_lat': <django.forms.fields.DecimalField object>, 'get_registered_voxels_ref_lon': <django.forms.fields.DecimalField object>, 'get_registered_voxels_res_max': <django.forms.fields.IntegerField object>, 'get_registered_voxels_res_min': <django.forms.fields.IntegerField object>, 'get_registered_voxels_search_height_max': <django.forms.fields.DecimalField object>, 'get_registered_voxels_search_height_min': <django.forms.fields.DecimalField object>, 'get_registered_voxels_search_radius': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_br_lat': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_br_lon': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_polygon_file': <django.forms.fields.FileField object>, 'get_registered_voxels_searchbox_tl_lat': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchbox_tl_lon': <django.forms.fields.DecimalField object>, 'get_registered_voxels_searchtype_comboBox': <django.forms.fields.ChoiceField object>, 'get_registered_voxels_visualise_response_checkbox': <django.forms.fields.BooleanField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
- class src.volumetric_dggs.forms.VolumetricTerraNexus_ToolsSelectionForm(*args, **kwargs)¶
Bases:
Form
- base_fields = {'mappingTool_comboBox': <django.forms.fields.ChoiceField object>, 'queryTool_comboBox': <django.forms.fields.ChoiceField object>, 'visualisationTool_comboBox': <django.forms.fields.ChoiceField object>}¶
- declared_fields = {'mappingTool_comboBox': <django.forms.fields.ChoiceField object>, 'queryTool_comboBox': <django.forms.fields.ChoiceField object>, 'visualisationTool_comboBox': <django.forms.fields.ChoiceField object>}¶
- error_css_class = 'error'¶
- property media¶
Return all media required to render the widgets on this form.
- required_css_class = 'required'¶
volumetric_dggs.models module¶
volumetric_dggs.routing module¶
Note
Module Details
Volumetric DGGS Routing Module
This Module handles routing of asynchronous tasks to their corresponding resource. This is similar to the WSGI urls.py file but targeting web services.
Created: 30 June 2020
@author: Dr. Matthew B.J. Purss
volumetric_dggs.tests module¶
volumetric_dggs.urls module¶
Note
Module Details
Volumetric DGGS URL Configuration
The urlpatterns list routes URLs to views for the surface_dggs package. For more information please see: Django Documentation - urls
Created: 7 September 2017
@author: Dr. Matthew B.J. Purss
volumetric_dggs.views module¶
Note
Module Details
Volumetric DGGS “Views” Module
This module prepares the django views necessary to perform all tasks relevant to Volumetric DGGS interactions with TerraNexus.
Created: 7 September 2017
@author: Dr. Matthew B.J. Purss
- src.volumetric_dggs.views.VolumetricDGGS_tools(request)¶
Note
Function Details
TerraNexus Web Application Volumetric DGGS Tools Home page delivered to the url: {TerraNexus_HomePage}/volumetric_dggs/tools
- Parameters:
request (request-object, required) – The html request object.
- src.volumetric_dggs.views.terrain_builder(request)¶
Note
Function Details
TerraNexus Web Application Terrain Builder Resource. This resource allows you to upload a set of 3D points and generate a 3D Mesh that is then mapped to the selected Volumetric DGGS instance.
- Parameters:
request (request-object, required) – The html request object.
- src.volumetric_dggs.views.terrain_builder_callback(task_id, task_result)¶
Note
Function Details callback function that recieves and manages the output from the terrain_builder_task asynchronous Celery Task.
- Parameters:
task_id (str, required) – identifier of the task currently being run.
task_result (JSON, required) – task results in JSON format
- src.volumetric_dggs.views.volumetricDGGS(request)¶
Note
Function Details
TerraNexus Web Application Volumetric DGGS Home page delivered to the url: {TerraNexus_HomePage}/volumetric_dggs
- Parameters:
request (request-object, required) – The html request object.
- src.volumetric_dggs.views.volumetricDGGS_build(request)¶
Note
Function Details
TerraNexus Web Application Volumetric DGGS Build Home page delivered to the url: {TerraNexus_HomePage}/volumetric_dggs/build
- Parameters:
request (request-object, required) – The html request object.
- src.volumetric_dggs.views.volumetricDGGS_build_TerraNexus(request)¶
Note
Function Details
TerraNexus Web Application TerraNexus Volumetric DGGS Build Home page delivered to the url: {TerraNexus_HomePage}/volumetric_dggs/build_TerraNexus
- Parameters:
request (request-object, required) – The html request object.
- src.volumetric_dggs.views.volumetricDGGS_open(request)¶
Note
Function Details TerraNexus Web Application Volumetric DGGS Open Home page delivered to the url: {TerraNexus_HomePage}/volumetric_dggs/open
- Parameters:
request (request-object, required) – The html request object.
- src.volumetric_dggs.views.volumetricDGGS_repair(request)¶
Note
Function Details TerraNexus Web Application Volumetric DGGS Repair Home page delivered to the url: {TerraNexus_HomePage}/volumetric_dggs/repair
- Parameters:
request (request-object, required) – The html request object.
volumetric_dggs.views tasks¶
- src.volumetric_dggs.views.map_data_task(dggs_store, input_dataset_path, data_type='model', search_type='All_voxels', search_box=[], search_radius=1.0, ref_location=[], res_min=0, res_max=1, horizontal_scale_factor=10000, vertical_scale_factor=10000, chunk_size=100, equalise_voxels_flag=True)¶
Note
Function Details
Celery Task to Map Feature Data in parallel.
- Parameters:
dggs_store (str, required) – MongoDB database to store the dggs structure in. This is automatically generated to ensure the dggrsID is unique.
input_dataset_path (str, required) – Path to the data files being mapped.
data_type (str, optional, default="model") – Data type of the data to be mapped to the Surface DGGS.
search_type (str, optional, default="All_cells") – The Search Type to apply.
ref_location (array-like, optional, default=[]) – The Reference Location to search for zones using the “Range_Search” method.
res_min (int, optional, default=0) – The minimum DGGS resolution to search for zones that are within the search_box.
res_max (int, optional, default=1) – The maximum DGGS resolution to search for zones that are within the search_box.
horizontal_scale_factor (int, optional, default=10000) – Horizontal Scale Factor to apply to a Mesh object to bring it into real-world context.
vertical_scale_factor (int, optional, default=10000) – Vertical Scale Factor to apply to a Mesh object to bring it into real-world context.
chunk_size (int, optional, default=10000) – Chunk size to use to throttle the process to ensure it does not exceed the hardware memory resource capacity.
equalise_voxels_flag (boolean, optional, default=True) – Flag to select whether, or not, to equalise the volume of Volumetric DGGS Zones.
- Returns:
task_output – JSON compatible dictionary object is returned via the consumers “response_message” function.
- Return type:
JSON
- src.volumetric_dggs.views.terrain_builder_task(dggs_store='', mongodbname='', input_dataset='', res_min=0, res_max=1, ref_lon=0.0, ref_lat=0.0, ref_height=0.0, horizontal_scale_factor=10000, vertical_scale_factor=10000, chunk_size=100)¶
Note
Function Details
Celery Task to build a mesh terrain from a given set of 3D point locations.
- Parameters:
dggs_store (str, optional, default="model") – MongoDB database to store the dggs structure in. This is automatically generated to ensure the dggrsID is unique.
mongodbname (str, optional, default="model") – MongoDB database to store the dggs structure in. This is automatically generated to ensure the dggrsID is unique.
input_dataset_path (str, optional, default="model") – Path to the data files being mapped.
res_min (int, optional, default=0) – The minimum DGGS resolution to search for zones that are within the search_box.
res_max (int, optional, default=1) – The maximum DGGS resolution to search for zones that are within the search_box.
ref_lon (float, optional, default=0.0) – The Reference Longitude to fix and orient the terrain mesh to.
ref_lat (float, optional, default=0.0) – The Reference Latitude to fix and orient the terrain mesh to.
ref_height (float, optional, default=0.0) – The Reference ellipsoidal height to fix and orient the terrain mesh to.
horizontal_scale_factor (int, optional, default=10000) – Horizontal Scale Factor to apply to a Mesh object to bring it into real-world context.
vertical_scale_factor (int, optional, default=10000) – Vertical Scale Factor to apply to a Mesh object to bring it into real-world context.
chunk_size (int, optional, default=10000) – Chunk size to use to throttle the process to ensure it does not exceed the hardware memory resource capacity.
- Returns:
task_output – JSON compatible dictionary object is returned via the consumers “response_message” function.
- Return type:
JSON
- src.volumetric_dggs.views.get_mapped_data_task(dggs_store, mapped_data_files, search_type='All_data', ref_location=[], search_box=[], search_radius=1.0, res_min=0, res_max=1, mesh_params={}, output_type='data_points', output_format='json', chunk_size=10000)¶
Note
Function Details
Celery Task to Get DGGS Mapped Data from the Database in parallel.
- Parameters:
dggs_store (str, required) – MongoDB database to store the dggs structure in. This is automatically generated to ensure the dggrsID is unique.
mapped_data_files (str, required) – Path to the data files being mapped.
search_type (str, optional, default="All_cells") – The Search Type to apply.
ref_location (array-like, optional, default=[]) – The Reference Location to search for zones using the “Range_Search” method.
search_box (array-like, optional, default=[]) – The search box to use to conduct the search for DGGS zones.
search_radius (float, optional, default=1.0) – The minimum Search Radius to from a Reference Location to search for zones using the “Range_Search” method.
res_min (int, optional, default=0) – The minimum DGGS resolution to search for zones that are within the search_box.
res_max (int, optional, default=1) – The maximum DGGS resolution to search for zones that are within the search_box.
mesh_params (JSON, optional, default="{}") – JSON/Dictionary object with 3D Mesh parameters to generate a mesh using PyMesh
output_type (str, optional, default="data_points") – Output data type.
output_format (str, optional, default="json") – Output data format.
chunk_size (int, optional, default=10000) – Chunk size to use to throttle the process to ensure it does not exceed the hardware memory resource capacity.
- Returns:
task_output – JSON compatible dictionary object is returned via the consumers “response_message” function.
- Return type:
JSON
- src.volumetric_dggs.views.get_registered_voxels_task(dggs_store, search_type='All_voxels', search_box=[], search_radius=1.0, ref_location=[], res_min=0, res_max=1, height_min=-1, height_max=1, dggs_tool='')¶
Note
Celery Task to Retrieve Surface DGGS Registered Zones from the Database in parallel.
- Parameters:
dggs_store (str, required) – MongoDB database to store the dggs structure in. This is automatically generated to ensure the dggrsID is unique.
search_type (str, optional, default="All_cells") – The Search Type to apply.
search_box (array-like, optional, default=[]) – The search box to use to conduct the search for DGGS zones.
search_radius (float, optional, default=1.0) – The minimum Search Radius to from a Reference Location to search for zones using the “Range_Search” method.
ref_location (array-like, optional, default=[]) – The Reference Location to search for zones using the “Range_Search” method.
res_min (int, optional, default=0) – The minimum DGGS resolution to search for zones that are within the search_box.
res_max (int, optional, default=1) – The maximum DGGS resolution to search for zones that are within the search_box.
height_min (float, optional, default=-1) – The minimum ellipsoidal height to search over in metres.
height_max (float, optional, default=1) – The maximum ellipsoidal height to search over in metres.
- Returns:
task_output – JSON compatible dictionary object is returned via the consumers “response_message” function.
- Return type:
JSON
- src.volumetric_dggs.views.find_voxels_task(user_details_dict, dggs_store, search_box=[], res_min=0, res_max=1, height_min=-1.0, height_max=1.0, ref_location=[], search_radius=0.0, search_type='res', chunk_size=100, get_all_voxels=False, construct_voxels=True, equalise_voxels=True)¶
Note
Function Details
Celery Task to Find Surface DGGS Zones in parallel.
- Parameters:
user_details_dict (JSON, required) – User details - for response email notification.
dggs_store (str, required) – MongoDB database to store the dggs structure in. This is automatically generated to ensure the dggrsID is unique.
search_box (array-like, required) – The search box to use to conduct the search for DGGS zones.
res_min (int, optional, default=0) – The minimum DGGS resolution to search for zones that are within the search_box.
res_max (int, optional, default=1) – The maximum DGGS resolution to search for zones that are within the search_box.
height_min (float, optional, default=-1) – The minimum ellipsoidal height to search over in metres.
height_max (float, optional, default=1) – The maximum ellipsoidal height to search over in metres.
ref_location (array-like, optional, default=[]) – The Reference Location to search for zones using the “Range_Search” method.
search_radius (float, optional, default=1.0) – The minimum Search Radius to from a Reference Location to search for zones using the “Range_Search” method.
search_type (str, optional, default="search_box") – The Search Type to apply.
chunk_size (int, optional, default=10000) – Chunk size to use to throttle the process to ensure it does not exceed the hardware memory resource capacity.
get_all_voxels (boolean, optional, default=False) – A Flag to select whether or not to construct DGGS zones once they have been found.
construct_voxels (boolean, optional, default=True) – A Flag to select whether or not to construct DGGS zones once they have been found.
equalise_voxels (boolean, optional, default=True) –
A Flag to select whether or not to equalise the surface area of the Volumetric DGGS zones once they have been found.
Note
if this flag is set to False, then the Surface DGGS will have a varying zone area uncertainty of between ~1% and ~15% across the whole earth surface.
Choosing to not “equalise” DGGS zone areas will provide a performance boost for the Surface DGGS instance during zone construction operations, but at the cost of increased analysis uncertainty in terms of the surface area a given DGGS zone occupies.
For some applications and use case scenarios this is not important. For others it is.
- Returns:
task_output – JSON compatible dictionary object is returned via the consumers “response_message” function.
- Return type:
JSON