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: