view flys-backend/contrib/shpimporter/floodmarks.py @ 5645:696d710470f5

flys/issue1077: Show loads as step line, therefore transform data in SedimentLoadFacet to stretch as in the measurement stations bounds. Deal with this new kind of data in the Generator.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 10 Apr 2013 09:35:07 +0200
parents ed149d5d7fb7
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)

BUILDING_KINDS= {
        "sonstige" : 0,
        "brücken"  : 1,
        "wehre"    : 2,
        "pegel"    : 3,
        }

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