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)