Mercurial > dive4elements > gnv-client
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 " + |