Revision 31466

View differences:

tags/v1_9_Build_1250/extensions/extGPE-gvSIG/src/org/gvsig/fmap/drivers/gpe/writer/ExportGeometry.java
1 1
package org.gvsig.fmap.drivers.gpe.writer;
2 2

  
3 3
import java.awt.geom.PathIterator;
4
import java.awt.geom.Rectangle2D;
5 4

  
6 5
import org.cresques.cts.ICoordTrans;
7 6
import org.cresques.cts.IProjection;
......
15 14
import com.iver.cit.gvsig.fmap.core.FShape;
16 15
import com.iver.cit.gvsig.fmap.core.IGeometry;
17 16

  
18
/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
17
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
19 18
 *
20 19
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
21 20
 *
......
37 36
 *
38 37
 *  Generalitat Valenciana
39 38
 *   Conselleria d'Infraestructures i Transport
40
 *   Av. Blasco Ib��ez, 50
39
 *   Av. Blasco Ib??ez, 50
41 40
 *   46010 VALENCIA
42 41
 *   SPAIN
43 42
 *
......
62 61
 *
63 62
 */
64 63
/**
65
 * @author Jorge Piera LLodr (jorge.piera@iver.es)
64
 * @author Jorge Piera LLodr? (jorge.piera@iver.es)
66 65
 */
67 66
public class ExportGeometry {
68 67
	private GPEWriterHandler writer = null;
......
79 78
		this.writer = writer;
80 79
	}
81 80

  
82
	
83 81
	/**
84 82
	 * It writes a geometry
85 83
	 * @param geom
......
320 318
	public IProjection getProjDest() {
321 319
		return projDest;
322 320
	}
323

  
324

  
325
	public IProjection getProjOrig() {
326
		return projOrig;
327
	}
328

  
329

  
330
	public Rectangle2D getExtent(Rectangle2D extent) {
331
		//If the project orig its different than the destination one, then must be reprojected
332
		if (getProjDest().getAbrev().compareTo(getProjOrig().getAbrev())!=0){
333
			if (coordTrans == null){
334
				if ((projOrig == null) || (projDest == null)){
335
					return null;
336
				}
337
				coordTrans = projOrig.getCT(projDest);
338
			}
339
			return coordTrans.convert(extent);
340
		}
341
		return extent;
342
	}
343 321
}
tags/v1_9_Build_1250/extensions/extGPE-gvSIG/src/org/gvsig/fmap/drivers/gpe/writer/ExportTask.java
9 9
import org.cresques.cts.IProjection;
10 10
import org.gvsig.fmap.drivers.gpe.reader.GPEDriverFactory;
11 11
import org.gvsig.fmap.drivers.gpe.reader.GPEVectorialDriver;
12
import org.gvsig.gpe.GPEDefaults;
12 13
import org.gvsig.gpe.GPERegister;
13 14
import org.gvsig.gpe.exceptions.ParserCreationException;
15
import org.gvsig.gpe.gml.utils.GMLUtilsParser;
14 16
import org.gvsig.gpe.parser.GPEParser;
15 17
import org.gvsig.gpe.utils.StringUtils;
16 18
import org.gvsig.gpe.writer.GPEWriterHandler;
......
36 38
import com.iver.cit.gvsig.project.documents.view.gui.IView;
37 39
import com.iver.utiles.swing.threads.AbstractMonitorableTask;
38 40

  
39
/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
41
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
40 42
 *
41 43
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
42 44
 *
......
58 60
 *
59 61
 *  Generalitat Valenciana
60 62
 *   Conselleria d'Infraestructures i Transport
61
 *   Av. Blasco Ib��ez, 50
63
 *   Av. Blasco Ib??ez, 50
62 64
 *   46010 VALENCIA
63 65
 *   SPAIN
64 66
 *
......
85 87
/**
86 88
 * This class writes a gvSIG layer and its children
87 89
 * (if the driver supports a layer with children)
88
 * @author Jorge Piera LLodr (jorge.piera@iver.es)
90
 * @author Jorge Piera LLodr? (jorge.piera@iver.es)
89 91
 */
90 92
public class ExportTask extends AbstractMonitorableTask{
91 93
	private FLayer rootLayer = null;
......
103 105
		this.mapContext = mapContext;
104 106
		this.eGeometry = new ExportGeometry(writer);
105 107
		this.file = file;
106
		eGeometry.setProjOrig(layer.getProjection());
107
		if (writer.getFormat().equals("text/xml; subtype=kml/2.1")){
108
		eGeometry.setProjOrig(mapContext.getProjection());
109
		eGeometry.setProjDest(layer.getProjection());
110
		if (writer.getFormat().equals("KML")){
108 111
			eGeometry.setProjDest(CRSFactory.getCRS("EPSG:4326"));			
109
		}else{
110
			eGeometry.setProjDest(layer.getProjection());
111 112
		}
112 113
		setInitialStep(0);
113 114
		setDeterminatedProcess(true);
......
162 163
	 * The layer to write
163 164
	 */
164 165
	private void exportLayer(FLayer layer){
165
		String projection = eGeometry.getProjDest().getAbrev();
166
		
167
		writer.startLayer(null, null, layer.getName(), null, projection);
166
		String projection  = null;
167
		if (layer.getProjection() != null){
168
			projection = layer.getProjection().getAbrev();
169
		}
170
		writer.startLayer(null, layer.getName(), null, 
171
				projection, null);
168 172
		//Sets the extent
169 173
		try {
170
			writer.startBbox(null,new CoordinatesSequenceBbox(eGeometry.getExtent(layer.getFullExtent())), eGeometry.getProjDest().getAbrev());
174
			writer.startBbox(null,new CoordinatesSequenceBbox(layer.getFullExtent()), mapContext.getProjection().getAbrev());
171 175
			writer.endBbox();
172 176
		} catch (Exception e) {
173 177
			writer.getErrorHandler().addWarning(new ExtentExportWarning(layer,e));

Also available in: Unified diff