aheinecke@5353: # -*- coding: utf-8 -*- aheinecke@5353: import os aheinecke@5353: aheinecke@5353: try: aheinecke@5353: from osgeo import ogr aheinecke@5353: except ImportError: aheinecke@5353: import ogr aheinecke@5353: aheinecke@5353: from importer import Importer aheinecke@5353: import utils aheinecke@5353: aheinecke@5353: import logging aheinecke@5353: logger = logging.getLogger("Jetties") aheinecke@5353: aheinecke@5353: PATH="Geodaesie/Bauwerke" aheinecke@5353: NAME="Jetties" aheinecke@5353: aheinecke@5353: # strings need to be lowercase aheinecke@5357: # buhnenkopf 0 aheinecke@5357: # buhnenfuß 1 aheinecke@5357: # buhnenwurzel 2 aheinecke@5353: JETTY_KIND = { aheinecke@5357: "bkl" : 0, aheinecke@5357: "bkr" : 0, aheinecke@5384: "bk" : 0, aheinecke@5357: "bfl" : 1, aheinecke@5357: "bfr" : 1, aheinecke@5384: "bf" : 1, aheinecke@5357: "bwl" : 2, aheinecke@5357: "bwr" : 2, aheinecke@5384: "bw" : 2, aheinecke@5353: } aheinecke@5353: aheinecke@5353: class Jetties(Importer): aheinecke@5353: fieldmap = { aheinecke@5384: "^station$" : "km", aheinecke@5384: "^km$" : "km", aheinecke@5384: "^wsv-km$" : "km", aheinecke@5384: "^z$" : "z", aheinecke@5384: "^H[oeö]{0,2}he$" : "z", aheinecke@5384: "^m+NHN$" : "z", aheinecke@5353: } aheinecke@5353: aheinecke@5353: def getPath(self, base): aheinecke@5353: return "%s/%s" % (base, PATH) aheinecke@5353: aheinecke@5353: def getTablename(self): aheinecke@5353: return "jetties" aheinecke@5353: aheinecke@5353: def getName(self): aheinecke@5353: return "JETTIES" aheinecke@5353: aheinecke@5353: def isGeometryValid(self, geomType): aheinecke@5353: return geomType == ogr.wkbPoint or geomType == ogr.wkbPoint25D aheinecke@5353: aheinecke@5353: def isShapeRelevant(self, name, path): aheinecke@5353: if not path.endswith("Buhnen.shp"): aheinecke@5353: return False aheinecke@5353: shp = ogr.Open(path) aheinecke@5353: return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) aheinecke@5353: aheinecke@5353: def createNewFeature(self, featureDef, feat, **args): aheinecke@5353: newFeat = ogr.Feature(featureDef) aheinecke@5353: geometry = feat.GetGeometryRef() aheinecke@5353: geometry.SetCoordinateDimension(2) aheinecke@5353: aheinecke@5353: self.copyFields(feat, newFeat, self.fieldmap) aheinecke@5353: aheinecke@5353: newFeat.SetGeometry(geometry) aheinecke@5353: aheinecke@5438: newFeat.SetField("river_id", self.river_id) aheinecke@5438: aheinecke@5353: artname = self.searchField("^type$") aheinecke@5353: if self.IsFieldSet(feat, artname): aheinecke@5353: self.handled(artname) aheinecke@5353: kind_id = JETTY_KIND.get(feat.GetField(artname).lower()) aheinecke@5357: if kind_id == None: aheinecke@5353: logger.warn("Unknown Type: %s" % \ aheinecke@5353: feat.GetField(artname)) aheinecke@5353: else: aheinecke@5353: newFeat.SetField("kind_id", kind_id) aheinecke@5353: aheinecke@5353: return newFeat aheinecke@5353: