diff flys-backend/contrib/shpimporter/floodmarks.py @ 5545:ed149d5d7fb7

Add floodmarks importer
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 03 Apr 2013 16:33:28 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flys-backend/contrib/shpimporter/floodmarks.py	Wed Apr 03 16:33:28 2013 +0200
@@ -0,0 +1,75 @@
+# -*- 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