Author: jdeolive
Date: 2012-06-29 07:30:32 -0700 (Fri, 29 Jun 2012)
New Revision: 38850
Modified:
trunk/modules/library/jdbc/src/test/java/org/geotools/jdbc/JDBCDataStoreTest.java
trunk/modules/plugin/jdbc/jdbc-oracle/src/main/java/org/geotools/data/oracle/OracleDialect.java
trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java
Log:
GEOT-4183, handling createSchema with crs with infinate bounds
Modified: trunk/modules/library/jdbc/src/test/java/org/geotools/jdbc/JDBCDataStoreTest.java
===================================================================
--- trunk/modules/library/jdbc/src/test/java/org/geotools/jdbc/JDBCDataStoreTest.java 2012-06-29 13:23:33 UTC (rev 38849)
+++ trunk/modules/library/jdbc/src/test/java/org/geotools/jdbc/JDBCDataStoreTest.java 2012-06-29 14:30:32 UTC (rev 38850)
@@ -28,6 +28,7 @@
import org.geotools.data.*;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureSource;
+import org.geotools.feature.NameImpl;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.geotools.referencing.CRS;
import org.opengis.feature.simple.SimpleFeature;
@@ -41,6 +42,7 @@
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.io.WKTReader;
/**
@@ -166,6 +168,43 @@
w.close();
}
+ public void testCreateSchemaUTMCRS() throws Exception {
+ SimpleFeatureTypeBuilder builder = new SimpleFeatureTypeBuilder();
+ builder.setName(tname("ft2"));
+ builder.setNamespaceURI(dataStore.getNamespaceURI());
+ builder.setCRS(CRS.decode("EPSG:26713"));
+ builder.add(aname("geometry"), Point.class);
+ builder.add(aname("intProperty"), Integer.class);
+ builder.add(aname("stringProperty"), String.class);
+
+ SimpleFeatureType featureType = builder.buildFeatureType();
+ dataStore.createSchema(featureType);
+
+ SimpleFeatureType ft2 = dataStore.getSchema(tname("ft2"));
+ assertNotNull(ft2);
+
+ FeatureWriter w = dataStore.getFeatureWriter( tname("ft2"),Transaction.AUTO_COMMIT);
+ w.hasNext();
+
+ //write out a feature with a geomety in teh srs, basically accomodate databases that have
+ // to query the first feature in order to get the srs for the feature type
+ SimpleFeature f = (SimpleFeature) w.next();
+
+ Geometry g = new WKTReader().read("POINT(593493 4914730)");
+ g.setSRID(26713);
+
+ f.setAttribute(0, g);
+ f.setAttribute( 1, new Integer(0));
+ f.setAttribute( 2, "hello");
+ w.write();
+ w.close();
+
+ //clear out the feature type cache
+ dataStore.getEntry(new NameImpl(dataStore.getNamespaceURI(), tname("ft2"))).dispose();
+ ft2 = dataStore.getSchema(tname("ft2"));
+ assertTrue(CRS.equalsIgnoreMetadata(CRS.decode("EPSG:26713"), ft2.getCoordinateReferenceSystem()));
+ }
+
void assertEqualsLax( SimpleFeatureType e, SimpleFeatureType a ) {
if ( e.equals( a ) ) {
return;
Modified: trunk/modules/plugin/jdbc/jdbc-oracle/src/main/java/org/geotools/data/oracle/OracleDialect.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-oracle/src/main/java/org/geotools/data/oracle/OracleDialect.java 2012-06-29 13:23:33 UTC (rev 38849)
+++ trunk/modules/plugin/jdbc/jdbc-oracle/src/main/java/org/geotools/data/oracle/OracleDialect.java 2012-06-29 14:30:32 UTC (rev 38850)
@@ -80,7 +80,7 @@
*/
public class OracleDialect extends PreparedStatementSQLDialect {
- private static final int DEFAULT_AXIS_MAX = 1000000;
+ private static final int DEFAULT_AXIS_MAX = 10000000;
private static final int DEFAULT_AXIS_MIN = -10000000;
Modified: trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java
===================================================================
--- trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java 2012-06-29 13:23:33 UTC (rev 38849)
+++ trunk/modules/plugin/jdbc/jdbc-sqlserver/src/main/java/org/geotools/data/sqlserver/SQLServerDialect.java 2012-06-29 14:30:32 UTC (rev 38850)
@@ -38,6 +38,7 @@
import org.opengis.feature.type.GeometryDescriptor;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.cs.CoordinateSystem;
+import org.opengis.referencing.cs.CoordinateSystemAxis;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
@@ -58,6 +59,9 @@
*/
public class SQLServerDialect extends BasicSQLDialect {
+ private static final int DEFAULT_AXIS_MAX = 10000000;
+ private static final int DEFAULT_AXIS_MIN = -10000000;
+
public SQLServerDialect(JDBCDataStore dataStore) {
super(dataStore);
}
@@ -120,9 +124,19 @@
CoordinateReferenceSystem crs = gd.getCoordinateReferenceSystem();
CoordinateSystem cs = crs.getCoordinateSystem();
if (cs.getDimension() == 2) {
- bbox = "("+cs.getAxis(0).getMinimumValue()+", "+cs.getAxis(1).getMinimumValue();
- bbox += ", "+cs.getAxis(0).getMaximumValue()+", "+cs.getAxis(1).getMaximumValue()+")";
-
+ CoordinateSystemAxis a0 = cs.getAxis(0);
+ CoordinateSystemAxis a1 = cs.getAxis(1);
+ bbox = "(";
+ bbox += (Double.isInfinite(a0.getMinimumValue()) ?
+ DEFAULT_AXIS_MIN : a0.getMinimumValue()) + ", ";
+ bbox += (Double.isInfinite(a1.getMinimumValue()) ?
+ DEFAULT_AXIS_MIN : a1.getMinimumValue()) + ", ";
+
+ bbox += (Double.isInfinite(a0.getMaximumValue()) ?
+ DEFAULT_AXIS_MAX : a0.getMaximumValue()) + ", ";
+ bbox += Double.isInfinite(a1.getMaximumValue()) ?
+ DEFAULT_AXIS_MAX : a1.getMaximumValue();
+ bbox += ")";
}
}
|