Revision 38883 branches/v2_0_0_prep/libraries/org.gvsig.exportto/org.gvsig.exportto.swing/org.gvsig.exportto.swing.prov/org.gvsig.exportto.swing.prov.shape/src/main/java/org/gvsig/exportto/swing/prov/shape/ExporttoShapeService.java

View differences:

ExporttoShapeService.java
23 23

  
24 24
import java.io.File;
25 25

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

  
28 29
import org.gvsig.exportto.ExporttoService;
......
34 35
import org.gvsig.fmap.dal.exception.InitializeException;
35 36
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
36 37
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
38
import org.gvsig.fmap.dal.feature.EditableFeature;
37 39
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
38 40
import org.gvsig.fmap.dal.feature.EditableFeatureType;
39 41
import org.gvsig.fmap.dal.feature.Feature;
......
46 48
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
47 49
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
48 50
import org.gvsig.fmap.geom.Geometry;
51
import org.gvsig.fmap.mapcontext.layers.vectorial.IntersectsGeometryEvaluator;
49 52
import org.gvsig.tools.dispose.DisposableIterator;
50 53
import org.gvsig.tools.dispose.DisposeUtils;
51 54
import org.gvsig.tools.task.AbstractMonitorableTask;
......
215 218
            int geometryattribute =
216 219
                featureSet.getDefaultFeatureType()
217 220
                    .getDefaultGeometryAttributeIndex();
221
            
222
            
218 223

  
224
            // ================================================
225
            // Reprojection stuff
226
            Geometry reproj_geom = null;
227
            EditableFeature edit_feat = null;
228
            IProjection sourceProjection =
229
                featureStore.getDefaultFeatureType().getDefaultGeometryAttribute().getSRS();
230

  
231
            ICoordTrans coord_trans = null;
232
            // this comparison is perhaps too preventive
233
            // we could  have two instances of same projection
234
            // so we would do more computations than needed
235
            if (sourceProjection != this.projection) {
236
                coord_trans = sourceProjection.getCT(this.projection); 
237
            }
238
            // ================================================
239

  
219 240
            while (it.hasNext()) {
220 241
                Feature feature = (Feature) it.next();
221 242
                if (checkType
......
223 244
                    continue;
224 245
                }
225 246

  
226
                target.insert(target.createNewFeature(targetType, feature));
247
                edit_feat = target.createNewFeature(targetType, feature);
248
                // ================================================
249
                // Reprojection stuff
250
                if (coord_trans != null) {
251
                    reproj_geom = edit_feat.getDefaultGeometry();
252
                    reproj_geom = reproj_geom.cloneGeometry();
253
                    reproj_geom.reProject(coord_trans);
254
                    edit_feat.setDefaultGeometry(reproj_geom);
255
                }
256
                // ================================================
257
                
258
                target.insert(edit_feat);
227 259

  
228 260
                featureCount++;
229 261
                this.taskStatus.setCurValue(featureCount);

Also available in: Unified diff