view backend/contrib/shpimporter/floodmarks.py @ 9790:75dc4ea60938 3.2.x

Drop using explicit container names Compose will generate names for the containers and containers can connect each other on the network via the service names. This avoids the unnecessary extra "name space" and prepares the application for usage with different project names.
author Tom Gottfried <tom@intevation.de>
date Thu, 20 Jul 2023 10:25:59 +0200
parents 90ba3ae2ced1
children
line wrap: on
line source
# -*- coding: utf-8 -*-
try:
    from osgeo import ogr
except ImportError:
    import ogr

from importer import Importer
import logging
import os
import re

TABLE_NAME="flood_marks"
PATH="Hydrologie/HW-Marken"
NAME="Floodmarks"

logger = logging.getLogger(NAME)

class Floodmark(Importer):
    fieldmap = {
            "^station$"       : "km",
            "^km$"            : "km",
            "^wsv-km$"        : "km",
            "^FlussKm$"       : "km",
            "^z$"             : "z",
            "^z\d*"           : "z", # z02, z1890, usw.
            "^m+NHN$"         : "z",
            "^Ort$"           : "location",
            "^Pegel$"         : "location",
        }

    def getPath(self, base):
        return "%s/%s" % (base, PATH)

    def getTablename(self):
        return TABLE_NAME

    def getName(self):
        return NAME

    def isGeometryValid(self, geomType):
        return geomType == ogr.wkbPoint

    def isShapeRelevant(self, name, path):
        return "hw-marken" in name.lower()

    def createNewFeature(self, featureDef, feat, **args):
        newFeat  = ogr.Feature(featureDef)
        geometry = feat.GetGeometryRef()
        geometry.SetCoordinateDimension(2)
        newFeat.SetGeometry(geometry)

        self.copyFields(feat, newFeat, self.fieldmap)

        newFeat.SetField("river_id", self.river_id)

        filename = os.path.basename(args['path'])

        # Try to extract the year from the filename
        match = re.search(r"([_\-])(\d\d\d\d)([_\-])", filename)
        if match:
            year = match.groups()[1]
            year = int(year)
            newFeat.SetField("year", year)
        else:
            logger.warn(u"Could not extract year from filename: %s " % filename)

        return newFeat

http://dive4elements.wald.intevation.org