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@5353: JETTY_KIND = { aheinecke@5353: "buhnenkopf" : 0, aheinecke@5353: "buhnenfuß" : 1, aheinecke@5353: "buhnenwurzel" : 2, aheinecke@5353: } aheinecke@5353: aheinecke@5353: class Jetties(Importer): aheinecke@5353: fieldmap = { aheinecke@5353: "^station$" : "km", aheinecke@5353: "^z$" : "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@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@5353: if not kind_id: 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: