# HG changeset patch # User Andre Heinecke # Date 1362584682 -3600 # Node ID 13f3484d461821eb5bd856fa312347ab56c8a773 # Parent 08c5e3a646dc789cd78b6dc8fc133af088866ec9 Extract Bundesland from path as a fallback if bundesland field is not set. diff -r 08c5e3a646dc -r 13f3484d4618 flys-backend/contrib/shpimporter/hws.py --- a/flys-backend/contrib/shpimporter/hws.py Wed Mar 06 16:28:04 2013 +0100 +++ b/flys-backend/contrib/shpimporter/hws.py Wed Mar 06 16:44:42 2013 +0100 @@ -16,6 +16,7 @@ NAME="HWS" # Keep in sync with hws_kinds table: +# strings need to be lowercase HWS_KIND = { "durchlass" : 1, "damm" : 2, @@ -28,6 +29,7 @@ } # Keep in sync with fed_states table: +# strings need to be lowercase FED_STATES = { "bayern" : 1, "hessen" : 2, @@ -67,6 +69,8 @@ "H[oeƶ]{0,2}he_{0,1}IST$" : "z", } + printedforpath=[] + def getPath(self, base): return "%s/%s" % (base, PATH) @@ -83,6 +87,17 @@ shp = ogr.Open(path) return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) + def getFedStateIDfromPath(self, path): + """ + Tries to get extract a bundesland from the path + """ + for state in sorted(FED_STATES.keys(), key = len, reverse = True): + if state in path.lower(): + if not path in self.printedforpath: + logger.info("Extracted federal state from path: %s" % state) + self.printedforpath.append(path) + return FED_STATES[state] + def createNewFeature(self, featureDef, feat, **args): newFeat = ogr.Feature(featureDef) geometry = feat.GetGeometryRef() @@ -109,9 +124,14 @@ if not fed_id: logger.warn("Unknown Bundesland: %s" % \ - feat.GetField("Bundesland")) + feat.GetField(fname)) else: newFeat.SetField("fed_state_id", fed_id) + else: + # Try to get the bundesland from path + fed_id = self.getFedStateIDfromPath(args['path']) + if fed_id: + newFeat.SetField("fed_state_id", fed_id) fname = self.searchField("(ufer$)|(flussseite$)") if self.IsFieldSet(feat, fname):