view backend/contrib/shpimporter/crosssectiontracks.py @ 8659:af415396d9ca

(issue1803) Use MD5 instead of a homegrown hashing algorithm For creating a digest of the parametrization we should use an algorithm that does not create collisions if there are small changes in the parametrization so that wrong results are returned.
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 02 Apr 2015 17:40:18 +0200
parents 5aa05a7a34b7
children
line wrap: on
line source
try:
    from osgeo import ogr
except ImportError:
    import ogr

from importer import Importer

TABLE_NAME="cross_section_tracks"
PATH="Geodaesie/Querprofile"
NAME="Crosssections"


class CrosssectionTrack(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 == 2


    def isShapeRelevant(self, name, path):
        return True


    def createNewFeature(self, featureDef, feat, **args):
        newFeat = ogr.Feature(featureDef)
        newFeat.SetGeometry(feat.GetGeometryRef())
        newFeat.SetField("name", args['name'])

        if args['path'].lower().endswith("/qps.shp") and \
                not "sonstige" in args['path'].lower():
            newFeat.SetField("kind_id", 1) # offical
        else:
            newFeat.SetField("kind_id", 0) # misc

        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, "KILOMETER"):
            newFeat.SetField("km", feat.GetFieldAsDouble("KILOMETER"))
        elif self.IsFieldSet(feat, "KM"):
            newFeat.SetField("km", feat.GetFieldAsDouble("KM"))
        elif self.IsFieldSet(feat, "STATION"):
            newFeat.SetField("km", feat.GetFieldAsDouble("STATION"))
        else:
            return None

        if self.IsFieldSet(feat, "ELEVATION"):
            newFeat.SetField("z", feat.GetFieldAsDouble("ELEVATION"))
        else:
            newFeat.SetField("z", 0)

        return newFeat

http://dive4elements.wald.intevation.org