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)

http://dive4elements.wald.intevation.org