aheinecke@5545: # -*- coding: utf-8 -*-
aheinecke@5545: try:
aheinecke@5545:     from osgeo import ogr
aheinecke@5545: except ImportError:
aheinecke@5545:     import ogr
aheinecke@5545: 
aheinecke@5545: from importer import Importer
aheinecke@5545: import logging
aheinecke@5545: import os
aheinecke@5545: import re
aheinecke@5545: 
aheinecke@5545: TABLE_NAME="flood_marks"
aheinecke@5545: PATH="Hydrologie/HW-Marken"
aheinecke@5545: NAME="Floodmarks"
aheinecke@5545: 
aheinecke@5545: logger = logging.getLogger(NAME)
aheinecke@5545: 
aheinecke@5545: class Floodmark(Importer):
aheinecke@5545:     fieldmap = {
aheinecke@5545:             "^station$"       : "km",
aheinecke@5545:             "^km$"            : "km",
aheinecke@5545:             "^wsv-km$"        : "km",
aheinecke@5545:             "^FlussKm$"       : "km",
aheinecke@5545:             "^z$"             : "z",
aheinecke@5545:             "^z\d*"           : "z", # z02, z1890, usw.
aheinecke@5545:             "^m+NHN$"         : "z",
aheinecke@5545:             "^Ort$"           : "location",
aheinecke@5545:             "^Pegel$"         : "location",
aheinecke@5545:         }
aheinecke@5545: 
aheinecke@5545:     def getPath(self, base):
aheinecke@5545:         return "%s/%s" % (base, PATH)
aheinecke@5545: 
aheinecke@5545:     def getTablename(self):
aheinecke@5545:         return TABLE_NAME
aheinecke@5545: 
aheinecke@5545:     def getName(self):
aheinecke@5545:         return NAME
aheinecke@5545: 
aheinecke@5545:     def isGeometryValid(self, geomType):
aheinecke@5545:         return geomType == ogr.wkbPoint
aheinecke@5545: 
aheinecke@5545:     def isShapeRelevant(self, name, path):
aheinecke@5545:         return "hw-marken" in name.lower()
aheinecke@5545: 
aheinecke@5545:     def createNewFeature(self, featureDef, feat, **args):
aheinecke@5545:         newFeat  = ogr.Feature(featureDef)
aheinecke@5545:         geometry = feat.GetGeometryRef()
aheinecke@5545:         geometry.SetCoordinateDimension(2)
aheinecke@5545:         newFeat.SetGeometry(geometry)
aheinecke@5545: 
aheinecke@5545:         self.copyFields(feat, newFeat, self.fieldmap)
aheinecke@5545: 
aheinecke@5545:         newFeat.SetField("river_id", self.river_id)
aheinecke@5545: 
aheinecke@5545:         filename = os.path.basename(args['path'])
aheinecke@5545: 
aheinecke@5545:         # Try to extract the year from the filename
aheinecke@5545:         match = re.search(r"([_\-])(\d\d\d\d)([_\-])", filename)
aheinecke@5545:         if match:
aheinecke@5545:             year = match.groups()[1]
aheinecke@5545:             year = int(year)
aheinecke@5545:             newFeat.SetField("year", year)
aheinecke@5545:         else:
aheinecke@5545:             logger.warn(u"Could not extract year from filename: %s " % filename)
aheinecke@5545: 
aheinecke@5545:         return newFeat
aheinecke@5545: