[Dive4elements-commits] [PATCH 1 of 3] Importer: Add sectie and strover to boundaries and select more
Wald Commits
scm-commit at wald.intevation.org
Fri Feb 1 10:43:29 CET 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1359711506 -3600
# Branch dami
# Node ID 5a0225ddae2b93c4cf1c7ed5935d2d6a70782f86
# Parent 23a090b41543070e369e7881e0c950f5ce5d228c
Importer: Add sectie and strover to boundaries and select more
files for import
diff -r 23a090b41543 -r 5a0225ddae2b flys-backend/contrib/shpimporter/boundaries.py
--- 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 == ogr.wkbLineString
+
+ 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 getKind(self, path):
+ 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 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 == 2
-
+ return geomType == ogr.wkbPolygon or geomType == ogr.wkbMultiPolygon
def isShapeRelevant(self, name, path):
- return True
-
-
- def getKind(self, path):
- if path.find("BfG") > 0:
- return 1
+ shp = ogr.Open(path)
+ if self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) and \
+ self.getKind(path) > 0:
+ return True
else:
- return 2
-
+ return False
def createNewFeature(self, featureDef, feat, **args):
kind = self.getKind(args['path'])
@@ -48,40 +93,13 @@
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)
+ if self.IsFieldSet(feat, "SECTIE"):
+ newFeat.SetField("sectie", feat.GetField("SECTIE"))
- return newFeat
+ if self.IsFieldSet(feat, "SOBEK"):
+ newFeat.SetField("sobek", feat.GetField("SOBEK"))
-
-class HydrBoundaryPoly(HydrBoundary):
-
- def getTablename(self):
- return TABLE_NAME_POLY
-
-
- def getName(self):
- return "%s (Polygons)" % NAME
-
-
- def isGeometryValid(self, geomType):
- return geomType == 3 or geomType == 6
-
-
- 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"))
else:
More information about the Dive4elements-commits
mailing list