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: BUILDING_KINDS= { aheinecke@5545: "sonstige" : 0, aheinecke@5545: "brücken" : 1, aheinecke@5545: "wehre" : 2, aheinecke@5545: "pegel" : 3, aheinecke@5545: } 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: