[Dive4elements-commits] [PATCH] River Axes and HWS_lines are now multiline

Wald Commits scm-commit at wald.intevation.org
Thu Feb 28 13:00:15 CET 2013


# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1362052705 -3600
# Node ID 04eb62eae722ccda052c3daa4222dd8fb6c9d13e
# Parent  ec3430d12d2ec9fb88fcd50d319b494165e8475f
River Axes and HWS_lines are now multiline

diff -r ec3430d12d2e -r 04eb62eae722 flys-backend/contrib/shpimporter/axis.py
--- a/flys-backend/contrib/shpimporter/axis.py	Thu Feb 28 12:48:27 2013 +0100
+++ b/flys-backend/contrib/shpimporter/axis.py	Thu Feb 28 12:58:25 2013 +0100
@@ -4,6 +4,7 @@
     import ogr
 
 from importer import Importer
+import utils
 
 NAME="Axis"
 TABLE_NAME="river_axes"
@@ -25,8 +26,10 @@
 
 
     def isGeometryValid(self, geomType):
-        return geomType == 2
-
+        return geomType in [ogr.wkbLineString,
+                            ogr.wkbLineString25D,
+                            ogr.wkbMultiLineString25D,
+                            ogr.wkbMultiLineString]
 
     def isShapeRelevant(self, name, path):
         return "achse" in name.lower()
@@ -50,5 +53,4 @@
         newFeat.SetField("river_id", riverId)
         newFeat.SetField("kind", kind)
 
-        return newFeat
-
+        return utils.convertToMultiLine(newFeat)
diff -r ec3430d12d2e -r 04eb62eae722 flys-backend/contrib/shpimporter/hws.py
--- a/flys-backend/contrib/shpimporter/hws.py	Thu Feb 28 12:48:27 2013 +0100
+++ b/flys-backend/contrib/shpimporter/hws.py	Thu Feb 28 12:58:25 2013 +0100
@@ -180,7 +180,10 @@
         return "HWS_LINES"
 
     def isGeometryValid(self, geomType):
-        return geomType == ogr.wkbLineString or geomType == ogr.wkbLineString25D
+        return geomType in [ogr.wkbLineString,
+                            ogr.wkbLineString25D,
+                            ogr.wkbMultiLineString25D,
+                            ogr.wkbMultiLineString]
 
     def isShapeRelevant(self, name, path):
         shp = ogr.Open(path)
@@ -189,9 +192,10 @@
     def createNewFeature(self, featureDef, feat, **args):
         newFeat = HWSPoints.createNewFeature(self, featureDef, feat, **args)
         geometry = feat.GetGeometryRef()
-        geometry.SetCoordinateDimension(3)
+        if geometry.GetCoordinateDimension() == 2:
+            geometry.SetCoordinateDimension(3)
         newFeat.SetGeometry(geometry)
 
-        return newFeat
+        return utils.convertToMultiLine(newFeat)
 
 
diff -r ec3430d12d2e -r 04eb62eae722 flys-backend/contrib/shpimporter/utils.py
--- a/flys-backend/contrib/shpimporter/utils.py	Thu Feb 28 12:48:27 2013 +0100
+++ b/flys-backend/contrib/shpimporter/utils.py	Thu Feb 28 12:58:25 2013 +0100
@@ -97,3 +97,14 @@
 def getWkbString(type):
     return WKB_MAP.get(type) or "Unknown"
 
+def convertToMultiLine(feature):
+    """
+    Converts a feature to a multiline feature.
+    """
+    geometry = feature.GetGeometryRef()
+    # SRS information is lost while forcing to multiline
+    srs = geometry.GetSpatialReference()
+    geometry = ogr.ForceToMultiLineString(geometry)
+    geometry.AssignSpatialReference(srs)
+    feature.SetGeometry(geometry)
+    return feature
diff -r ec3430d12d2e -r 04eb62eae722 flys-backend/doc/schema/oracle-spatial_idx.sql
--- a/flys-backend/doc/schema/oracle-spatial_idx.sql	Thu Feb 28 12:48:27 2013 +0100
+++ b/flys-backend/doc/schema/oracle-spatial_idx.sql	Thu Feb 28 12:58:25 2013 +0100
@@ -25,7 +25,7 @@
 -- CREATE INDEX hydr_boundaries_idx ON hydr_boundaries(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=LINE');
 
 CREATE INDEX hws_points_spatial_idx ON hws_points(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=POINT');
-CREATE INDEX hws_lines_spatial_idx ON hws_lines(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=LINE');
+CREATE INDEX hws_lines_spatial_idx ON hws_lines(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=MULTILINE');
 CREATE INDEX floodmaps_spatial_idx ON floodmaps(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=MULTIPOLYGON');
 CREATE INDEX gauge_location_idx ON gauge_location(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=POINT');
 CREATE INDEX hydr_boundaries_poly_idx ON hydr_boundaries_poly(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=MULTIPOLYGON');
diff -r ec3430d12d2e -r 04eb62eae722 flys-backend/doc/schema/postgresql-spatial.sql
--- a/flys-backend/doc/schema/postgresql-spatial.sql	Thu Feb 28 12:48:27 2013 +0100
+++ b/flys-backend/doc/schema/postgresql-spatial.sql	Thu Feb 28 12:58:25 2013 +0100
@@ -9,7 +9,7 @@
     name     VARCHAR(64),
     path     VARCHAR(256)
 );
-SELECT AddGeometryColumn('river_axes', 'geom', 31467, 'LINESTRING', 2);
+SELECT AddGeometryColumn('river_axes', 'geom', 31467, 'MULTILINESTRING', 2);
 ALTER TABLE river_axes ALTER COLUMN id SET DEFAULT NEXTVAL('RIVER_AXES_ID_SEQ');
 
 
@@ -152,7 +152,7 @@
     status_date TIMESTAMP,
     description VARCHAR(256)
 );
-SELECT AddGeometryColumn('hws_lines', 'geom', 31467, 'LINESTRING', 3);
+SELECT AddGeometryColumn('hws_lines', 'geom', 31467, 'MULTILINESTRING', 3);
 -- TODO: dike_km_from dike_km_to, are they geometries?
 
 ALTER TABLE hws_lines ALTER COLUMN id SET DEFAULT NEXTVAL('HWS_LINES_ID_SEQ');


More information about the Dive4elements-commits mailing list