Revision 40664
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.geometry/org.gvsig.fmap.geometry.operation/src/main/java/org/gvsig/fmap/geom/operation/fromwkt/WKTParser.java | ||
---|---|---|
30 | 30 |
import java.util.ArrayList; |
31 | 31 |
|
32 | 32 |
import org.gvsig.fmap.geom.Geometry; |
33 |
import org.gvsig.fmap.geom.GeometryException; |
|
33 | 34 |
import org.gvsig.fmap.geom.GeometryLocator; |
34 | 35 |
import org.gvsig.fmap.geom.GeometryManager; |
35 | 36 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
... | ... | |
38 | 39 |
import org.gvsig.fmap.geom.aggregate.MultiPoint; |
39 | 40 |
import org.gvsig.fmap.geom.aggregate.MultiSurface; |
40 | 41 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
42 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
|
41 | 43 |
import org.gvsig.fmap.geom.primitive.Curve; |
42 | 44 |
import org.gvsig.fmap.geom.primitive.GeneralPathX; |
43 | 45 |
import org.gvsig.fmap.geom.primitive.Point; |
44 | 46 |
import org.gvsig.fmap.geom.primitive.Surface; |
47 |
import org.gvsig.tools.exception.BaseException; |
|
45 | 48 |
|
46 | 49 |
import com.vividsolutions.jts.geom.Coordinate; |
47 | 50 |
import com.vividsolutions.jts.io.ParseException; |
... | ... | |
470 | 473 |
if (nextToken.equals("EMPTY")) { |
471 | 474 |
return null; |
472 | 475 |
} |
473 |
ArrayList holes = new ArrayList(); |
|
476 |
|
|
474 | 477 |
Surface shell = readLinearRingText(tokenizer); |
478 |
Surface hole = null; |
|
475 | 479 |
nextToken = getNextCloserOrComma(tokenizer); |
476 |
while (nextToken.equals(",")) { |
|
477 |
Geometry hole = readLinearRingText(tokenizer); |
|
478 |
holes.add(hole); |
|
479 |
nextToken = getNextCloserOrComma(tokenizer); |
|
480 |
|
|
481 |
try { |
|
482 |
while (nextToken.equals(",")) { |
|
483 |
hole = readLinearRingText(tokenizer); |
|
484 |
if (shell.contains(hole)) { |
|
485 |
shell = (Surface) shell.difference(hole); |
|
486 |
} else { |
|
487 |
throw new CreateGeometryException( |
|
488 |
Geometry.TYPES.SURFACE, |
|
489 |
Geometry.SUBTYPES.GEOM2D, |
|
490 |
new Exception("Hole not in shell.")); |
|
491 |
|
|
492 |
} |
|
493 |
nextToken = getNextCloserOrComma(tokenizer); |
|
494 |
} |
|
495 |
} catch (BaseException ge) { |
|
496 |
throw new CreateGeometryException( |
|
497 |
Geometry.TYPES.SURFACE, |
|
498 |
Geometry.SUBTYPES.GEOM2D, ge); |
|
480 | 499 |
} |
481 |
// LinearRing[] array = new LinearRing[holes.size()]; |
|
482 | 500 |
return shell; //geometryFactory.createPolygon(shell, (LinearRing[]) holes.toArray(array)); |
483 | 501 |
} |
484 | 502 |
|
Also available in: Unified diff