comparison geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/Row.java @ 878:203f95af5b2c

Added support for MultiLineString-Geometries. geo-backend/trunk@762 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Fri, 12 Mar 2010 10:58:24 +0000
parents 3d0c06f99686
children 12f88239fb33
comparison
equal deleted inserted replaced
877:485566786089 878:203f95af5b2c
253 }else if (val.isLine() || val.isSimpleLine()){ 253 }else if (val.isLine() || val.isSimpleLine()){
254 // Cannot use val.asText() because the 254 // Cannot use val.asText() because the
255 // generated WKT is invalid. 255 // generated WKT is invalid.
256 ArrayList aList = val.getAllPoints(0,false); 256 ArrayList aList = val.getAllPoints(0,false);
257 SDEPoint[] mPoint = (SDEPoint[])aList.get(0); 257 SDEPoint[] mPoint = (SDEPoint[])aList.get(0);
258 returnValue.append("LINESTRING("); 258 boolean isMultiLineString = val.isMultiPart();
259 for (int i = 0; i< mPoint.length;i++){ 259 int length = mPoint.length;
260 int nextOffset = length;
261 int[] offsets = (int[])aList.get(1);
262 int offsetPos = 1;
263
264 if(isMultiLineString){
265 returnValue.append("MULTILINESTRING((");
266 nextOffset = offsets.length-1 >= offsetPos ? offsets[offsetPos++] : length;
267 }else{
268 returnValue.append("LINESTRING(");
269 }
270
271
272
273 for (int i = 0; i< length;i++){
274
275 if (i == nextOffset){
276 returnValue.append("),(");
277 nextOffset = offsets.length-1 >= offsetPos ? offsets[offsetPos++] : length;
278 }
279
260 returnValue.append(mPoint[i].getX()) 280 returnValue.append(mPoint[i].getX())
261 .append(" ") 281 .append(" ")
262 .append(mPoint[i].getY()); 282 .append(mPoint[i].getY());
263 if (mPoint[i].is3D()){ 283 if (mPoint[i].is3D()){
264 returnValue.append(" ").append(mPoint[i].getZ()); 284 returnValue.append(" ").append(mPoint[i].getZ());
265 } 285 }
266 if (i < mPoint.length-1){ 286 if (i < length-1 && i < nextOffset -1){
267 returnValue.append(" , "); 287 returnValue.append(" , ");
268 } 288 }
269 } 289 }
270 returnValue.append(")"); 290
291 if(isMultiLineString){
292 returnValue.append("))");
293 }else{
294 returnValue.append(")");
295 }
296
271 } else{ 297 } else{
272 returnValue.append(val.asText(val.getTextSize())); 298 returnValue.append(val.asText(val.getTextSize()));
273 } 299 }
274 } catch (SeException e) { 300 } catch (SeException e) {
275 throw new TechnicalException("Could not cast this value to the " + 301 throw new TechnicalException("Could not cast this value to the " +

http://dive4elements.wald.intevation.org