# HG changeset patch # User Andre Heinecke # Date 1359715354 -3600 # Node ID 7323847fa7df74f1dd5999f67ce6d9935b5a0d49 # Parent 1a218a0bcfcf89d62f8d47d078443be9d36d5267 Importer: Add HWS lines stub. Needs some example data to finish especially the setting of additional geometry values diff -r 1a218a0bcfcf -r 7323847fa7df flys-backend/contrib/shpimporter/hws.py --- a/flys-backend/contrib/shpimporter/hws.py Fri Feb 01 10:43:19 2013 +0100 +++ b/flys-backend/contrib/shpimporter/hws.py Fri Feb 01 11:42:34 2013 +0100 @@ -47,48 +47,6 @@ "Hamburg" : 16, } -class HWSLines(Importer): - - def getPath(self, base): - return "%s/%s" % (base, PATH) - - def getTablename(self): - return "hws_lines" - - def getName(self): - return "HWS_LINES" - - def isGeometryValid(self, geomType): - return geomType == 2 - - def isShapeRelevant(self, name, path): - return True - - def createNewFeature(self, featureDef, feat, **args): - newFeat = ogr.Feature(featureDef) - geometry = feat.GetGeometryRef() - geometry.SetCoordinateDimension(2) - - newFeat.SetGeometry(geometry) - - if self.IsFieldSet(feat, "river_id"): - newFeat.SetField("river_id", feat.GetField("river_id")) - else: - newFeat.SetField("river_id", self.river_id) - - if self.IsFieldSet(feat, "TYP"): - newFeat.SetField("type", feat.GetField("TYP")) - - if self.IsFieldSet(feat, "Bauart"): - newFeat.SetField("hws_facility", feat.GetField("Bauart")) - - if self.IsFieldSet(feat, "Name"): - newFeat.SetField("name", feat.GetField("name")) - else: - newFeat.SetField("name", args['name']) - - return newFeat - class HWSPoints(Importer): fieldmap = { "name$" : "name", @@ -117,11 +75,7 @@ def isShapeRelevant(self, name, path): shp = ogr.Open(path) - if shp.GetLayerByName(name).GetGeomType() == ogr.wkbPoint or \ - shp.GetLayerByName(name).GetGeomType() == ogr.wkbPoint25D: - return True - else: - return False + return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) def createNewFeature(self, featureDef, feat, **args): newFeat = ogr.Feature(featureDef) @@ -197,4 +151,40 @@ return newFeat +class HWSLines(HWSPoints): + # TODO: GEOM_target, GEOM_rated_level, dike_km_from, dike_km_to + fieldmap = { + "name$" : "name", + "quelle$" : "source", + "anmerkung$" : "description", + "stand$" : "status_date", + "verband$" : "agency", + "Bereich$" : "range", + } + + def getPath(self, base): + return "%s/%s" % (base, PATH) + + def getTablename(self): + return "hws_lines" + + def getName(self): + return "HWS_LINES" + + def isGeometryValid(self, geomType): + return geomType == ogr.wkbLineString or geomType == ogr.wkbLineString25D + + def isShapeRelevant(self, name, path): + shp = ogr.Open(path) + return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType()) + + def createNewFeature(self, featureDef, feat, **args): + newFeat = HWSPoints.createNewFeature(self, featureDef, feat, **args) + geometry = feat.GetGeometryRef() + geometry.SetCoordinateDimension(3) + newFeat.SetGeometry(geometry) + + return newFeat + + diff -r 1a218a0bcfcf -r 7323847fa7df flys-backend/contrib/shpimporter/shpimporter.py --- a/flys-backend/contrib/shpimporter/shpimporter.py Fri Feb 01 10:43:19 2013 +0100 +++ b/flys-backend/contrib/shpimporter/shpimporter.py Fri Feb 01 11:42:34 2013 +0100 @@ -121,7 +121,8 @@ elif config.skip_floodplains == 1 and isinstance(importer, Floodplain): return True elif config.skip_hws_points == 1 and isinstance(importer, HWSPoints): - return True + if not isinstance(importer, HWSLines): + return True elif config.skip_hws_lines == 1 and isinstance(importer, HWSLines): return True elif config.skip_gauge_locations == 1 and isinstance(importer, GaugeLocation):