Revision 71 org.gvsig.dxf/trunk/org.gvsig.dxf/org.gvsig.dxf.provider/src/main/java/org/gvsig/fmap/dal/store/dxf/DXFStoreProvider.java
DXFStoreProvider.java | ||
---|---|---|
75 | 75 |
import org.gvsig.fmap.geom.primitive.Curve; |
76 | 76 |
import org.gvsig.fmap.geom.primitive.Ellipse; |
77 | 77 |
import org.gvsig.fmap.geom.primitive.Envelope; |
78 |
import org.gvsig.fmap.geom.primitive.Line; |
|
78 | 79 |
import org.gvsig.fmap.geom.primitive.OrientablePrimitive; |
79 | 80 |
import org.gvsig.fmap.geom.primitive.Surface; |
80 | 81 |
import org.gvsig.fmap.geom.type.GeometryType; |
... | ... | |
634 | 635 |
|
635 | 636 |
Geometry geometry = null; |
636 | 637 |
|
637 |
if (fea.getGeometry() instanceof Point |
|
638 |
&& !(fea.getGeometry() instanceof org.gvsig.dxf.px.gml.Point3D)) { |
|
639 |
Point point = (Point) fea.getGeometry(); |
|
640 |
Point2D pto = new Point2D.Double(); |
|
641 |
pto = point.get(0); |
|
642 |
|
|
643 |
geometry = gManager.createPoint(pto.getX(), pto.getY(),SUBTYPES.GEOM2D); |
|
644 |
|
|
645 |
if (point.isTextPoint()) { |
|
646 |
/// TODO labeling |
|
647 |
} |
|
648 |
} else if (fea.getGeometry() instanceof org.gvsig.dxf.px.gml.Point3D) { |
|
638 |
if (fea.getGeometry() instanceof org.gvsig.dxf.px.gml.Point3D) { |
|
649 | 639 |
org.gvsig.dxf.px.gml.Point3D point = (org.gvsig.dxf.px.gml.Point3D) fea.getGeometry(); |
650 |
Point3D pto = new Point3D(); |
|
651 |
pto = point.getPoint3D(0); |
|
640 |
Point3D pto = point.getPoint3D(0); |
|
652 | 641 |
org.gvsig.fmap.geom.primitive.Point geom = gManager.createPoint(pto.getX(), pto.getY(),SUBTYPES.GEOM3D); |
653 | 642 |
geom.setCoordinateAt(Geometry.DIMENSIONS.Z, pto.getZ()); |
654 | 643 |
|
... | ... | |
657 | 646 |
if (point.isTextPoint()) { |
658 | 647 |
/// TODO labeling |
659 | 648 |
} |
660 |
} else if (fea.getGeometry() instanceof LineString |
|
661 |
&& !(fea.getGeometry() instanceof LineString3D)) { |
|
662 |
Point2D[] pts = new Point2D[fea.getGeometry().pointNr()]; |
|
663 |
for (int j = 0; j < fea.getGeometry().pointNr(); j++) { |
|
664 |
pts[j] = fea.getGeometry().get(j); |
|
665 |
} |
|
666 | 649 |
|
667 |
Curve curve = (Curve)gManager.create(TYPES.CURVE , SUBTYPES.GEOM2D); |
|
668 |
curve.addMoveToVertex(gManager.createPoint(pts[0].getX(), pts[0].getY(), SUBTYPES.GEOM2D)); |
|
669 |
for (int j = 1; j < pts.length; j++) { |
|
670 |
curve.addVertex(gManager.createPoint(pts[j].getX(), pts[j].getY(), SUBTYPES.GEOM2D)); |
|
671 |
} |
|
650 |
} else if (fea.getGeometry() instanceof Point ) { |
|
651 |
Point point = (Point) fea.getGeometry(); |
|
652 |
Point2D pto = point.get(0); |
|
672 | 653 |
|
673 |
geometry = curve;
|
|
654 |
geometry = gManager.createPoint(pto.getX(), pto.getY(),SUBTYPES.GEOM2D);
|
|
674 | 655 |
|
656 |
if (point.isTextPoint()) { |
|
657 |
/// TODO labeling |
|
658 |
} |
|
659 |
|
|
675 | 660 |
} else if (fea.getGeometry() instanceof LineString3D) { |
676 |
Point3D[] pts = new Point3D[fea.getGeometry().pointNr()];
|
|
661 |
Line line = gManager.createLine(SUBTYPES.GEOM3D);
|
|
677 | 662 |
for (int j = 0; j < fea.getGeometry().pointNr(); j++) { |
678 |
pts[j] = ((LineString3D) fea.getGeometry()).getPoint3D(j); |
|
663 |
Point3D point = ((LineString3D) fea.getGeometry()).getPoint3D(j); |
|
664 |
line.addVertex(point.getX(), point.getY(),point.getZ()); |
|
679 | 665 |
} |
680 |
double[] elevations = new double[pts.length]; |
|
681 |
for (int j = 0; j < pts.length; j++) { |
|
682 |
elevations[j] = pts[j].getZ(); |
|
683 |
} |
|
666 |
geometry = line; |
|
684 | 667 |
|
685 |
Curve curve = (Curve)gManager.create(TYPES.CURVE , SUBTYPES.GEOM2D); |
|
686 |
org.gvsig.fmap.geom.primitive.Point point = gManager.createPoint(pts[0].getX(), pts[0].getY(), SUBTYPES.GEOM3D); |
|
687 |
point.setCoordinateAt(Geometry.DIMENSIONS.Z, elevations[0]); |
|
688 |
curve.addMoveToVertex(point); |
|
689 |
for (int j = 1; j < pts.length; j++) { |
|
690 |
point = gManager.createPoint(pts[j].getX(), pts[j].getY(), SUBTYPES.GEOM3D); |
|
691 |
point.setCoordinateAt(Geometry.DIMENSIONS.Z, elevations[j]); |
|
692 |
curve.addVertex(point); |
|
668 |
} else if (fea.getGeometry() instanceof LineString ) { |
|
669 |
Line line = gManager.createLine(SUBTYPES.GEOM2D); |
|
670 |
for (int j = 0; j < fea.getGeometry().pointNr(); j++) { |
|
671 |
Point2D point = fea.getGeometry().get(j); |
|
672 |
line.addVertex(point.getX(), point.getY()); |
|
693 | 673 |
} |
694 |
geometry = curve;
|
|
674 |
geometry = line;
|
|
695 | 675 |
|
696 |
} else if (fea.getGeometry() instanceof Polygon |
|
697 |
&& !(fea.getGeometry() instanceof Polygon3D)) { |
|
698 |
|
|
699 |
Point2D firstPt = new Point2D.Double(); |
|
700 |
firstPt = fea.getGeometry().get(0); |
|
701 |
Point2D[] pts = new Point2D[fea.getGeometry().pointNr() + 1]; |
|
676 |
} else if (fea.getGeometry() instanceof Polygon3D) { |
|
677 |
org.gvsig.fmap.geom.primitive.Polygon polygon = gManager.createPolygon(SUBTYPES.GEOM3D); |
|
702 | 678 |
for (int j = 0; j < fea.getGeometry().pointNr(); j++) { |
703 |
pts[j] = fea.getGeometry().get(j); |
|
679 |
Point3D point = ((LineString3D) fea.getGeometry()).getPoint3D(j); |
|
680 |
polygon.addVertex(point.getX(), point.getY(),point.getZ()); |
|
704 | 681 |
} |
705 |
pts[fea.getGeometry().pointNr()] = firstPt; |
|
682 |
Point3D point = ((LineString3D) fea.getGeometry()).getPoint3D(0); |
|
683 |
polygon.addVertex(point.getX(), point.getY(),point.getZ()); |
|
684 |
geometry = polygon; |
|
706 | 685 |
|
707 |
Surface surface = (Surface)gManager.create(TYPES.SURFACE , SUBTYPES.GEOM2D); |
|
708 |
surface.addMoveToVertex(gManager.createPoint(pts[0].getX(), pts[0].getY(), SUBTYPES.GEOM2D)); |
|
709 |
for (int j = 1; j < pts.length; j++) { |
|
710 |
surface.addVertex(gManager.createPoint(pts[j].getX(), pts[j].getY(), SUBTYPES.GEOM2D)); |
|
711 |
} |
|
712 |
surface.closePrimitive(); |
|
713 |
|
|
714 |
geometry = surface; |
|
715 |
|
|
716 |
} else if (fea.getGeometry() instanceof Polygon3D) { |
|
717 |
Point3D firstPt = new Point3D(); |
|
718 |
firstPt = ((Polygon3D) fea.getGeometry()).getPoint3D(0); |
|
719 |
Point3D[] pts = new Point3D[fea.getGeometry().pointNr() + 1]; |
|
686 |
} else if (fea.getGeometry() instanceof Polygon ) { |
|
687 |
org.gvsig.fmap.geom.primitive.Polygon polygon = gManager.createPolygon(SUBTYPES.GEOM2D); |
|
720 | 688 |
for (int j = 0; j < fea.getGeometry().pointNr(); j++) { |
721 |
pts[j] = ((Polygon3D) fea.getGeometry()).getPoint3D(j); |
|
689 |
Point2D point = fea.getGeometry().get(j); |
|
690 |
polygon.addVertex(point.getX(), point.getY()); |
|
722 | 691 |
} |
723 |
pts[fea.getGeometry().pointNr()] = firstPt; |
|
724 |
double[] elevations = new double[pts.length]; |
|
725 |
for (int j = 0; j < pts.length; j++) { |
|
726 |
elevations[j] = pts[j].getZ(); |
|
727 |
} |
|
728 |
|
|
729 |
Surface surface = (Surface)gManager.create(TYPES.SURFACE , SUBTYPES.GEOM3D); |
|
730 |
org.gvsig.fmap.geom.primitive.Point point = gManager.createPoint(pts[0].getX(), pts[0].getY(), SUBTYPES.GEOM3D); |
|
731 |
point.setCoordinateAt(Geometry.DIMENSIONS.Z, elevations[0]); |
|
732 |
surface.addMoveToVertex(point); |
|
733 |
|
|
734 |
for (int j = 1; j < pts.length; j++) { |
|
735 |
point = gManager.createPoint(pts[j].getX(), pts[j].getY(), SUBTYPES.GEOM3D); |
|
736 |
point.setCoordinateAt(Geometry.DIMENSIONS.Z, elevations[0]); |
|
737 |
surface.addVertex(point); |
|
738 |
} |
|
739 |
surface.closePrimitive(); |
|
740 |
|
|
741 |
geometry = surface; |
|
692 |
Point2D point = fea.getGeometry().get(0); |
|
693 |
polygon.addVertex(point.getX(), point.getY()); |
|
694 |
geometry = polygon; |
|
695 |
|
|
742 | 696 |
} else { |
743 | 697 |
logger.warn( |
744 | 698 |
MessageFormat.format( |
... | ... | |
748 | 702 |
); |
749 | 703 |
} |
750 | 704 |
|
751 |
if (geometry != null){ |
|
752 |
feature.set(ID_FIELD_GEOMETRY, geometry); |
|
753 |
feature.setDefaultGeometry(geometry); |
|
754 |
if (this.envelope == null) { |
|
755 |
this.envelope = geometry.getEnvelope(); |
|
756 |
} else { |
|
757 |
this.envelope.add(geometry.getEnvelope()); |
|
758 |
} |
|
759 |
}else{ |
|
760 |
geometry = gManager.createNullGeometry(SUBTYPES.GEOM2D); |
|
705 |
feature.set(ID_FIELD_GEOMETRY, geometry); |
|
706 |
feature.setDefaultGeometry(geometry); |
|
707 |
if (this.envelope == null) { |
|
708 |
this.envelope = geometry.getEnvelope(); |
|
709 |
} else { |
|
710 |
this.envelope.add(geometry.getEnvelope()); |
|
761 | 711 |
} |
762 | 712 |
|
763 | 713 |
//Add the feature to the store |
Also available in: Unified diff