Revision 71 org.gvsig.dxf/trunk/org.gvsig.dxf/org.gvsig.dxf.provider/src/main/java/org/gvsig/fmap/dal/store/dxf/DXFStoreProvider.java

View differences:

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