Revision 163
org.gvsig.dgn/trunk/org.gvsig.dgn/org.gvsig.dgn.provider/src/main/java/org/gvsig/fmap/dal/store/dgn/DGNStoreProvider.java | ||
---|---|---|
65 | 65 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
66 | 66 |
import org.gvsig.fmap.geom.primitive.Envelope; |
67 | 67 |
import org.gvsig.fmap.geom.primitive.GeneralPathX; |
68 |
import org.gvsig.fmap.geom.primitive.IGeneralPathX; |
|
68 | 69 |
import org.gvsig.fmap.geom.primitive.OrientablePrimitive; |
69 | 70 |
import org.gvsig.fmap.geom.primitive.Point; |
70 | 71 |
import org.gvsig.fmap.geom.type.GeometryType; |
... | ... | |
777 | 778 |
OrientablePrimitive geom = null; |
778 | 779 |
subtypeElement = getGeometrySubType(dgnmultipoint); |
779 | 780 |
if (dgnmultipoint.isPolygon()) { |
780 |
geom = (OrientablePrimitive) geomManager.createPolygon(subtypeHeader);
|
|
781 |
geom = geomManager.createPolygon(subtypeHeader); |
|
781 | 782 |
} else { |
782 |
geom = (OrientablePrimitive) geomManager.createLine(subtypeHeader);
|
|
783 |
geom = geomManager.createLine(subtypeHeader); |
|
783 | 784 |
} |
784 | 785 |
|
785 | 786 |
// Si es una curva nos saltamos los dos primeros y los dos ultimos vertices. |
... | ... | |
830 | 831 |
2.0 * dgnarc.secondary_axis, |
831 | 832 |
-dgnarc.startang, -dgnarc.sweepang, |
832 | 833 |
Arc2D.OPEN); |
833 |
|
|
834 |
|
|
834 | 835 |
zvalue = dgnarc.origin.getZ(); |
835 | 836 |
|
836 | 837 |
PathIterator pathIterator = elArco.getPathIterator(null); |
837 |
GeneralPathX elShapeArc = new GeneralPathX(pathIterator); |
|
838 |
IGeneralPathX elShapeArc = geomManager.createGeneralPath( |
|
839 |
IGeneralPathX.WIND_EVEN_ODD, |
|
840 |
pathIterator |
|
841 |
); |
|
838 | 842 |
|
839 | 843 |
// Transformamos el GeneralPahtX porque si transformamos |
840 | 844 |
// elArco nos lo convierte a GeneralPath y nos guarda las coordenadas en float, |
... | ... | |
844 | 848 |
OrientablePrimitive geom = null; |
845 | 849 |
subtypeElement = getGeometrySubType(dgnarc); |
846 | 850 |
if (dgnarc.isSurface()) { |
847 |
geom = (OrientablePrimitive) geomManager.create( |
|
848 |
Geometry.TYPES.SURFACE, subtypeHeader); |
|
851 |
geom = geomManager.createPolygon(subtypeElement); |
|
849 | 852 |
} else { |
850 |
geom = (OrientablePrimitive) geomManager.create( |
|
851 |
Geometry.TYPES.CURVE, subtypeHeader); |
|
853 |
geom = geomManager.createLine(subtypeElement); |
|
852 | 854 |
} |
853 |
geom.setGeneralPath(elShapeArc); |
|
854 |
if ((subtypeElement == Geometry.SUBTYPES.GEOM3D || subtypeElement == Geometry.SUBTYPES.GEOM3DM) |
|
855 |
&& !ignoreZs) { |
|
856 |
for (int i = 0; i < geom.getNumVertices(); i++) { |
|
857 |
Point originalvertex = geom.getVertex(i); |
|
858 |
Point vertex = |
|
859 |
(Point) geomManager.create(Geometry.TYPES.POINT, subtypeElement); |
|
860 |
vertex.setCoordinateAt(0,originalvertex.getX()); |
|
861 |
vertex.setCoordinateAt(1,originalvertex.getY()); |
|
862 |
vertex.setCoordinateAt(2, zvalue); |
|
863 |
geom.setVertex(i, vertex); |
|
855 |
for( int i=0; i<elShapeArc.getNumCoords(); i++ ) { |
|
856 |
double[] coords = elShapeArc.getCoordinatesAt(i); |
|
857 |
if( ignoreZs || subtypeElement == Geometry.SUBTYPES.GEOM2D || subtypeElement == Geometry.SUBTYPES.GEOM2DM) { |
|
858 |
geom.addVertex(coords[0], coords[1]); |
|
859 |
} else { |
|
860 |
geom.addVertex(coords[0], coords[1],zvalue); |
|
864 | 861 |
} |
865 |
} else { |
|
866 |
//do nothing |
|
867 |
int a=0; |
|
862 |
|
|
868 | 863 |
} |
869 |
|
|
870 | 864 |
data.setDefaultGeometry(geom); |
871 | 865 |
break; |
872 | 866 |
|
... | ... | |
1039 | 1033 |
// int numSubElementos = 0; |
1040 | 1034 |
int complex_index_fill_color = -1; |
1041 | 1035 |
int nClass; // Para filtrar los elementos de construcci?n, etc. |
1042 |
GeneralPathX elementoCompuesto = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD);
|
|
1036 |
IGeneralPathX elementoCompuesto = geomManager.createGeneralPath(IGeneralPathX.WIND_EVEN_ODD, null);
|
|
1043 | 1037 |
|
1044 | 1038 |
int counterOfElement = 0; |
1045 | 1039 |
DGNElemComplexHeader parentElement = null; |
... | ... | |
1108 | 1102 |
auxRow, type, dgnReader); |
1109 | 1103 |
} |
1110 | 1104 |
|
1111 |
elementoCompuesto = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD);
|
|
1105 |
elementoCompuesto = geomManager.createGeneralPath(IGeneralPathX.WIND_EVEN_ODD, null);
|
|
1112 | 1106 |
} |
1113 | 1107 |
|
1114 | 1108 |
bElementoCompuesto = false; |
... | ... | |
1209 | 1203 |
auxRow, |
1210 | 1204 |
type, dgnReader); |
1211 | 1205 |
} else { |
1212 |
GeneralPathX elShape = new GeneralPathX(GeneralPathX.WIND_EVEN_ODD);
|
|
1206 |
IGeneralPathX elShape = geomManager.createGeneralPath(IGeneralPathX.WIND_EVEN_ODD, null);
|
|
1213 | 1207 |
|
1214 | 1208 |
if (psLine.type == DGNFileHeader.DGNT_CURVE) { |
1215 | 1209 |
psLine.num_vertices = psLine.num_vertices - 4; |
... | ... | |
1313 | 1307 |
// Ellipse2D.Double(psArc.origin.x - psArc.primary_axis, |
1314 | 1308 |
// psArc.origin.y - psArc.secondary_axis,2.0 * |
1315 | 1309 |
// psArc.primary_axis, 2.0 * psArc.secondary_axis); |
1316 |
GeneralPathX elShapeArc = new GeneralPathX(elArco.getPathIterator(null)); |
|
1310 |
IGeneralPathX elShapeArc = geomManager.createGeneralPath( |
|
1311 |
IGeneralPathX.WIND_EVEN_ODD, |
|
1312 |
elArco.getPathIterator(null) |
|
1313 |
); |
|
1317 | 1314 |
|
1318 | 1315 |
// Transformamos el GeneralPahtX porque si transformamos |
1319 | 1316 |
// elArco nos lo convierte |
... | ... | |
1432 | 1429 |
|
1433 | 1430 |
} |
1434 | 1431 |
|
1435 |
private Geometry createMultiSurface(GeneralPathX elementoCompuesto) |
|
1432 |
private Geometry createMultiSurface(IGeneralPathX elementoCompuesto)
|
|
1436 | 1433 |
throws DataException { |
1437 | 1434 |
try { |
1438 |
return geomManager.createMultiSurface(elementoCompuesto, |
|
1439 |
SUBTYPES.GEOM2D); |
|
1435 |
return geomManager.createMultiSurface( |
|
1436 |
(GeneralPathX) elementoCompuesto, |
|
1437 |
SUBTYPES.GEOM2D |
|
1438 |
); |
|
1440 | 1439 |
} catch (CreateGeometryException e) { |
1441 | 1440 |
throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException( |
1442 | 1441 |
e); |
... | ... | |
1488 | 1487 |
addFeature(data, dgnReader); |
1489 | 1488 |
} |
1490 | 1489 |
|
1491 |
private Geometry createMultiCurve(GeneralPathX elementoCompuesto) |
|
1490 |
private Geometry createMultiCurve(IGeneralPathX elementoCompuesto)
|
|
1492 | 1491 |
throws DataException { |
1493 | 1492 |
try { |
1494 |
return geomManager.createMultiCurve(elementoCompuesto, |
|
1493 |
return geomManager.createMultiCurve((GeneralPathX) elementoCompuesto,
|
|
1495 | 1494 |
SUBTYPES.GEOM2D); |
1496 | 1495 |
} catch (CreateGeometryException e) { |
1497 | 1496 |
throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException( |
... | ... | |
1499 | 1498 |
} |
1500 | 1499 |
} |
1501 | 1500 |
|
1502 |
private Geometry createSurface(GeneralPathX elementoCompuesto) |
|
1501 |
private Geometry createSurface(IGeneralPathX elementoCompuesto)
|
|
1503 | 1502 |
throws DataException { |
1504 | 1503 |
try { |
1505 |
return geomManager.createCurve(elementoCompuesto, |
|
1504 |
return geomManager.createCurve((GeneralPathX) elementoCompuesto,
|
|
1506 | 1505 |
SUBTYPES.GEOM2D); |
1507 | 1506 |
} catch (CreateGeometryException e) { |
1508 | 1507 |
throw new org.gvsig.fmap.dal.feature.exception.CreateGeometryException( |
Also available in: Unified diff