Mercurial > dive4elements > river
diff flys-backend/contrib/shpimporter/hws.py @ 4955:7323847fa7df dami
Importer: Add HWS lines stub. Needs some example data to finish
especially the setting of additional geometry values
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 01 Feb 2013 11:42:34 +0100 |
parents | c0a58558b817 |
children | baa32f1df47d |
line wrap: on
line diff
--- 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 + +