annotate flys-backend/contrib/shpimporter/hws.py @ 4991:b79eb203032d dami

SCHEMA CHANGE: added 'ON DELETE CASCADE' where necessary to delete complete rivers (only in Postgres-Schema so far)
author Tom Gottfried <tom.gottfried@intevation.de>
date Thu, 14 Feb 2013 17:36:10 +0100
parents 7323847fa7df
children baa32f1df47d
rev   line source
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
1 # -*- coding: utf-8 -*-
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
2 import os
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
3
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
4 try:
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
5 from osgeo import ogr
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
6 except ImportErrror:
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
7 import ogr
2862
998f1a7dcfde New shape importers and schema modifications.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
8
998f1a7dcfde New shape importers and schema modifications.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 from importer import Importer
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
10 import utils
2862
998f1a7dcfde New shape importers and schema modifications.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11
998f1a7dcfde New shape importers and schema modifications.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 PATH="Hydrologie/HW-Schutzanlagen"
3654
59ca5dab2782 Shape importer: use python's OptionParse to read user specific configuration from command line.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2862
diff changeset
13 NAME="HWS"
2862
998f1a7dcfde New shape importers and schema modifications.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
15 # Keep in sync with hws_kinds table:
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
16 HWS_KIND = {
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
17 "Durchlass" : 1,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
18 "Damm" : 2,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
19 "Deich" : 2,
4932
60b026b4340e Importer: Classify hochufer as Deich
Andre Heinecke <aheinecke@intevation.de>
parents: 4884
diff changeset
20 "Hochufer" : 2,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
21 "Graben" : 3,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
22 }
2862
998f1a7dcfde New shape importers and schema modifications.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
24 # Keep in sync with fed_states table:
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
25 FED_STATES = {
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
26 "Bayern" : 1,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
27 "Hessen" : 2,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
28 "Niedersachsen" : 3,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
29 "Nordrhein-Westfalen" : 4,
4933
03989fa957fc Importer: Allow Bundeslaender with spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 4932
diff changeset
30 "Nordrhein Westfalen" : 4,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
31 "Rheinland-Pfalz" : 5,
4933
03989fa957fc Importer: Allow Bundeslaender with spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 4932
diff changeset
32 "Rheinland Pfalz" : 5,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
33 "Saarland" : 6,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
34 "Schleswig-Holstein" : 7,
4933
03989fa957fc Importer: Allow Bundeslaender with spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 4932
diff changeset
35 "Schleswig Holstein" : 7,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
36 "Brandenburg" : 8,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
37 "Mecklenburg-Vorpommern" : 9,
4933
03989fa957fc Importer: Allow Bundeslaender with spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 4932
diff changeset
38 "Mecklenburg Vorpommern" : 9,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
39 "Thüringen" : 10,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
40 "Baden-Württemberg" : 11,
4933
03989fa957fc Importer: Allow Bundeslaender with spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 4932
diff changeset
41 "Baden Württemberg" : 11,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
42 "Sachsen-Anhalt" : 12,
4933
03989fa957fc Importer: Allow Bundeslaender with spaces
Andre Heinecke <aheinecke@intevation.de>
parents: 4932
diff changeset
43 "Sachsen Anhalt" : 12,
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
44 "Sachsen" : 13,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
45 "Berlin" : 14,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
46 "Bremen" : 15,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
47 "Hamburg" : 16,
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
48 }
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
49
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
50 class HWSPoints(Importer):
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
51 fieldmap = {
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
52 "name$" : "name",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
53 "quelle$" : "source",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
54 "anmerkung$" : "description",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
55 "stand$" : "status_date",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
56 "verband$" : "agency",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
57 "Deich_{0,1}KM$" : "dike_km",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
58 "Bereich$" : "range",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
59 "H[oeö]{0,2}he_{0,1}SOLL$" : "z_target",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
60 "(WSP_){0,1}BfG_{0,1}100$" : "rated_level",
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
61 "H[oeö]{0,2}he_{0,1}IST$" : "z",
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
62 }
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
63
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
64 def getPath(self, base):
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
65 return "%s/%s" % (base, PATH)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
66
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
67 def getTablename(self):
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
68 return "hws_points"
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
69
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
70 def getName(self):
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
71 return "HWS_POINTS"
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
72
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
73 def isGeometryValid(self, geomType):
4934
11b459a3eb5c Importer: Import hws_points based on geom type
Andre Heinecke <aheinecke@intevation.de>
parents: 4933
diff changeset
74 return geomType == ogr.wkbPoint or geomType == ogr.wkbPoint25D
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
75
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
76 def isShapeRelevant(self, name, path):
4934
11b459a3eb5c Importer: Import hws_points based on geom type
Andre Heinecke <aheinecke@intevation.de>
parents: 4933
diff changeset
77 shp = ogr.Open(path)
4955
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
78 return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType())
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
79
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
80 def createNewFeature(self, featureDef, feat, **args):
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
81 newFeat = ogr.Feature(featureDef)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
82 geometry = feat.GetGeometryRef()
4881
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
83 geometry.SetCoordinateDimension(2)
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
84
4884
b457532dae63 Importer: Move copy fields into importer class and track imported/unimported fields
Andre Heinecke <aheinecke@intevation.de>
parents: 4881
diff changeset
85 self.copyFields(feat, newFeat, self.fieldmap)
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
86
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
87 newFeat.SetGeometry(geometry)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
88
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
89 newFeat.SetField("ogr_fid", feat.GetFID())
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
90 artname = self.searchField("art$")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
91 if self.IsFieldSet(feat, artname):
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
92 self.handled(artname)
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
93 kind_id = HWS_KIND.get(feat.GetField(artname))
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
94 if not kind_id:
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
95 print ("Unknown Art: %s" % \
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
96 feat.GetField(artname))
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
97 else:
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
98 newFeat.SetField("kind_id", kind_id)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
99
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
100 fname = self.searchField("Bundesland$")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
101 if self.IsFieldSet(feat, fname):
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
102 self.handled(fname)
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
103 fed_id = FED_STATES.get(feat.GetField(fname))
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
104
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
105 if not fed_id:
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
106 print ("Unknown Bundesland: %s" % \
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
107 feat.GetField("Bundesland"))
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
108 else:
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
109 newFeat.SetField("fed_state_id", fed_id)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
110
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
111 fname = self.searchField("(ufer$)|(flussseite$)")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
112 if self.IsFieldSet(feat, fname):
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
113 self.handled(fname)
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
114 shoreString = feat.GetField(fname)
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
115 if "links" in shoreString.lower():
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
116 newFeat.SetField("shore_side", True)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
117 elif "rechts" in shoreString.lower():
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
118 newFeat.SetField("shore_side", False)
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
119
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
120
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
121 fname = self.searchField("river_{0,1}id$")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
122 if self.IsFieldSet(feat, fname):
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
123 self.handled(fname)
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
124 if feat.GetField(fname) != self.river_id:
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
125 print ("River_id mismatch between shapefile and"
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
126 " importer parameter.")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
127 newFeat.SetField("river_id", feat.GetField(fname))
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
128 else:
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
129 newFeat.SetField("river_id", self.river_id)
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
130
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
131 fname = self.searchField("name$")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
132 if not self.IsFieldSet(feat, fname):
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
133 newFeat.SetField("name", args['name'])
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
134
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
135 fname = self.searchField("offiziell$")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
136 if self.IsFieldSet(feat, fname):
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
137 self.handled(fname)
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
138 offiziell = feat.GetField(fname)
4881
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
139 if offiziell == "1" or offiziell == 1:
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
140 newFeat.SetField("offiziell", True)
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
141 else:
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
142 newFeat.SetField("offiziell", False)
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
143
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
144 if self.IsFieldSet(newFeat, "z") and \
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
145 self.IsFieldSet(newFeat, "rated_level"):
4935
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
146 fname = self.searchField("freibord(_m){0,1}$")
c0a58558b817 Importer: - Handle regular expressions for attribute names
Andre Heinecke <aheinecke@intevation.de>
parents: 4934
diff changeset
147 self.handled(fname)
4881
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
148 z = newFeat.GetFieldAsDouble("z")
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
149 rl = newFeat.GetFieldAsDouble("rated_level")
9b03cf6b85c9 (importer) calculate freeboard and expect sql
Andre Heinecke <aheinecke@intevation.de>
parents: 4875
diff changeset
150 newFeat.SetField("freeboard", z - rl)
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
151
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
152 return newFeat
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
153
4955
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
154 class HWSLines(HWSPoints):
4875
37fa93f65971 (importer) Add classes for hws_points and hws_lines
Andre Heinecke <aheinecke@intevation.de>
parents: 3654
diff changeset
155
4955
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
156 # TODO: GEOM_target, GEOM_rated_level, dike_km_from, dike_km_to
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
157 fieldmap = {
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
158 "name$" : "name",
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
159 "quelle$" : "source",
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
160 "anmerkung$" : "description",
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
161 "stand$" : "status_date",
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
162 "verband$" : "agency",
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
163 "Bereich$" : "range",
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
164 }
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
165
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
166 def getPath(self, base):
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
167 return "%s/%s" % (base, PATH)
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
168
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
169 def getTablename(self):
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
170 return "hws_lines"
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
171
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
172 def getName(self):
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
173 return "HWS_LINES"
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
174
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
175 def isGeometryValid(self, geomType):
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
176 return geomType == ogr.wkbLineString or geomType == ogr.wkbLineString25D
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
177
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
178 def isShapeRelevant(self, name, path):
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
179 shp = ogr.Open(path)
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
180 return self.isGeometryValid(shp.GetLayerByName(name).GetGeomType())
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
181
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
182 def createNewFeature(self, featureDef, feat, **args):
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
183 newFeat = HWSPoints.createNewFeature(self, featureDef, feat, **args)
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
184 geometry = feat.GetGeometryRef()
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
185 geometry.SetCoordinateDimension(3)
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
186 newFeat.SetGeometry(geometry)
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
187
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
188 return newFeat
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
189
7323847fa7df Importer: Add HWS lines stub. Needs some example data to finish
Andre Heinecke <aheinecke@intevation.de>
parents: 4935
diff changeset
190

http://dive4elements.wald.intevation.org