# HG changeset patch # User Bettina Gruenbauer # Date 1363262016 -3600 # Node ID 55122db34cd0d0f7632153cefb80f257a81e7714 # Parent ee7b0306b2bf11b9fde8175c7cd82ebafcb25293# Parent 3f35d9db48c120e97f2e2f3bfbd31fdcb94b72fe merge diff -r ee7b0306b2bf -r 55122db34cd0 flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java Thu Mar 14 12:49:41 2013 +0100 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/MainValuesArtifact.java Thu Mar 14 12:53:36 2013 +0100 @@ -175,14 +175,15 @@ logger.debug("MainValuesArtifact.initialize"); FLYSArtifact winfo = (FLYSArtifact) artifact; RangeAccess rangeAccess = new RangeAccess(winfo, null); - double [] locations = rangeAccess.getLocations(); + double [] locations = rangeAccess.getKmRange(); + if (locations != null) { double location = locations[0]; addData("ld_locations", new DefaultStateData("ld_locations", null, null, String.valueOf(location))); } else { - logger.warn("No location for mainvalues given."); + logger.error("No location for mainvalues given."); } importData(winfo, "river"); } @@ -247,7 +248,13 @@ // TODO use helper to get location as double String locationStr = getDataAsString("ld_locations"); - if (river == null || locationStr == null) { + if (river == null) { + logger.error("River is null"); + return null; + } + + if (locationStr == null) { + logger.error("Locationstr is null"); return null; } diff -r ee7b0306b2bf -r 55122db34cd0 flys-backend/contrib/shpimporter/uesg.py --- a/flys-backend/contrib/shpimporter/uesg.py Thu Mar 14 12:49:41 2013 +0100 +++ b/flys-backend/contrib/shpimporter/uesg.py Thu Mar 14 12:53:36 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 ee7b0306b2bf -r 55122db34cd0 flys-backend/contrib/shpimporter/utils.py --- a/flys-backend/contrib/shpimporter/utils.py Thu Mar 14 12:49:41 2013 +0100 +++ b/flys-backend/contrib/shpimporter/utils.py Thu Mar 14 12:53:36 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 diff -r ee7b0306b2bf -r 55122db34cd0 flys-backend/doc/schema/oracle-spatial.sql --- a/flys-backend/doc/schema/oracle-spatial.sql Thu Mar 14 12:49:41 2013 +0100 +++ b/flys-backend/doc/schema/oracle-spatial.sql Thu Mar 14 12:53:36 2013 +0100 @@ -373,3 +373,30 @@ SELECT GAUGE_LOCATION_ID_SEQ.nextval INTO :new.id FROM dual; END; / + + +CREATE TABLE jetty_kinds( + id NUMBER PRIMARY KEY NOT NULL, + name VARCHAR(64) +); +INSERT INTO jetty_kinds VALUES (0, 'Buhnenkopf'); +INSERT INTO jetty_kinds VALUES (1, 'Buhnenfuß'); +INSERT INTO jetty_kinds VALUES (2, 'Buhnenwurzel'); + +CREATE SEQUENCE JETTIES_ID_SEQ; +CREATE TABLE jetties ( + OGR_FID NUMBER(38), + GEOM MDSYS.SDO_GEOMETRY, + id NUMBER PRIMARY KEY NOT NULL, + river_id NUMBER(38) REFERENCES rivers(id) ON DELETE CASCADE, + path VARCHAR(256), + kind_id NUMBER(38) REFERENCES jetty_kinds(id), + km NUMBER(7,3), + z NUMBER(38,12) +); +INSERT INTO USER_SDO_GEOM_METADATA VALUES ('jetties', 'GEOM', MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',3282450,3912240,0.001),MDSYS.SDO_DIM_ELEMENT('Y',5248260,6100130,0.001),MDSYS.SDO_DIM_ELEMENT('Z',-100000,100000,0.002)), 31467); +CREATE OR REPLACE TRIGGER jetties_trigger BEFORE INSERT ON jetties FOR EACH ROW + BEGIN + SELECT JETTIES_ID_SEQ.nextval INTO :new.id FROM dual; + END; +/ diff -r ee7b0306b2bf -r 55122db34cd0 flys-backend/doc/schema/oracle-spatial_idx.sql --- a/flys-backend/doc/schema/oracle-spatial_idx.sql Thu Mar 14 12:49:41 2013 +0100 +++ b/flys-backend/doc/schema/oracle-spatial_idx.sql Thu Mar 14 12:53:36 2013 +0100 @@ -12,7 +12,7 @@ -- TODO: index prevents importing on 11g. -- Error: "Ebenendimensionalitat stimmt nicht mit Geometrie-Dimensionen uberein" --- CREATE INDEX river_axes_spatial_idx ON river_axes(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=LINE'); +-- CREATE INDEX river_axes_spatial_idx ON river_axes(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=MULTILINE'); -- TODO: index prevents importing on 11g. -- Error: "Ebenendimensionalitat stimmt nicht mit Geometrie-Dimensionen uberein" @@ -26,7 +26,11 @@ 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=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'); +CREATE INDEX jetties_idx ON jetties(GEOM) indextype IS MDSYS.SPATIAL_INDEX parameters ('LAYER_GTYPE=POINT'); + diff -r ee7b0306b2bf -r 55122db34cd0 flys-backend/doc/schema/postgresql-setup.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-backend/doc/schema/postgresql-setup.sh Thu Mar 14 12:53:36 2013 +0100 @@ -0,0 +1,27 @@ +#!/bin/bash + +# $1: user name and password for new DB (equals DB name) +# $2: path to directory with schema-scripts +# $3: host + +# run as user postgres (postgresql super-user) +# it is assumed that the owner of the DB has the same name as the DB! + +# create PostGIS-DB +createuser -S -D -R $1 +createdb $1 +createlang plpgsql $1 +# Appears e.g. as /usr/share/postgresql/contrib/postgis-1.5/ on other systems. +psql -d $1 -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql +psql -d $1 -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql +psql -d $1 -c "ALTER USER $1 WITH PASSWORD '$1';" +psql -d $1 -c "GRANT ALL ON geometry_columns TO $1; GRANT ALL ON geography_columns TO $1; GRANT ALL ON spatial_ref_sys TO $1;" + +# add credentials to .pgpass (or create .pgpass) +echo "*:*:$1:$1:$1" >> ~/.pgpass +chmod 0600 ~/.pgpass + +# apply schema-scripts +psql -d $1 -U $1 -h $3 -f $2/postgresql.sql +psql -d $1 -U $1 -h $3 -f $2/postgresql-spatial.sql +psql -d $1 -U $1 -h $3 -f $2/postgresql-minfo.sql diff -r ee7b0306b2bf -r 55122db34cd0 flys-backend/doc/schema/postgresql-spatial.sql --- a/flys-backend/doc/schema/postgresql-spatial.sql Thu Mar 14 12:49:41 2013 +0100 +++ b/flys-backend/doc/schema/postgresql-spatial.sql Thu Mar 14 12:53:36 2013 +0100 @@ -112,8 +112,8 @@ river_id int REFERENCES rivers(id) ON DELETE CASCADE, -- XXX Should we use the ranges table instead? name VARCHAR(64), - range_id INT REFERENCES ranges(id); - time_interval_id INT REFERENCES time_intervals(id); + range_id INT REFERENCES ranges(id), + time_interval_id INT REFERENCES time_intervals(id), projection VARCHAR(32), srid int NOT NULL, elevation_state VARCHAR(32), @@ -300,4 +300,26 @@ SELECT AddGeometryColumn('gauge_location','geom',31467,'POINT',2); ALTER TABLE gauge_location ALTER COLUMN id SET DEFAULT NEXTVAL('GAUGE_LOCATION_ID_SEQ'); + +CREATE TABLE jetty_kinds( + id int PRIMARY KEY NOT NULL, + name VARCHAR(64) +); +INSERT INTO jetty_kinds VALUES (0, 'Buhnenkopf'); +INSERT INTO jetty_kinds VALUES (1, 'Buhnenfuß'); +INSERT INTO jetty_kinds VALUES (2, 'Buhnenwurzel'); + +CREATE SEQUENCE JETTIES_ID_SEQ; +CREATE TABLE jetties ( + id int PRIMARY KEY NOT NULL, + river_id int REFERENCES rivers(id) ON DELETE CASCADE, + path VARCHAR(256), + kind_id int REFERENCES jetty_kinds(id), + km FLOAT8, + z FLOAT8 +); +SELECT AddGeometryColumn('jetties','geom',31467,'POINT',2); +ALTER TABLE jetties ALTER COLUMN id SET DEFAULT NEXTVAL('JETTIES_ID_SEQ'); + + COMMIT;