view backend/contrib/shpimporter/km.py @ 7076:7f600001c807 generator-refactoring

Add LTR inversion code to diagram generator. This code is used in serveral diagrams and as it modifies a whole diagram it should be central. (This should also make maintenance easier). This function can be called by processors to make sure that their data is plotted with an LTR waterflow.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 20 Sep 2013 16:33:22 +0200
parents 6a63456b99d9
children 5f48541cd544
line wrap: on
line source
try:
    from osgeo import ogr
except ImportError:
    import ogr

from importer import Importer

TABLE_NAME="river_axes_km"
PATH="Geodaesie/Flussachse+km"
NAME="KMS"


class KM(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 == 1


    def isShapeRelevant(self, name, path):
        return name.lower() == "km"


    def createNewFeature(self, featureDef, feat, **args):
        newFeat = ogr.Feature(featureDef)

        geometry = feat.GetGeometryRef()
        geometry.SetCoordinateDimension(2)
        newFeat.SetGeometry(geometry)

        newFeat.SetField("name", args['name'])

        if self.IsFieldSet(feat, "river_id"):
            newFeat.SetField("river_id", feat.GetField("river_id"))
        else:
            newFeat.SetField("river_id", self.river_id)

        if self.IsDoubleFieldSet(feat, "landkm"):
            newFeat.SetField("fedstate_km", feat.GetFieldAsDouble("landkm"))

        if self.IsDoubleFieldSet(feat, "km"):
            newFeat.SetField("km", feat.GetFieldAsDouble("km"))
        elif self.IsDoubleFieldSet(feat, "KM"):
            newFeat.SetField("km", feat.GetFieldAsDouble("KM"))
        else:
            return None

        return newFeat

http://dive4elements.wald.intevation.org