Revision 42751 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.exportto/org.gvsig.exportto.lib/org.gvsig.exportto.lib.impl/src/main/java/org/gvsig/exportto/impl/DefaultExporttoService.java

View differences:

DefaultExporttoService.java
23 23
 */
24 24
package org.gvsig.exportto.impl;
25 25

  
26
import org.cresques.cts.ICoordTrans;
26 27
import org.cresques.cts.IProjection;
27 28

  
28 29
import org.gvsig.exportto.ExporttoService;
......
37 38
import org.gvsig.fmap.dal.feature.FeatureSet;
38 39
import org.gvsig.fmap.dal.feature.FeatureStore;
39 40
import org.gvsig.fmap.dal.feature.FeatureType;
41
import org.gvsig.fmap.geom.Geometry;
40 42
import org.gvsig.tools.ToolsLocator;
41 43
import org.gvsig.tools.dispose.DisposableIterator;
42 44
import org.gvsig.tools.dispose.DisposeUtils;
......
95 97

  
96 98
            target.edit(FeatureStore.MODE_APPEND);
97 99
            it = featureSet.fastIterator();
98

  
100
            IProjection targetProjection =
101
                target.getDefaultFeatureType().getDefaultGeometryAttribute().getSRS();
99 102
            long featureCount = 0;
100 103
            while (it.hasNext()) {
101 104
                Feature feature = (Feature) it.next();
102 105
                newfeature = target.createNewFeature(targetType, feature);
106
                // ================================================
107
                // Reprojection stuff
108
                Geometry reproj_geom = null;
109
                IProjection sourceProjection =feature.getDefaultSRS();
110

  
111
                ICoordTrans coord_trans = null;
112
                // this comparison is perhaps too preventive
113
                // we could  have two instances of same projection
114
                // so we would do more computations than needed
115
                if (sourceProjection != null &&
116
                    targetProjection!=null &&
117
                    sourceProjection != targetProjection) {
118

  
119
                    coord_trans = sourceProjection.getCT(targetProjection);
120
                    reproj_geom = feature.getDefaultGeometry();
121
                    reproj_geom = reproj_geom.cloneGeometry();
122
                    reproj_geom.reProject(coord_trans);
123
                    newfeature.setDefaultGeometry(reproj_geom);
124
                }
125
                // ================================================
126

  
103 127
                target.insert(newfeature);
104 128

  
105 129
                featureCount++;

Also available in: Unified diff