Revision 23
trunk/org.gvsig.postgresql/org.gvsig.postgresql.provider/src/main/java/org/gvsig/fmap/dal/store/postgresql/PostgreSQLHelper.java | ||
---|---|---|
60 | 60 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
61 | 61 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
62 | 62 |
import org.gvsig.fmap.dal.feature.FeatureType; |
63 |
import org.gvsig.fmap.dal.feature.exception.CreateGeometryException; |
|
63 | 64 |
import org.gvsig.fmap.dal.feature.exception.UnsupportedDataTypeException; |
64 | 65 |
import org.gvsig.fmap.dal.feature.exception.UnsupportedGeometryException; |
65 | 66 |
import org.gvsig.fmap.dal.resource.ResourceAction; |
... | ... | |
76 | 77 |
import org.gvsig.fmap.geom.Geometry; |
77 | 78 |
import org.gvsig.fmap.geom.GeometryLocator; |
78 | 79 |
import org.gvsig.fmap.geom.GeometryManager; |
80 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
|
81 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
|
79 | 82 |
import org.gvsig.fmap.geom.operation.fromwkb.FromWKB; |
80 | 83 |
import org.gvsig.fmap.geom.operation.fromwkb.FromWKBGeometryOperationContext; |
81 | 84 |
import org.gvsig.fmap.geom.primitive.Envelope; |
... | ... | |
153 | 156 |
throws DataException { |
154 | 157 |
|
155 | 158 |
StringBuilder strb = new StringBuilder(); |
156 |
strb.append("Select asbinary(extent(");
|
|
159 |
strb.append("Select ST_asbinary(ST_extent(");
|
|
157 | 160 |
strb.append(escapeFieldName(geometryAttrName)); |
158 | 161 |
strb.append(")) from "); |
159 | 162 |
|
... | ... | |
166 | 169 |
strb.append(storeParams.tableID()); |
167 | 170 |
} |
168 | 171 |
|
169 |
|
|
170 | 172 |
if (limit != null){ |
171 |
strb.append(" where intersects(GeomFromText('"); |
|
172 |
strb.append(limit.toString()); |
|
173 |
strb.append("')), envelope("); |
|
173 |
strb.append(" where ST_intersects(ST_GeomFromText('"); |
|
174 |
String workAreaWkt = null; |
|
175 |
try { |
|
176 |
workAreaWkt = limit.getGeometry().convertToWKT(); |
|
177 |
} catch (Exception e) { |
|
178 |
throw new CreateGeometryException(e); |
|
179 |
} |
|
180 |
strb.append(workAreaWkt); |
|
181 |
strb.append("', "); |
|
182 |
|
|
183 |
IProjection proj = storeParams.getCRS(); |
|
184 |
int sridInt = this.getProviderSRID(proj); |
|
185 |
if (sridInt == -1) { |
|
186 |
throw new CreateGeometryException( |
|
187 |
new Exception("CRS is null or unknown.")); |
|
188 |
} else { |
|
189 |
strb.append(Integer.toString(sridInt)); |
|
190 |
} |
|
191 |
strb.append("), ST_envelope("); |
|
174 | 192 |
strb.append(escapeFieldName(geometryAttrName)); |
175 | 193 |
strb.append(")) "); |
176 | 194 |
} |
Also available in: Unified diff