Mercurial > dive4elements > river
view backend/contrib/shpimporter/uesg.py @ 8635:c421c9530aba
Do not show lines if showlines is not set.
As with points lines should only be shown if showlines is
explicitly set to true and not by default. Every line should
have a theme to be editable
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Fri, 27 Mar 2015 14:39:01 +0100 |
parents | 249b8766a178 |
children |
line wrap: on
line source
try: from osgeo import ogr except ImportError: import ogr from importer import Importer import os.path import utils TABLE_NAME="floodmaps" PATH="Hydrologie/UeSG" NAME="UESG" class UESG(Importer): def getPath(self, base): return "%s/%s" % (base, PATH) def getTablename(self): return TABLE_NAME def getName(self): return NAME def isGeometryValid(self, geomType): return geomType in [ogr.wkbMultiPolygon, ogr.wkbPolygon] def getKind(self, path): kind = 0 if path.find("Berechnung") > 0: kind = kind + 100 if path.find("Aktuell") > 0: kind = kind + 10 else: kind = kind + 20 if path.find("Bundesl") > 0: kind = kind + 2 else: kind = kind + 1 else: kind = kind + 200 return kind def createNewFeature(self, featureDef, feat, **args): kind = self.getKind(args['path']) newFeat = ogr.Feature(featureDef) newFeat.SetGeometry(feat.GetGeometryRef()) if self.IsFieldSet(feat, "river_id"): riverId = feat.GetField(feat) else: riverId = self.river_id if self.IsFieldSet(feat, "diff"): diff = feat.GetFieldAsDouble("diff") else: diff = 0 if self.IsFieldSet(feat, "count"): count = feat.GetFieldAsInteger("count") else: count = 0 if self.IsFieldSet(feat, "area"): area = feat.GetFieldAsDouble("area") else: area = 0 if self.IsFieldSet(feat, "perimeter"): perimeter = feat.GetFieldAsDouble("perimeter") else: perimeter = 0 if self.IsFieldSet(feat, "GEWAESSER"): newFeat.SetField("waterbody", feat.GetField("GEWAESSER")) if kind >= 200: newFeat.SetField("source", os.path.basename(os.path.dirname(args['path']))) groupId = 2 newFeat.SetField("river_id", riverId) newFeat.SetField("diff", diff) newFeat.SetField("count", count) newFeat.SetField("area", area) newFeat.SetField("perimeter", perimeter) newFeat.SetField("kind", kind) newFeat.SetField("name", args['name']) return utils.convertToMultiPolygon(newFeat)