Issue #2333 Updated upgrade script to only run against entries in satellite_spatial that have not already been updated. This is so the upgrade script won't break the satellite data if it has already been ran

Change-Id: Ibe2206e584e89a40d4cdd1a2b50e91e10c885ae0

Former-commit-id: a0abc34322 [formerly 06603cabe5] [formerly fbc06d81f7] [formerly a0abc34322 [formerly 06603cabe5] [formerly fbc06d81f7] [formerly 41b6f79c52 [formerly fbc06d81f7 [formerly 2957c9c40fe85cbe5bd90c5f6444fce1f9ffdcf1]]]]
Former-commit-id: 41b6f79c52
Former-commit-id: 0b80a9f69a [formerly 3aa9f8cc42] [formerly 2d15674f89c9b59567e7509f08ac8ada299b6ac8 [formerly dd99767050]]
Former-commit-id: 68356d2d826fc2f0b0e93b5ab0c894325565c849 [formerly 239d0e52ea]
Former-commit-id: 11980c92ae
This commit is contained in:
Max Schenkelberg 2013-10-11 12:14:21 -05:00
parent 445acd4997
commit 332c2d91a1
2 changed files with 60 additions and 41 deletions

View file

@ -82,6 +82,8 @@ public class UpdateSatSpatial {
private static final String SATELLITE_SPATIAL_MINY = "miny"; private static final String SATELLITE_SPATIAL_MINY = "miny";
private static final String SATELLITE_SPATIAL_MINIMUMS = "minimums";
private static final String HOST_ARGUMENT = "-host"; private static final String HOST_ARGUMENT = "-host";
private static final String DEFAULT_HOST = "localhost"; private static final String DEFAULT_HOST = "localhost";
@ -158,12 +160,16 @@ public class UpdateSatSpatial {
Connection conn = openConnection(); Connection conn = openConnection();
Statement query = conn.createStatement(); Statement query = conn.createStatement();
ResultSet results = query.executeQuery("SELECT "
+ SATELLITE_SPATIAL_GID + ", " + SATELLITE_SPATIAL_CRSWKT ResultSet results = query.executeQuery("SELECT ("
+ ", " + SATELLITE_SPATIAL_NX + ", " + SATELLITE_SPATIAL_NY + SATELLITE_SPATIAL_MINX + " || '_' || "
+ ", " + SATELLITE_SPATIAL_DX + ", " + SATELLITE_SPATIAL_DY + SATELLITE_SPATIAL_MINY + ") as " + SATELLITE_SPATIAL_MINIMUMS
+ ", AsBinary(" + SATELLITE_SPATIAL_GEOM + ") as " + ", " + SATELLITE_SPATIAL_GID + ", "
+ SATELLITE_SPATIAL_GEOM + " FROM " + SATELLITE_SPATIAL_TABLE); + SATELLITE_SPATIAL_CRSWKT + ", " + SATELLITE_SPATIAL_NX + ", "
+ SATELLITE_SPATIAL_NY + ", " + SATELLITE_SPATIAL_DX + ", "
+ SATELLITE_SPATIAL_DY + ", AsBinary(" + SATELLITE_SPATIAL_GEOM
+ ") as " + SATELLITE_SPATIAL_GEOM + " FROM "
+ SATELLITE_SPATIAL_TABLE);
String updateStatement = "UPDATE " + SATELLITE_SPATIAL_TABLE + " SET (" String updateStatement = "UPDATE " + SATELLITE_SPATIAL_TABLE + " SET ("
+ SATELLITE_SPATIAL_MINX + ", " + SATELLITE_SPATIAL_MINY + ", " + SATELLITE_SPATIAL_MINX + ", " + SATELLITE_SPATIAL_MINY + ", "
@ -174,45 +180,58 @@ public class UpdateSatSpatial {
while (results.next()) { while (results.next()) {
int gid = results.getInt(SATELLITE_SPATIAL_GID); int gid = results.getInt(SATELLITE_SPATIAL_GID);
Geometry geometry = new WKBReader().read(results String mins = results.getString(SATELLITE_SPATIAL_MINIMUMS);
.getBytes(SATELLITE_SPATIAL_GEOM)); if (mins == null || mins.isEmpty()) {
CoordinateReferenceSystem crs = CRS.parseWKT(results System.out
.getString(SATELLITE_SPATIAL_CRSWKT)); .println("Upgrading satellite_spatial record: " + gid);
int nx = results.getInt(SATELLITE_SPATIAL_NX); // No minimum values set, continue with upgrade
int ny = results.getInt(SATELLITE_SPATIAL_NY); Geometry geometry = new WKBReader().read(results
double dx = results.getDouble(SATELLITE_SPATIAL_DX); .getBytes(SATELLITE_SPATIAL_GEOM));
double dy = results.getDouble(SATELLITE_SPATIAL_DY); CoordinateReferenceSystem crs = CRS.parseWKT(results
.getString(SATELLITE_SPATIAL_CRSWKT));
int nx = results.getInt(SATELLITE_SPATIAL_NX);
int ny = results.getInt(SATELLITE_SPATIAL_NY);
double dx = results.getDouble(SATELLITE_SPATIAL_DX);
double dy = results.getDouble(SATELLITE_SPATIAL_DY);
ISpatialObject object = new SpatialObject(nx, ny, geometry, crs); ISpatialObject object = new SpatialObject(nx, ny, geometry, crs);
GridGeometry2D resultGeom = MapUtil.getGridGeometry(object); GridGeometry2D resultGeom = MapUtil.getGridGeometry(object);
Envelope2D env = resultGeom.getEnvelope2D(); Envelope2D env = resultGeom.getEnvelope2D();
GridEnvelope2D grid = resultGeom.getGridRange2D(); GridEnvelope2D grid = resultGeom.getGridRange2D();
double minX = env.getMinX(); double minX = env.getMinX();
double minY = env.getMinY(); double minY = env.getMinY();
if (dx == 0.0) { if (dx == 0.0) {
dx = env.getWidth() / grid.width; dx = env.getWidth() / grid.width;
}
if (dy == 0.0) {
dy = env.getHeight() / grid.height;
}
Geometry newGeom = EnvelopeIntersection
.createEnvelopeIntersection(
resultGeom.getEnvelope(),
new Envelope2D(DefaultGeographicCRS.WGS84,
-180, -90, 360, 180), 1.0, 10, 10)
.getEnvelope();
PreparedStatement update = conn
.prepareStatement(updateStatement);
int index = 1;
update.setDouble(index++, minX);
update.setDouble(index++, minY);
update.setDouble(index++, dx);
update.setDouble(index++, dy);
update.setString(index++, newGeom.toText());
update.setInt(index++, gid);
update.execute();
} else {
System.err
.println("Skipping update of satellite_spatial record: "
+ gid);
} }
if (dy == 0.0) {
dy = env.getHeight() / grid.height;
}
Geometry newGeom = EnvelopeIntersection.createEnvelopeIntersection(
resultGeom.getEnvelope(),
new Envelope2D(DefaultGeographicCRS.WGS84, -180, -90, 360,
180), 1.0, 10, 10).getEnvelope();
PreparedStatement update = conn.prepareStatement(updateStatement);
int index = 1;
update.setDouble(index++, minX);
update.setDouble(index++, minY);
update.setDouble(index++, dx);
update.setDouble(index++, dy);
update.setString(index++, newGeom.toText());
update.setInt(index++, gid);
update.execute();
} }
conn.close(); conn.close();