Mercurial > dive4elements > river
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 |