ingo@2861: import ogr
ingo@2861: 
ingo@2861: from importer import Importer
ingo@2861: 
ingo@2861: TABLE_NAME="hydr_boundaries"
ingo@2861: TABLE_NAME_POLY="hydr_boundaries_poly"
ingo@2861: PATH="Hydrologie/Hydr.Grenzen/Linien"
ingo@3654: NAME="Hydr. Boundaries"
ingo@2861: 
ingo@2861: 
ingo@2861: class HydrBoundary(Importer):
ingo@2861: 
ingo@2861:     def getPath(self, base):
ingo@2861:         return "%s/%s" % (base, PATH)
ingo@2861: 
ingo@2861: 
ingo@2861:     def getTablename(self):
ingo@2861:         return TABLE_NAME
ingo@2861: 
ingo@2861: 
ingo@3654:     def getName(self):
ingo@3654:         return NAME
ingo@3654: 
ingo@3654: 
ingo@2861:     def isGeometryValid(self, geomType):
ingo@2861:         return geomType == 2
ingo@2861: 
ingo@2861: 
ingo@2861:     def isShapeRelevant(self, name, path):
ingo@2861:         return True
ingo@2861: 
ingo@2861: 
ingo@2861:     def getKind(self, path):
ingo@2861:         if path.find("BfG") > 0:
ingo@2861:             return 1
ingo@2861:         else:
ingo@2861:             return 2
ingo@2861: 
ingo@2861: 
ingo@2861:     def createNewFeature(self, featureDef, feat, **args):
ingo@2861:         kind  = self.getKind(args['path'])
ingo@2861: 
ingo@2861:         newFeat  = ogr.Feature(featureDef)
ingo@2861:         geometry = feat.GetGeometryRef()
ingo@2861:         geometry.SetCoordinateDimension(2)
ingo@2861: 
ingo@2861:         newFeat.SetGeometry(geometry)
ingo@2861:         newFeat.SetField("name", args['name'])
ingo@2861:         newFeat.SetField("kind", kind)
ingo@2861: 
ingo@2861:         if self.IsFieldSet(feat, "river_id"):
ingo@2861:             newFeat.SetField("river_id", feat.GetField("river_id"))
ingo@2861:         else:
ingo@2861:             newFeat.SetField("river_id", self.river_id)
ingo@2861: 
ingo@2861:         return newFeat
ingo@2861: 
ingo@2861: 
ingo@2861: 
ingo@2861: class HydrBoundaryPoly(HydrBoundary):
ingo@2861: 
ingo@2861:     def getTablename(self):
ingo@2861:         return TABLE_NAME_POLY
ingo@2861: 
ingo@2861: 
ingo@3654:     def getName(self):
ingo@3654:         return "%s (Polygons)" % NAME
ingo@3654: 
ingo@3654: 
ingo@2861:     def isGeometryValid(self, geomType):
ingo@2861:         return geomType == 3 or geomType == 6
ingo@2861: 
ingo@2861: 
ingo@2861:     def createNewFeature(self, featureDef, feat, **args):
ingo@2861:         kind  = self.getKind(args['path'])
ingo@2861: 
ingo@2861:         newFeat  = ogr.Feature(featureDef)
ingo@2861:         geometry = feat.GetGeometryRef()
ingo@2861:         geometry.SetCoordinateDimension(2)
ingo@2861: 
ingo@2861:         newFeat.SetGeometry(geometry)
ingo@2861:         newFeat.SetField("name", args['name'])
ingo@2861:         newFeat.SetField("kind", kind)
ingo@2861: 
ingo@2861:         if self.IsFieldSet(feat, "river_id"):
ingo@2861:             newFeat.SetField("river_id", feat.GetField("river_id"))
ingo@2861:         else:
ingo@2861:             newFeat.SetField("river_id", self.river_id)
ingo@2861: 
ingo@2861:         return newFeat
ingo@2861: