diff flys-backend/contrib/shpimporter/boundaries.py @ 4952:5a0225ddae2b dami

Importer: Add sectie and strover to boundaries and select more files for import
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 01 Feb 2013 10:38:26 +0100
parents 59ca5dab2782
children f1c01fecf194
line wrap: on
line diff
--- a/flys-backend/contrib/shpimporter/boundaries.py	Fri Feb 01 09:12:33 2013 +0100
+++ b/flys-backend/contrib/shpimporter/boundaries.py	Fri Feb 01 10:38:26 2013 +0100
@@ -4,7 +4,7 @@
 
 TABLE_NAME="hydr_boundaries"
 TABLE_NAME_POLY="hydr_boundaries_poly"
-PATH="Hydrologie/Hydr.Grenzen/Linien"
+PATH="Hydrologie/Hydr.Grenzen"
 NAME="Hydr. Boundaries"
 
 
@@ -13,29 +13,74 @@
     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 == 2
-
+        return geomType == ogr.wkbLineString
 
     def isShapeRelevant(self, name, path):
-        return True
-
+        shp = ogr.Open(path)
+        if self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) and \
+                self.getKind(path) > 0:
+            return True
+        else:
+            return False
 
     def getKind(self, path):
-        if path.find("BfG") > 0:
+        if "linien/bfg" in path.lower():
             return 1
+        elif "linien/land" in path.lower():
+            return 2
+        elif "/sonstige/" in path.lower():
+            return 3
         else:
-            return 2
+            return 0
 
+    def createNewFeature(self, featureDef, feat, **args):
+        kind  = self.getKind(args['path'])
+
+        newFeat  = ogr.Feature(featureDef)
+        geometry = feat.GetGeometryRef()
+        geometry.SetCoordinateDimension(2)
+
+        newFeat.SetGeometry(geometry)
+        newFeat.SetField("name", args['name'])
+        newFeat.SetField("kind", kind)
+        if self.IsFieldSet(feat, "SECTIE"):
+            newFeat.SetField("sectie", feat.GetField("SECTIE"))
+
+        if self.IsFieldSet(feat, "SOBEK"):
+            newFeat.SetField("sobek", feat.GetField("SOBEK"))
+
+        if self.IsFieldSet(feat, "river_id"):
+            newFeat.SetField("river_id", feat.GetField("river_id"))
+        else:
+            newFeat.SetField("river_id", self.river_id)
+
+        return newFeat
+
+class HydrBoundaryPoly(HydrBoundary):
+
+    def getTablename(self):
+        return TABLE_NAME_POLY
+
+    def getName(self):
+        return "%s (Polygons)" % NAME
+
+    def isGeometryValid(self, geomType):
+        return geomType == ogr.wkbPolygon or geomType == ogr.wkbMultiPolygon
+
+    def isShapeRelevant(self, name, path):
+        shp = ogr.Open(path)
+        if self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) and \
+                self.getKind(path) > 0:
+            return True
+        else:
+            return False
 
     def createNewFeature(self, featureDef, feat, **args):
         kind  = self.getKind(args['path'])
@@ -48,39 +93,12 @@
         newFeat.SetField("name", args['name'])
         newFeat.SetField("kind", kind)
 
-        if self.IsFieldSet(feat, "river_id"):
-            newFeat.SetField("river_id", feat.GetField("river_id"))
-        else:
-            newFeat.SetField("river_id", self.river_id)
-
-        return newFeat
-
-
-
-class HydrBoundaryPoly(HydrBoundary):
-
-    def getTablename(self):
-        return TABLE_NAME_POLY
-
+        if self.IsFieldSet(feat, "SECTIE"):
+            newFeat.SetField("sectie", feat.GetField("SECTIE"))
 
-    def getName(self):
-        return "%s (Polygons)" % NAME
-
-
-    def isGeometryValid(self, geomType):
-        return geomType == 3 or geomType == 6
-
+        if self.IsFieldSet(feat, "SOBEK"):
+            newFeat.SetField("sobek", feat.GetField("SOBEK"))
 
-    def createNewFeature(self, featureDef, feat, **args):
-        kind  = self.getKind(args['path'])
-
-        newFeat  = ogr.Feature(featureDef)
-        geometry = feat.GetGeometryRef()
-        geometry.SetCoordinateDimension(2)
-
-        newFeat.SetGeometry(geometry)
-        newFeat.SetField("name", args['name'])
-        newFeat.SetField("kind", kind)
 
         if self.IsFieldSet(feat, "river_id"):
             newFeat.SetField("river_id", feat.GetField("river_id"))

http://dive4elements.wald.intevation.org