diff --git a/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactory.java b/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactory.java index e402d1d53..02576580e 100644 --- a/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactory.java +++ b/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactory.java @@ -107,10 +107,16 @@ public void insertTrainDirectivity() { @Override public void initialize(Connection connection, PointNoiseMap pointNoiseMap) throws SQLException { + this.srid = GeometryTableUtilities.getSRID(connection, pointNoiseMap.getSourcesTableName()); + if(this.srid == 0) { + this.srid = GeometryTableUtilities.getSRID(connection, pointNoiseMap.getBuildingsTableName()); + } + if(this.srid == 0) { + this.srid = GeometryTableUtilities.getSRID(connection, pointNoiseMap.getReceiverTableName()); + } if(ldenConfig.input_mode == LDENConfig.INPUT_MODE.INPUT_MODE_LW_DEN) { // Fetch source fields List sourceField = JDBCUtilities.getColumnNames(connection, pointNoiseMap.getSourcesTableName()); - this.srid = GeometryTableUtilities.getSRID(connection, pointNoiseMap.getSourcesTableName()); List frequencyValues = new ArrayList<>(); List allFrequencyValues = Arrays.asList(CnossosPropagationData.DEFAULT_FREQUENCIES_THIRD_OCTAVE); String period = ""; diff --git a/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/PointNoiseMap.java b/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/PointNoiseMap.java index c80ec281b..b228a9c19 100644 --- a/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/PointNoiseMap.java +++ b/noisemodelling-jdbc/src/main/java/org/noise_planet/noisemodelling/jdbc/PointNoiseMap.java @@ -62,6 +62,13 @@ public ProfilerThread getProfilerThread() { return profilerThread; } + /** + * @return Receiver table name + */ + public String getReceiverTableName() { + return receiverTableName; + } + /** * Computation stacks and timing are collected by this class in order * to profile the execution of the simulation diff --git a/noisemodelling-jdbc/src/test/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactoryTest.java b/noisemodelling-jdbc/src/test/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactoryTest.java index 85b7e860b..2c56f7a3c 100644 --- a/noisemodelling-jdbc/src/test/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactoryTest.java +++ b/noisemodelling-jdbc/src/test/java/org/noise_planet/noisemodelling/jdbc/LDENPointNoiseMapFactoryTest.java @@ -8,6 +8,7 @@ import org.h2gis.functions.io.dbf.DBFRead; import org.h2gis.functions.io.shp.SHPDriverFunction; import org.h2gis.functions.io.shp.SHPRead; +import org.h2gis.utilities.GeometryTableUtilities; import org.h2gis.utilities.JDBCUtilities; import org.junit.After; import org.junit.Before; @@ -1075,7 +1076,7 @@ public void TestPointSource() throws SQLException, IOException { connection.createStatement().execute("SELECT UpdateGeometrySRID('RCVSCIRCLE', 'THE_GEOM', 2154);"); - connection.createStatement().execute("CREATE TABLE RECEIVERS(PK SERIAL PRIMARY KEY, the_geom GEOMETRY(POINTZ) ) AS SELECT (row_number() over())::int, ST_UPDATEZ(ST_FORCE3D(THE_GEOM),5.0) FROM RCVSCIRCLE;"); + connection.createStatement().execute("CREATE TABLE RECEIVERS(PK SERIAL PRIMARY KEY, the_geom GEOMETRY(POINTZ, 2154) ) AS SELECT (row_number() over())::int, ST_UPDATEZ(ST_FORCE3D(THE_GEOM),5.0) FROM RCVSCIRCLE;"); // connection.createStatement().execute("UPDATE RCVS20 SET THE_GEOM = ST_UPDATEZ(ST_FORCE3D(THE_GEOM),5.0);"); connection.createStatement().execute("UPDATE SOURCESI SET THE_GEOM = ST_UPDATEZ(THE_GEOM,10.0);"); connection.createStatement().execute("SELECT UpdateGeometrySRID('NO_BUILD', 'THE_GEOM', 2154);"); @@ -1136,6 +1137,8 @@ public void TestPointSource() throws SQLException, IOException { assertEquals(4361, rs.getInt(1)); } + assertEquals(2154, GeometryTableUtilities.getSRID(connection, ldenConfig.lDayTable)); + try(ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM "+ ldenConfig.lDayTable+" ORDER BY IDRECEIVER")) { assertTrue(rs.next()); assertEquals(1, rs.getInt("IDRECEIVER"));