diff geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java @ 383:0b813ae17173

Added Point in Polygon Query Support to ArcSDE-Statement-Processing geo-backend/trunk@423 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 15 Dec 2009 10:02:24 +0000
parents 0100ebf6630f
children fac02bf1c685
line wrap: on
line diff
--- a/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java	Fri Dec 11 10:45:18 2009 +0000
+++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/ArcSDEStatement.java	Tue Dec 15 10:02:24 2009 +0000
@@ -24,6 +24,8 @@
 import com.esri.sde.sdk.client.SeShapeFilter;
 import com.esri.sde.sdk.client.SeSqlConstruct;
 import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.geom.Polygon;
 import com.vividsolutions.jts.io.WKTReader;
 
 
@@ -174,7 +176,7 @@
 	                }else{
 	                    wkt = intersectsStmt.substring(intersectsStmt.indexOf("\""), intersectsStmt.lastIndexOf("\"")).replace("\"", "").trim();
 	                }
-	                g = new WKTReader().read(wkt);
+	                g = new WKTReader().read(wkt.toUpperCase());
 	                
 	                if (geometryColumnName == null){
 	                    geometryColumnName = "SHAPE"; // TODO dynamisch aus Intersects auslesen.
@@ -213,9 +215,16 @@
                 
                 SDEPoint[] lPoints = new ArcSDEUtils().createPoints(g);
     
-                shape.generatePolygon(lPoints.length, 1, null, lPoints);
+                int searchMode = SeFilter.METHOD_AI;
+                if (g instanceof Polygon){
+                    shape.generatePolygon(lPoints.length, 1, null, lPoints);
+                }else if (g instanceof Point){
+                    shape.generatePoint(1, lPoints);
+                    searchMode = SeFilter.METHOD_PC;
+                }
+                
                 SeShapeFilter filter = new SeShapeFilter(pLayername[0],
-                        pSpatialColumnName, shape, SeFilter.METHOD_AI);
+                        pSpatialColumnName, shape,searchMode);
                 filters = new SeShapeFilter[1];
                 filters[0] = filter;
             }

http://dive4elements.wald.intevation.org