aheinecke@5004: try:
aheinecke@5004:     from osgeo import ogr
aheinecke@5077: except ImportError:
aheinecke@5004:     import ogr
ingo@2853: 
ingo@2853: from importer import Importer
aheinecke@5137: import utils
ingo@2853: 
ingo@3654: NAME="Axis"
ingo@2853: TABLE_NAME="river_axes"
ingo@2853: PATH="Geodaesie/Flussachse+km"
ingo@2853: 
ingo@2853: 
ingo@2853: class Axis(Importer):
ingo@2853: 
ingo@2853:     def getPath(self, base):
ingo@2853:         return "%s/%s" % (base, PATH)
ingo@2853: 
ingo@2853: 
ingo@2853:     def getTablename(self):
ingo@2853:         return TABLE_NAME
ingo@2853: 
ingo@2853: 
ingo@3654:     def getName(self):
ingo@3654:         return NAME
ingo@3654: 
ingo@3654: 
ingo@2853:     def isGeometryValid(self, geomType):
aheinecke@5137:         return geomType in [ogr.wkbLineString,
aheinecke@5137:                             ogr.wkbLineString25D,
aheinecke@5137:                             ogr.wkbMultiLineString25D,
aheinecke@5137:                             ogr.wkbMultiLineString]
ingo@2853: 
ingo@2853:     def isShapeRelevant(self, name, path):
aheinecke@5146:         return "km.shp" not in path.lower()
ingo@2853: 
ingo@2853: 
ingo@2853:     def createNewFeature(self, featureDef, feat, **args):
ingo@2853:         newFeat = ogr.Feature(featureDef)
aheinecke@5171:         geometry = feat.GetGeometryRef()
aheinecke@5171:         geometry.SetCoordinateDimension(3)
aheinecke@5171:         newFeat.SetGeometry(geometry)
ingo@2861:         newFeat.SetField("name", args['name'])
ingo@2853: 
ingo@2853:         if self.IsFieldSet(feat, "river_id"):
ingo@2853:             riverId = feat.GetField("river_id")
ingo@2853:         else:
ingo@2853:             riverId = self.river_id
ingo@2853: 
aheinecke@5146:         newFeat.SetField("river_id", riverId)
aheinecke@5146:         if args.get("name", "").lower() == "achse":
aheinecke@5146:             newFeat.SetField("kind_id", 1) # 1 is Current
ingo@2853:         else:
aheinecke@5146:             newFeat.SetField("kind_id", 2) # 2 Is Other
ingo@2853: 
aheinecke@5137:         return utils.convertToMultiLine(newFeat)