Mercurial > dive4elements > river
diff backend/contrib/shpimporter/buildings.py @ 5838:5aa05a7a34b7
Rename modules to more fitting names.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 25 Apr 2013 15:23:37 +0200 |
parents | flys-backend/contrib/shpimporter/buildings.py@b91cc44312b7 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/backend/contrib/shpimporter/buildings.py Thu Apr 25 15:23:37 2013 +0200 @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +try: + from osgeo import ogr +except ImportError: + import ogr + +from importer import Importer + +TABLE_NAME="buildings" +PATH="Geodaesie/Bauwerke" +NAME="Buildings" + +BUILDING_KINDS= { + "sonstige" : 0, + "brücken" : 1, + "wehre" : 2, + "pegel" : 3, + } + +class Building(Importer): + fieldmap = { + "^station$" : "km", + "^km$" : "km", + "^wsv-km$" : "km", + "^z$" : "z", + "^H[oeö]{0,2}he$" : "z", + "^m+NHN$" : "z", + "^KWNAAM$" : "description", + "^Name$" : "description" + } + + def getPath(self, base): + return "%s/%s" % (base, PATH) + + + def getTablename(self): + return TABLE_NAME + + + def getName(self): + return NAME + + + def isGeometryValid(self, geomType): + return geomType == 2 + + + def isShapeRelevant(self, name, path): + return "buhnen.shp" not in path.lower() + + def getKind(self, feat, path): + # First try to resolve it with the filename + for fname in ["brücke.shp", "bruecke.shp", + "brücken.shp", "bruecken.shp"]: + if path.lower().endswith(fname): + return BUILDING_KINDS["brücken"] + for fname in ["wehr.shp", "wehre.shp"]: + if path.lower().endswith(fname): + return BUILDING_KINDS["wehre"] + for fname in ["pegel.shp"]: + if path.lower().endswith(fname): + return BUILDING_KINDS["pegel"] + + # Now it gets ugly when we search all attributes + ret = self.searchValue(feat, "^br[ueü]{0,2}cke[n]{0,1}$") + if ret: + self.handled(ret) + return BUILDING_KINDS["brücken"] + ret = self.searchValue(feat, "^wehr[e]{0,1}$") + if ret: + self.handled(ret) + return BUILDING_KINDS["wehre"] + + return BUILDING_KINDS["sonstige"] + + + def createNewFeature(self, featureDef, feat, **args): + newFeat = ogr.Feature(featureDef) + geometry = feat.GetGeometryRef() + geometry.SetCoordinateDimension(2) + newFeat.SetGeometry(geometry) + + self.copyFields(feat, newFeat, self.fieldmap) + + newFeat.SetField("kind_id", self.getKind(feat, args['path'])) + newFeat.SetField("name", args["name"]) + + newFeat.SetField("river_id", self.river_id) + + return newFeat +