summaryrefslogtreecommitdiff
path: root/base_geoengine/geo_view/geo_raster_layer.py
diff options
context:
space:
mode:
Diffstat (limited to 'base_geoengine/geo_view/geo_raster_layer.py')
-rw-r--r--base_geoengine/geo_view/geo_raster_layer.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/base_geoengine/geo_view/geo_raster_layer.py b/base_geoengine/geo_view/geo_raster_layer.py
new file mode 100644
index 0000000..c990b6a
--- /dev/null
+++ b/base_geoengine/geo_view/geo_raster_layer.py
@@ -0,0 +1,78 @@
+# Copyright 2011-2012 Nicolas Bessi (Camptocamp SA)
+# Copyright 2016 Yannick Vaucher (Camptocamp SA)
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from odoo import api, fields, models
+
+
+class GeoRasterLayerType(models.Model):
+ _name = "geoengine.raster.layer.type"
+ _description = "Raster Layer Type"
+
+ name = fields.Char(translate=True, required=True)
+ code = fields.Char(required=True)
+ service = fields.Char(required=True)
+
+
+class GeoRasterLayer(models.Model):
+ _name = "geoengine.raster.layer"
+ _description = "Raster Layer"
+
+ raster_type = fields.Selection(
+ [
+ ("osm", "OpenStreetMap"),
+ ("wmts", "WMTS"),
+ ("d_wms", "Distant WMS"),
+ ("odoo", "Odoo field"),
+ ],
+ string="Raster layer type",
+ default="osm",
+ required=True,
+ )
+ name = fields.Char("Layer Name", size=256, translate=True, required=True)
+ url = fields.Char("Service URL", size=1024)
+
+ # technical field to display or not wmts options
+ is_wmts = fields.Boolean(compute="_compute_is_wmts")
+ # wmts options
+ matrix_set = fields.Char("matrixSet")
+ format_suffix = fields.Char("formatSuffix", help="eg. png")
+ request_encoding = fields.Char("requestEncoding", help="eg. REST")
+ projection = fields.Char("projection", help="eg. EPSG:21781")
+ units = fields.Char(help="eg. m")
+ resolutions = fields.Char("resolutions")
+ max_extent = fields.Char("max_extent")
+ dimensions = fields.Char("dimensions", help="List of dimensions separated by ','")
+ params = fields.Char("params", help="Dictiorary of values for dimensions as JSON")
+
+ # technical field to display or not layer type
+ has_type = fields.Boolean(compute="_compute_has_type")
+ type_id = fields.Many2one(
+ "geoengine.raster.layer.type", "Layer", domain="[('service', '=', raster_type)]"
+ )
+ type = fields.Char(related="type_id.code")
+ sequence = fields.Integer("layer priority lower on top", default=6)
+ overlay = fields.Boolean("Is overlay layer?")
+ field_id = fields.Many2one(
+ "ir.model.fields",
+ "Odoo layer field to use",
+ domain=[("ttype", "ilike", "geo_"), ("model", "=", "view_id.model")],
+ )
+ view_id = fields.Many2one(
+ "ir.ui.view", "Related View", domain=[("type", "=", "geoengine")], required=True
+ )
+ use_to_edit = fields.Boolean("Use to edit")
+
+ @api.depends("raster_type", "is_wmts")
+ def _compute_has_type(self):
+ for rec in self:
+ rec.has_type = rec.raster_type == "is_wmts"
+
+ @api.depends("raster_type")
+ def _compute_is_wmts(self):
+ for rec in self:
+ rec.is_wmts = rec.raster_type == "wmts"
+
+ @api.onchange("raster_type")
+ def onchange_set_wmts_options(self):
+ """ Abstract method for WMTS modules to set default options """
+ pass