[Dive4elements-commits] [PATCH] Force UESG to multipolygon and import source field for messungen
Wald Commits
scm-commit at wald.intevation.org
Thu Mar 14 12:46:11 CET 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1363261551 -3600
# Node ID 3f35d9db48c120e97f2e2f3bfbd31fdcb94b72fe
# Parent 8aae8c26844f08cbed86f2366727ebec3f95a8e6
Force UESG to multipolygon and import source field for messungen
diff -r 8aae8c26844f -r 3f35d9db48c1 flys-backend/contrib/shpimporter/uesg.py
--- a/flys-backend/contrib/shpimporter/uesg.py Thu Mar 14 12:44:04 2013 +0100
+++ b/flys-backend/contrib/shpimporter/uesg.py Thu Mar 14 12:45:51 2013 +0100
@@ -4,7 +4,8 @@
import ogr
from importer import Importer
-
+import os.path
+import utils
TABLE_NAME="floodmaps"
PATH="Hydrologie/UeSG"
@@ -26,11 +27,8 @@
def isGeometryValid(self, geomType):
- if geomType == 3 or geomType == 6:
- return True
- else:
- return False
-
+ return geomType in [ogr.wkbMultiPolygon,
+ ogr.wkbPolygon]
def getKind(self, path):
kind = 0
@@ -54,7 +52,6 @@
def createNewFeature(self, featureDef, feat, **args):
kind = self.getKind(args['path'])
-
newFeat = ogr.Feature(featureDef)
newFeat.SetGeometry(feat.GetGeometryRef())
@@ -83,6 +80,11 @@
else:
perimeter = 0
+ if kind >= 200:
+ newFeat.SetField("source",
+ os.path.basename(os.path.dirname(args['path'])))
+
+
groupId = 2
newFeat.SetField("river_id", riverId)
@@ -93,5 +95,5 @@
newFeat.SetField("kind", kind)
newFeat.SetField("name", args['name'])
- return newFeat
+ return utils.convertToMultiPolygon(newFeat)
diff -r 8aae8c26844f -r 3f35d9db48c1 flys-backend/contrib/shpimporter/utils.py
--- a/flys-backend/contrib/shpimporter/utils.py Thu Mar 14 12:44:04 2013 +0100
+++ b/flys-backend/contrib/shpimporter/utils.py Thu Mar 14 12:45:51 2013 +0100
@@ -108,3 +108,15 @@
geometry.AssignSpatialReference(srs)
feature.SetGeometry(geometry)
return feature
+
+def convertToMultiPolygon(feature):
+ """
+ Converts a feature to a multiline feature.
+ """
+ geometry = feature.GetGeometryRef()
+ # SRS information is lost while forcing to multiline
+ srs = geometry.GetSpatialReference()
+ geometry = ogr.ForceToMultiPolygon(geometry)
+ geometry.AssignSpatialReference(srs)
+ feature.SetGeometry(geometry)
+ return feature
More information about the Dive4elements-commits
mailing list