Mercurial > dive4elements > river
comparison flys-backend/contrib/shpimporter/hws.py @ 5178:13f3484d4618
Extract Bundesland from path as a fallback if bundesland field is not set.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Wed, 06 Mar 2013 16:44:42 +0100 |
parents | d25eebfc5cee |
children | c8e79cff622a |
comparison
equal
deleted
inserted
replaced
5177:08c5e3a646dc | 5178:13f3484d4618 |
---|---|
14 | 14 |
15 PATH="Hydrologie/HW-Schutzanlagen" | 15 PATH="Hydrologie/HW-Schutzanlagen" |
16 NAME="HWS" | 16 NAME="HWS" |
17 | 17 |
18 # Keep in sync with hws_kinds table: | 18 # Keep in sync with hws_kinds table: |
19 # strings need to be lowercase | |
19 HWS_KIND = { | 20 HWS_KIND = { |
20 "durchlass" : 1, | 21 "durchlass" : 1, |
21 "damm" : 2, | 22 "damm" : 2, |
22 "deich" : 2, | 23 "deich" : 2, |
23 "hochufer" : 2, | 24 "hochufer" : 2, |
26 "hauptdeich" : 2, | 27 "hauptdeich" : 2, |
27 "sommerdeich" : 2 | 28 "sommerdeich" : 2 |
28 } | 29 } |
29 | 30 |
30 # Keep in sync with fed_states table: | 31 # Keep in sync with fed_states table: |
32 # strings need to be lowercase | |
31 FED_STATES = { | 33 FED_STATES = { |
32 "bayern" : 1, | 34 "bayern" : 1, |
33 "hessen" : 2, | 35 "hessen" : 2, |
34 "niedersachsen" : 3, | 36 "niedersachsen" : 3, |
35 "nordrhein-westfalen" : 4, | 37 "nordrhein-westfalen" : 4, |
65 "H[oeö]{0,2}he_{0,1}SOLL$" : "z_target", | 67 "H[oeö]{0,2}he_{0,1}SOLL$" : "z_target", |
66 "(WSP_){0,1}BfG_{0,1}100$" : "rated_level", | 68 "(WSP_){0,1}BfG_{0,1}100$" : "rated_level", |
67 "H[oeö]{0,2}he_{0,1}IST$" : "z", | 69 "H[oeö]{0,2}he_{0,1}IST$" : "z", |
68 } | 70 } |
69 | 71 |
72 printedforpath=[] | |
73 | |
70 def getPath(self, base): | 74 def getPath(self, base): |
71 return "%s/%s" % (base, PATH) | 75 return "%s/%s" % (base, PATH) |
72 | 76 |
73 def getTablename(self): | 77 def getTablename(self): |
74 return "hws_points" | 78 return "hws_points" |
80 return geomType == ogr.wkbPoint or geomType == ogr.wkbPoint25D | 84 return geomType == ogr.wkbPoint or geomType == ogr.wkbPoint25D |
81 | 85 |
82 def isShapeRelevant(self, name, path): | 86 def isShapeRelevant(self, name, path): |
83 shp = ogr.Open(path) | 87 shp = ogr.Open(path) |
84 return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) | 88 return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) |
89 | |
90 def getFedStateIDfromPath(self, path): | |
91 """ | |
92 Tries to get extract a bundesland from the path | |
93 """ | |
94 for state in sorted(FED_STATES.keys(), key = len, reverse = True): | |
95 if state in path.lower(): | |
96 if not path in self.printedforpath: | |
97 logger.info("Extracted federal state from path: %s" % state) | |
98 self.printedforpath.append(path) | |
99 return FED_STATES[state] | |
85 | 100 |
86 def createNewFeature(self, featureDef, feat, **args): | 101 def createNewFeature(self, featureDef, feat, **args): |
87 newFeat = ogr.Feature(featureDef) | 102 newFeat = ogr.Feature(featureDef) |
88 geometry = feat.GetGeometryRef() | 103 geometry = feat.GetGeometryRef() |
89 geometry.SetCoordinateDimension(2) | 104 geometry.SetCoordinateDimension(2) |
107 self.handled(fname) | 122 self.handled(fname) |
108 fed_id = FED_STATES.get(feat.GetField(fname).lower()) | 123 fed_id = FED_STATES.get(feat.GetField(fname).lower()) |
109 | 124 |
110 if not fed_id: | 125 if not fed_id: |
111 logger.warn("Unknown Bundesland: %s" % \ | 126 logger.warn("Unknown Bundesland: %s" % \ |
112 feat.GetField("Bundesland")) | 127 feat.GetField(fname)) |
113 else: | 128 else: |
129 newFeat.SetField("fed_state_id", fed_id) | |
130 else: | |
131 # Try to get the bundesland from path | |
132 fed_id = self.getFedStateIDfromPath(args['path']) | |
133 if fed_id: | |
114 newFeat.SetField("fed_state_id", fed_id) | 134 newFeat.SetField("fed_state_id", fed_id) |
115 | 135 |
116 fname = self.searchField("(ufer$)|(flussseite$)") | 136 fname = self.searchField("(ufer$)|(flussseite$)") |
117 if self.IsFieldSet(feat, fname): | 137 if self.IsFieldSet(feat, fname): |
118 self.handled(fname) | 138 self.handled(fname) |