geonode.geoserver.helpers
=========================
.. py:module:: geonode.geoserver.helpers
Attributes
----------
.. autoapisummary::
geonode.geoserver.helpers.logger
geonode.geoserver.helpers.temp_style_name_regex
geonode.geoserver.helpers.LAYER_SUBTYPES
geonode.geoserver.helpers.WPS_ACCEPTABLE_FORMATS
geonode.geoserver.helpers.DEFAULT_STYLE_NAME
geonode.geoserver.helpers.msg
geonode.geoserver.helpers._raster_template
geonode.geoserver.helpers._polygon_template
geonode.geoserver.helpers._line_template
geonode.geoserver.helpers._point_template
geonode.geoserver.helpers._style_templates
geonode.geoserver.helpers.STYLES_VERSION
geonode.geoserver.helpers.GEOSERVER_LAYER_TYPES
geonode.geoserver.helpers.ogc_server_settings
geonode.geoserver.helpers._wms
geonode.geoserver.helpers._csw
geonode.geoserver.helpers.url
geonode.geoserver.helpers.gs_catalog
geonode.geoserver.helpers.gs_uploader
geonode.geoserver.helpers.acl
geonode.geoserver.helpers.acl_utils
geonode.geoserver.helpers._punc
geonode.geoserver.helpers._foregrounds
geonode.geoserver.helpers._backgrounds
geonode.geoserver.helpers._marks
geonode.geoserver.helpers._style_contexts
geonode.geoserver.helpers._default_style_names
geonode.geoserver.helpers._esri_types
Classes
-------
.. autoapisummary::
geonode.geoserver.helpers.SpatialFilesLayerType
Functions
---------
.. autoapisummary::
geonode.geoserver.helpers.check_geoserver_is_up
geonode.geoserver.helpers._add_sld_boilerplate
geonode.geoserver.helpers._extract_style_version_from_sld
geonode.geoserver.helpers._style_name
geonode.geoserver.helpers.extract_name_from_sld
geonode.geoserver.helpers.get_sld_for
geonode.geoserver.helpers.set_dataset_style
geonode.geoserver.helpers.cascading_delete
geonode.geoserver.helpers.delete_from_postgis
geonode.geoserver.helpers.gs_slurp
geonode.geoserver.helpers.get_stores
geonode.geoserver.helpers.set_attributes
geonode.geoserver.helpers.set_attributes_from_geoserver
geonode.geoserver.helpers.get_dataset
geonode.geoserver.helpers.clean_styles
geonode.geoserver.helpers.set_styles
geonode.geoserver.helpers.save_style
geonode.geoserver.helpers.is_dataset_attribute_aggregable
geonode.geoserver.helpers.get_attribute_statistics
geonode.geoserver.helpers.get_wcs_record
geonode.geoserver.helpers.get_coverage_grid_extent
geonode.geoserver.helpers.cleanup
geonode.geoserver.helpers.create_geoserver_db_featurestore
geonode.geoserver.helpers._create_featurestore
geonode.geoserver.helpers._create_coveragestore
geonode.geoserver.helpers._create_db_featurestore
geonode.geoserver.helpers.get_store
geonode.geoserver.helpers.fetch_gs_resource
geonode.geoserver.helpers.wps_execute_dataset_attribute_statistics
geonode.geoserver.helpers._stylefilterparams_geowebcache_dataset
geonode.geoserver.helpers._invalidate_geowebcache_dataset
geonode.geoserver.helpers.style_update
geonode.geoserver.helpers.set_time_info
geonode.geoserver.helpers.get_time_info
geonode.geoserver.helpers._create_acl_client
geonode.geoserver.helpers._dump_image_spec
geonode.geoserver.helpers.mosaic_delete_first_granule
geonode.geoserver.helpers.set_time_dimension
geonode.geoserver.helpers.create_gs_thumbnail
geonode.geoserver.helpers.sync_instance_with_geoserver
geonode.geoserver.helpers.get_dataset_storetype
geonode.geoserver.helpers.write_uploaded_files_to_disk
geonode.geoserver.helpers.select_relevant_files
geonode.geoserver.helpers.get_spatial_files_dataset_type
geonode.geoserver.helpers.get_dataset_type
geonode.geoserver.helpers.get_dataset_capabilities_url
geonode.geoserver.helpers.get_layer_ows_url
geonode.geoserver.helpers.wps_format_is_supported
geonode.geoserver.helpers.ows_endpoint_in_path
Module Contents
---------------
.. py:data:: logger
.. py:data:: temp_style_name_regex
:value: '[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}_ms_.*'
.. py:data:: LAYER_SUBTYPES
.. py:data:: WPS_ACCEPTABLE_FORMATS
:value: [('application/json', 'vector'), ('application/arcgrid', 'raster'), ('image/tiff', 'raster'),...
.. py:data:: DEFAULT_STYLE_NAME
:value: ['generic', 'line', 'point', 'polygon', 'raster']
.. py:data:: msg
:value: 'Please configure OGC_SERVER when enabling geonode.geoserver. More info can be found at...
.. py:function:: check_geoserver_is_up()
Verifies all geoserver is running,
this is needed to be able to upload.
.. py:function:: _add_sld_boilerplate(symbolizer)
Wrap an XML snippet representing a single symbolizer in the appropriate
elements to make it a valid SLD which applies that symbolizer to all features,
including format strings to allow interpolating a "name" variable in.
.. py:data:: _raster_template
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
1.0
"""
.. raw:: html
.. py:data:: _polygon_template
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
%(bg)s
%(fg)s
0.7
"""
.. raw:: html
.. py:data:: _line_template
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
%(bg)s
3
%(fg)s
"""
.. raw:: html
.. py:data:: _point_template
:value: Multiline-String
.. raw:: html
Show Value
.. code-block:: python
"""
%(mark)s
%(bg)s
%(fg)s
10
"""
.. raw:: html
.. py:data:: _style_templates
.. py:data:: STYLES_VERSION
.. py:function:: _extract_style_version_from_sld(sld)
Assume: SLD as a byte
.. py:function:: _style_name(resource)
.. py:function:: extract_name_from_sld(gs_catalog, sld, sld_file=None)
.. py:function:: get_sld_for(gs_catalog, layer)
.. py:function:: set_dataset_style(saved_dataset, title, sld, base_file=None)
.. py:function:: cascading_delete(dataset_name=None, catalog=None)
.. py:function:: delete_from_postgis(dataset_name, store)
Delete a table from PostGIS (because Geoserver won't do it yet);
to be used after deleting a layer from the system.
.. py:function:: gs_slurp(ignore_errors=False, verbosity=1, console=None, owner=None, workspace=None, store=None, filter=None, skip_unadvertised=False, skip_geonode_registered=False, remove_deleted=False, permissions=None, execute_signals=False)
Configure the layers available in GeoServer in GeoNode.
It returns a list of dictionaries with the name of the layer,
the result of the operation and the errors and traceback if it failed.
.. py:function:: get_stores(store_type=None)
.. py:function:: set_attributes(layer, attribute_map, overwrite=False, attribute_stats=None)
Parameters:
- *layer*: A `geonode.layers.models.Dataset` instance representing the dataset layer.
- *attribute_map*: A list of 2-item lists specifying attribute names and types.
Example:
.. code-block:: python
attribute_map = [
['id', 'Integer'],
['name', 'String'],
['created_at', 'Date']
]
- *overwrite*: Boolean flag to replace existing attributes with new values if their name/type matches.
- *attribute_stats*: A dictionary containing return values from `get_attribute_statistics()`.
Structure:
.. code-block:: python
attribute_stats = {
"": {
"":
}
}
Use `attribute_stats[][]` to access specific values.
.. py:function:: set_attributes_from_geoserver(layer, overwrite=False)
Retrieve layer attribute names & types from Geoserver,
then store in GeoNode database using Attribute model
.. py:function:: get_dataset(layer, gs_catalog: geoserver.catalog.Catalog)
.. py:function:: clean_styles(layer, gs_catalog: geoserver.catalog.Catalog)
.. py:function:: set_styles(layer, gs_catalog: geoserver.catalog.Catalog)
.. py:function:: save_style(gs_style, layer)
.. py:function:: is_dataset_attribute_aggregable(store_type, field_name, field_type)
Decipher whether layer attribute is suitable for statistical derivation
.. py:function:: get_attribute_statistics(dataset_name, field)
Generate statistics (range, mean, median, standard deviation, unique values)
for layer attribute
.. py:function:: get_wcs_record(instance, retry=True)
.. py:function:: get_coverage_grid_extent(instance)
Returns a list of integers with the size of the coverage
extent in pixels
.. py:data:: GEOSERVER_LAYER_TYPES
.. py:function:: cleanup(name, uuid)
Deletes GeoServer and Catalogue records for a given name.
Useful to clean the mess when something goes terribly wrong.
It also verifies if the Django record existed, in which case
it performs no action.
.. py:function:: create_geoserver_db_featurestore(store_type=None, store_name=None, author_name='admin', author_email='admin@geonode.org', charset='UTF-8', workspace=None)
.. py:function:: _create_featurestore(name, data, overwrite=False, charset='UTF-8', workspace=None)
.. py:function:: _create_coveragestore(name, data, overwrite=False, charset='UTF-8', workspace=None)
.. py:function:: _create_db_featurestore(name, data, overwrite=False, charset='UTF-8', workspace=None)
Create a database store then use it to import a shapefile.
If the import into the database fails then delete the store
(and delete the PostGIS table for it).
.. py:function:: get_store(cat, name, workspace=None)
.. py:function:: fetch_gs_resource(instance, values, tries)
.. py:function:: wps_execute_dataset_attribute_statistics(dataset_name, field)
Derive aggregate statistics from WPS endpoint
.. py:function:: _stylefilterparams_geowebcache_dataset(dataset_name)
.. py:function:: _invalidate_geowebcache_dataset(dataset_name, url=None)
.. py:function:: style_update(request, url, workspace=None)
Sync style stuff from GS to GN.
Ideally we should call this from a view straight from GXP, and we should use
gsConfig, that at this time does not support styles updates. Before gsConfig
is updated, for now we need to parse xml.
In case of a DELETE, we need to query request.path to get the style name,
and then remove it.
In case of a POST or PUT, we need to parse the xml from
request.body, which is in this format:
.. py:function:: set_time_info(layer, attribute, end_attribute, presentation, precision_value, precision_step, enabled=True)
Configure the time dimension for a layer.
:param layer: the layer to configure
:param attribute: the attribute used to represent the instant or period
start
:param end_attribute: the optional attribute used to represent the end
period
:param presentation: either 'LIST', 'DISCRETE_INTERVAL', or
'CONTINUOUS_INTERVAL'
:param precision_value: number representing number of steps
:param precision_step: one of 'seconds', 'minutes', 'hours', 'days',
'months', 'years'
:param enabled: defaults to True
.. py:function:: get_time_info(layer)
Get the configured time dimension metadata for the layer as a dict.
The keys of the dict will be those of the parameters of `set_time_info`.
:returns: dict of values or None if not configured
.. py:data:: ogc_server_settings
.. py:data:: _wms
:value: None
.. py:data:: _csw
:value: None
.. py:data:: url
.. py:data:: gs_catalog
.. py:data:: gs_uploader
.. py:function:: _create_acl_client()
.. py:data:: acl
.. py:data:: acl_utils
.. py:data:: _punc
.. py:data:: _foregrounds
:value: ['#ffbbbb', '#bbffbb', '#bbbbff', '#ffffbb', '#bbffff', '#ffbbff']
.. py:data:: _backgrounds
:value: ['#880000', '#008800', '#000088', '#888800', '#008888', '#880088']
.. py:data:: _marks
:value: ['square', 'circle', 'cross', 'x', 'triangle']
.. py:data:: _style_contexts
.. py:data:: _default_style_names
:value: ['point', 'line', 'polygon', 'raster']
.. py:data:: _esri_types
.. py:function:: _dump_image_spec(request_body, image_spec)
.. py:function:: mosaic_delete_first_granule(cat, layer)
.. py:function:: set_time_dimension(cat, name, workspace, time_presentation, time_presentation_res, time_presentation_default_value, time_presentation_reference_value)
.. py:function:: create_gs_thumbnail(instance, overwrite=False, check_bbox=False)
.. py:function:: sync_instance_with_geoserver(instance_id, *args, **kwargs)
Synchronizes the Django Instance with GeoServer layers.
.. py:function:: get_dataset_storetype(element)
.. py:function:: write_uploaded_files_to_disk(target_dir, files)
.. py:function:: select_relevant_files(allowed_extensions, files)
Filter the input files list for relevant files only
Relevant files are those whose extension is in the ``allowed_extensions``
iterable.
:param allowed_extensions: list of strings with the extensions to keep
:param files: list of django files with the files to be filtered
.. py:class:: SpatialFilesLayerType
.. py:attribute:: base_file
:type: str
.. py:attribute:: scan_hint
:type: str
.. py:attribute:: spatial_files
:type: List
.. py:attribute:: dataset_type
:type: Optional[str]
:value: None
.. py:function:: get_spatial_files_dataset_type(allowed_extensions, files, charset='UTF-8') -> SpatialFilesLayerType
Reutnrs 'vector' or 'raster' whether a file from the allowed extensins has been identified.
.. py:function:: get_dataset_type(spatial_files)
Returns 'FeatureType.resource_type' or 'Coverage.resource_type' accordingly to the provided SpatialFiles
.. py:function:: get_dataset_capabilities_url(layer, version='1.3.0', access_token=None)
Generate the layer-specific GetCapabilities URL
.. py:function:: get_layer_ows_url(layer, access_token=None)
Generate the layer-specific GetCapabilities URL
.. py:function:: wps_format_is_supported(_format, dataset_type)
.. py:function:: ows_endpoint_in_path(path)