[Dive4elements-commits] [PATCH 05 of 15] (importer) Add classes for hws_points and hws_lines
Wald Commits
scm-commit at wald.intevation.org
Mon Jan 28 12:27:32 CET 2013
# HG changeset patch
# User Andre Heinecke <aheinecke at intevation.de>
# Date 1359106919 -3600
# Node ID 37fa93f659713f3e9778149e8cd58bd7d20e4d90
# Parent b1d7e600b43bdf7cbb878de10c808cf031f20775
(importer) Add classes for hws_points and hws_lines
diff -r b1d7e600b43b -r 37fa93f65971 flys-backend/contrib/shpimporter/hws.py
--- a/flys-backend/contrib/shpimporter/hws.py Fri Jan 25 10:41:09 2013 +0100
+++ b/flys-backend/contrib/shpimporter/hws.py Fri Jan 25 10:41:59 2013 +0100
@@ -1,34 +1,62 @@
-import ogr
+# -*- coding: utf-8 -*-
+import os
+
+try:
+ from osgeo import ogr
+except ImportErrror:
+ import ogr
from importer import Importer
+import utils
-TABLE_NAME="hws"
PATH="Hydrologie/HW-Schutzanlagen"
NAME="HWS"
+# Keep in sync with hws_kinds table:
+HWS_KIND = {
+ "Durchlass" : 1,
+ "Damm" : 2,
+ "Deich" : 2,
+ "Graben" : 3,
+ }
-class HWS(Importer):
+# Keep in sync with fed_states table:
+FED_STATES = {
+ "Bayern" : 1,
+ "Hessen" : 2,
+ "Niedersachsen" : 3,
+ "Nordrhein-Westfalen" : 4,
+ "Rheinland-Pfalz" : 5,
+ "Saarland" : 6,
+ "Schleswig-Holstein" : 7,
+ "Brandenburg" : 8,
+ "Mecklenburg-Vorpommern" : 9,
+ "Thüringen" : 10,
+ "Baden-Württemberg" : 11,
+ "Sachsen-Anhalt" : 12,
+ "Sachsen" : 13,
+ "Berlin" : 14,
+ "Bremen" : 15,
+ "Hamburg" : 16,
+}
+
+class HWSLines(Importer):
def getPath(self, base):
return "%s/%s" % (base, PATH)
-
def getTablename(self):
- return TABLE_NAME
-
+ return "hws_lines"
def getName(self):
- return NAME
-
+ return "HWS_LINES"
def isGeometryValid(self, geomType):
return geomType == 2
-
def isShapeRelevant(self, name, path):
return True
-
def createNewFeature(self, featureDef, feat, **args):
newFeat = ogr.Feature(featureDef)
geometry = feat.GetGeometryRef()
@@ -54,3 +82,88 @@
return newFeat
+class HWSPoints(Importer):
+ fieldmap = {
+ "Name" : "name",
+ "Freibord_m" : "freeboard",
+ "Quelle" : "source",
+ "Anmerkung" : "description",
+ "Stand" : "status_date",
+ "Verband" : "agency",
+ "Deich_KM" : "dike_km",
+ "Bereich" : "range",
+ }
+
+ def getPath(self, base):
+ return "%s/%s" % (base, PATH)
+
+ def getTablename(self):
+ return "hws_points"
+
+ def getName(self):
+ return "HWS_POINTS"
+
+ def isGeometryValid(self, geomType):
+ return geomType == 1
+
+ def isShapeRelevant(self, name, path):
+ print "Checking relevancy of %s" % path
+ if "punkte" in os.path.basename(path).lower():
+ return True
+ else:
+ return False
+
+ def createNewFeature(self, featureDef, feat, **args):
+ newFeat = ogr.Feature(featureDef)
+ geometry = feat.GetGeometryRef()
+ geometry.SetCoordinateDimension(3)
+
+ utils.copyFields(feat, newFeat, self.fieldmap)
+
+ newFeat.SetGeometry(geometry)
+
+ newFeat.SetFID(feat.GetFID())
+
+ newFeat.SetField("ogr_fid", feat.GetFID())
+
+ if self.IsFieldSet(feat, "Art"):
+ kind_id = HWS_KIND.get(feat.GetField("Art"))
+ if not kind_id:
+ print ("Unbekannte Art: %s" % \
+ feat.GetField("Art"))
+ else:
+ newFeat.SetField("kind_id", kind_id)
+
+ if self.IsFieldSet(feat, "Bundesland"):
+ fed_id = FED_STATES.get(feat.GetField("Bundesland"))
+
+ if not fed_id:
+ print ("Unbekanntes Bundesland: %s" % \
+ feat.GetField("Bundesland"))
+ else:
+ newFeat.SetField("fed_state_id", fed_id)
+
+ if self.IsFieldSet(feat, "river_id"):
+ if feat.GetField("river_id") != self.river_id:
+ print ("River_id mismatch between shapefile and"
+ " importer parameter.")
+ newFeat.SetField("river_id", feat.GetField("river_id"))
+ else:
+ newFeat.SetField("river_id", self.river_id)
+
+ if self.IsFieldSet(feat, "Ufer"):
+ shoreString = feat.GetField("Ufer")
+ if "links" in shoreString.lower():
+ newFeat.SetField("shore_side", True)
+ elif "rechts" in shoreString.lower():
+ newFeat.SetField("shore_side", False)
+
+ if not self.IsFieldSet(feat, "Name"):
+ newFeat.SetField("name", args['name'])
+
+ # TODO:
+ # offical
+
+ return newFeat
+
+
More information about the Dive4elements-commits
mailing list