Revision 657
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.fmap/src/main/java/org/gvsig/raster/fmap/layers/DefaultFLyrRaster.java | ||
---|---|---|
697 | 697 |
|
698 | 698 |
try { |
699 | 699 |
if(getDataStore().isTiled()) |
700 |
getRender().drawTiledService(g, vp2); |
|
700 |
getRender().drawTiledService(g, vp2, vp.getImageSize());
|
|
701 | 701 |
else |
702 | 702 |
getRender().draw(g, vp2); |
703 | 703 |
} catch (ProcessInterruptedException e1) { |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/grid/render/Render.java | ||
---|---|---|
22 | 22 |
package org.gvsig.fmap.dal.coverage.grid.render; |
23 | 23 |
|
24 | 24 |
import java.awt.Graphics2D; |
25 |
import java.awt.geom.Dimension2D; |
|
25 | 26 |
|
26 | 27 |
import org.gvsig.fmap.dal.coverage.dataset.Buffer; |
27 | 28 |
import org.gvsig.fmap.dal.coverage.datastruct.ViewPortData; |
... | ... | |
202 | 203 |
* @throws InvalidSetViewException |
203 | 204 |
* @throws ProcessInterruptedException |
204 | 205 |
*/ |
205 |
public void drawTiledService(Graphics2D g, ViewPortData vp) |
|
206 |
public void drawTiledService(Graphics2D g, ViewPortData vp, Dimension2D viewDimension)
|
|
206 | 207 |
throws RasterDriverException, InvalidSetViewException, ProcessInterruptedException; |
207 | 208 |
|
208 | 209 |
/** |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/render/DefaultRender.java | ||
---|---|---|
24 | 24 |
import java.awt.Graphics2D; |
25 | 25 |
import java.awt.Image; |
26 | 26 |
import java.awt.geom.AffineTransform; |
27 |
import java.awt.geom.Dimension2D; |
|
27 | 28 |
import java.awt.geom.NoninvertibleTransformException; |
28 | 29 |
import java.awt.geom.Point2D; |
29 | 30 |
import java.util.ArrayList; |
... | ... | |
142 | 143 |
|
143 | 144 |
private Graphics2D lastGraphics = null; |
144 | 145 |
private ViewPortData lastViewPortData = null; |
146 |
private Dimension2D viewDimension = null; |
|
145 | 147 |
|
146 | 148 |
/** |
147 | 149 |
* Constructor |
... | ... | |
302 | 304 |
* (non-Javadoc) |
303 | 305 |
* @see org.gvsig.fmap.dal.coverage.grid.render.Render#draw(java.awt.Graphics2D, org.cresques.geo.ViewPortData) |
304 | 306 |
*/ |
305 |
public synchronized void drawTiledService(Graphics2D g, ViewPortData vp) |
|
307 |
public synchronized void drawTiledService(Graphics2D g, ViewPortData vp, Dimension2D viewDimension)
|
|
306 | 308 |
throws RasterDriverException, InvalidSetViewException, ProcessInterruptedException { |
307 | 309 |
lastGraphics = g; |
308 | 310 |
lastViewPortData = vp; |
311 |
this. viewDimension = viewDimension; |
|
309 | 312 |
|
310 | 313 |
if(util.isOutside(vp.getExtent(), dataStore.getExtent())) { |
311 | 314 |
endReading(); |
... | ... | |
490 | 493 |
} |
491 | 494 |
buf = grid.getRasterBuf(); |
492 | 495 |
|
493 |
//Reescalado de los tiles. El tama?o en pixels de un tile no tiene pq coincidir con el de la vista. |
|
494 |
double viewScaleW = lastViewPortData.getExtent().width() / lastViewPortData.getWidth(); |
|
496 |
//Reescalado de los tiles. El tama?o en pixels de un tile no tiene pq coincidir con el de la vista. |
|
497 |
double w = lastViewPortData.getWidth(); |
|
498 |
double h = lastViewPortData.getHeight(); |
|
499 |
if(viewDimension != null) { |
|
500 |
w = viewDimension.getWidth(); |
|
501 |
h = viewDimension.getHeight(); |
|
502 |
} |
|
503 |
double viewScaleW = lastViewPortData.getExtent().width() / w; |
|
495 | 504 |
double tileScaleW = e.width() / (double)buf.getWidth(); |
496 | 505 |
double scaleW = viewScaleW / tileScaleW; |
497 |
double viewScaleH = lastViewPortData.getExtent().height() / lastViewPortData.getHeight();
|
|
506 |
double viewScaleH = lastViewPortData.getExtent().height() / h;
|
|
498 | 507 |
double tileScaleH = e.height() / (double)buf.getHeight(); |
499 | 508 |
double scaleH = viewScaleH / tileScaleH; |
500 | 509 |
|
org.gvsig.raster.wms/trunk/org.gvsig.raster.wms/org.gvsig.raster.wms.io/src/main/java/org/gvsig/raster/wms/io/WMSConnector.java | ||
---|---|---|
22 | 22 |
package org.gvsig.raster.wms.io; |
23 | 23 |
|
24 | 24 |
import java.awt.geom.Rectangle2D; |
25 |
import java.io.BufferedOutputStream; |
|
26 |
import java.io.DataInputStream; |
|
27 |
import java.io.DataOutputStream; |
|
25 | 28 |
import java.io.File; |
29 |
import java.io.FileOutputStream; |
|
26 | 30 |
import java.io.IOException; |
31 |
import java.io.OutputStreamWriter; |
|
27 | 32 |
import java.net.ConnectException; |
33 |
import java.net.HttpURLConnection; |
|
28 | 34 |
import java.net.URL; |
35 |
import java.security.KeyManagementException; |
|
36 |
import java.security.NoSuchAlgorithmException; |
|
29 | 37 |
import java.util.ArrayList; |
30 | 38 |
import java.util.Hashtable; |
31 | 39 |
import java.util.TreeMap; |
32 | 40 |
import java.util.Vector; |
41 |
import java.util.prefs.Preferences; |
|
33 | 42 |
|
43 |
import javax.net.ssl.HttpsURLConnection; |
|
44 |
import javax.net.ssl.SSLContext; |
|
45 |
import javax.net.ssl.TrustManager; |
|
46 |
import javax.net.ssl.X509TrustManager; |
|
47 |
|
|
34 | 48 |
import org.gvsig.compat.net.ICancellable; |
35 | 49 |
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException; |
36 | 50 |
import org.gvsig.remoteclient.exceptions.ServerErrorException; |
... | ... | |
79 | 93 |
} |
80 | 94 |
} |
81 | 95 |
|
96 |
/** |
|
97 |
* |
|
98 |
* @param status |
|
99 |
* @param cancel |
|
100 |
* @param file |
|
101 |
* @throws RemoteServiceException |
|
102 |
*/ |
|
82 | 103 |
public void getMap(WMSStatus status, ICancellable cancel, File file) throws RemoteServiceException { |
83 | 104 |
try { |
84 |
client.getMap(status, cancel, file); |
|
85 |
} catch (org.gvsig.remoteclient.exceptions.WMSException e) { |
|
105 |
URL url = client.getGetMapURL(status, cancel); |
|
106 |
downloadFile(url, file, cancel); |
|
107 |
String exceptionMessage = client.getExceptionMessage(file); |
|
108 |
if(exceptionMessage != null) |
|
109 |
throw new RemoteServiceException(exceptionMessage); |
|
110 |
} catch(IOException e) { |
|
111 |
throw new RemoteServiceException("WMS: error downloading the file. File:" + file.getAbsolutePath() + "...." + e.getMessage()); |
|
112 |
} catch (ServerErrorException e) { |
|
113 |
throw new RemoteServiceException("WMS Unexpected server error."+e.getMessage()); |
|
114 |
} catch (org.gvsig.remoteclient.exceptions.WMSException e) { |
|
86 | 115 |
throw new RemoteServiceException(e.getMessage()); |
87 |
} catch (ServerErrorException e) { |
|
88 |
throw new RemoteServiceException("WMS Unexpected server error."+e.getMessage()); |
|
89 | 116 |
} |
90 | 117 |
} |
91 | 118 |
|
119 |
|
|
120 |
public void downloadFile(URL url, File dstFile, ICancellable cancel) throws IOException { |
|
121 |
Preferences prefs = Preferences.userRoot().node( "gvsig.downloader" ); |
|
122 |
// by default 1 minute (60000 milliseconds. |
|
123 |
int timeout = prefs.getInt("timeout", 60000); |
|
124 |
|
|
125 |
DataOutputStream dos; |
|
126 |
DataInputStream is; |
|
127 |
OutputStreamWriter os = null; |
|
128 |
HttpURLConnection connection = null; |
|
129 |
//If the used protocol is HTTPS |
|
130 |
if (url.getProtocol().equals("https")) { |
|
131 |
try { |
|
132 |
disableHttsValidation(); |
|
133 |
} catch (KeyManagementException e) { |
|
134 |
e.printStackTrace(); |
|
135 |
} catch (NoSuchAlgorithmException e) { |
|
136 |
e.printStackTrace(); |
|
137 |
} |
|
138 |
} |
|
139 |
connection = (HttpURLConnection)url.openConnection(); |
|
140 |
connection.setConnectTimeout(timeout); |
|
141 |
is = new DataInputStream(url.openStream()); |
|
142 |
|
|
143 |
dos = new DataOutputStream( new BufferedOutputStream(new FileOutputStream(dstFile))); |
|
144 |
byte[] buffer = new byte[1024 * 4]; |
|
145 |
|
|
146 |
|
|
147 |
long readed = 0; |
|
148 |
for (int i = is.read(buffer); i > 0; i = is.read(buffer)){ |
|
149 |
dos.write(buffer, 0, i); |
|
150 |
readed += i; |
|
151 |
if(cancel != null && cancel.isCanceled()) |
|
152 |
return; |
|
153 |
} |
|
154 |
if(os != null) { |
|
155 |
os.close(); |
|
156 |
} |
|
157 |
dos.close(); |
|
158 |
is.close(); |
|
159 |
is = null; |
|
160 |
dos = null; |
|
161 |
} |
|
162 |
|
|
163 |
/** |
|
164 |
* This method disables the Https certificate validation. |
|
165 |
* @throws KeyManagementException |
|
166 |
* @throws NoSuchAlgorithmException |
|
167 |
*/ |
|
168 |
private void disableHttsValidation() throws KeyManagementException, NoSuchAlgorithmException{ |
|
169 |
// Create a trust manager that does not validate certificate chains |
|
170 |
TrustManager[] trustAllCerts = new TrustManager[] { |
|
171 |
new X509TrustManager() { |
|
172 |
public java.security.cert.X509Certificate[] getAcceptedIssuers() { |
|
173 |
return null; |
|
174 |
} |
|
175 |
public void checkClientTrusted( |
|
176 |
java.security.cert.X509Certificate[] certs, String authType) { |
|
177 |
} |
|
178 |
public void checkServerTrusted( |
|
179 |
java.security.cert.X509Certificate[] certs, String authType) { |
|
180 |
} |
|
181 |
} |
|
182 |
}; |
|
183 |
|
|
184 |
// Install the all-trusting trust manager |
|
185 |
SSLContext sc = SSLContext.getInstance("SSL"); |
|
186 |
sc.init(null, trustAllCerts, new java.security.SecureRandom()); |
|
187 |
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); |
|
188 |
} |
|
189 |
|
|
92 | 190 |
/** |
93 | 191 |
* Gets the legend graphic of one layer |
94 | 192 |
*/ |
org.gvsig.raster.wms/trunk/org.gvsig.raster.wms/org.gvsig.raster.wms.app/org.gvsig.raster.wms.app.wmsclient/src/main/java/org/gvsig/raster/wms/app/wmsclient/layer/FLyrWMS.java | ||
---|---|---|
412 | 412 |
callCount = 0; |
413 | 413 |
|
414 | 414 |
enableStopped(); |
415 |
|
|
416 |
if(recalcLevel) { |
|
417 |
double pixelSize = viewPort.getEnvelope().getLength(0) / (double)viewPort.getImageWidth(); |
|
418 |
zoomLevel = dataStore.getNearestLevel(pixelSize); |
|
419 |
} |
|
420 |
recalcLevel = true; |
|
415 | 421 |
|
416 | 422 |
if (isWithinScale(scale)) { |
417 | 423 |
|
... | ... | |
506 | 512 |
if(params instanceof WMSDataParameters) |
507 | 513 |
getRender().draw(g, vpData); |
508 | 514 |
else |
509 |
getRender().drawTiledService(g, vpData); |
|
515 |
getRender().drawTiledService(g, vpData, vp.getImageSize());
|
|
510 | 516 |
//this.updateDrawVersion(); |
511 | 517 |
} catch (RasterDriverException e) { |
512 | 518 |
throw new RemoteServiceException("Problems drawing this layer: " + e.getMessage(), e); |
org.gvsig.raster.wmts/trunk/org.gvsig.raster.wmts/org.gvsig.raster.wmts.app/org.gvsig.raster.wmts.app.wmtsclient/src/main/java/org/gvsig/raster/wmts/app/wmtsclient/layer/FLyrWMTS.java | ||
---|---|---|
252 | 252 |
par.setWidth((int)viewPort.getImageSize().getWidth()); |
253 | 253 |
par.setHeight((int)viewPort.getImageSize().getHeight()); |
254 | 254 |
|
255 |
getRender().drawTiledService(g, vp2); |
|
255 |
getRender().drawTiledService(g, vp2, viewPort.getImageSize());
|
|
256 | 256 |
} catch (RasterDriverException e) { |
257 | 257 |
throw new ReadException("Problems drawing this layer: " + e.getMessage(), e); |
258 | 258 |
} catch (InvalidSetViewException e) { |
org.gvsig.raster.wcs/trunk/org.gvsig.raster.wcs/org.gvsig.raster.wcs.app/org.gvsig.raster.wcs.app.wcsclient/src/main/java/org/gvsig/raster/wcs/app/wcsclient/layer/FLyrWCS.java | ||
---|---|---|
80 | 80 |
import org.gvsig.fmap.dal.exception.ReadException; |
81 | 81 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
82 | 82 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
83 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
|
84 | 83 |
import org.gvsig.fmap.geom.GeometryLocator; |
85 | 84 |
import org.gvsig.fmap.geom.GeometryManager; |
85 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
|
86 | 86 |
import org.gvsig.fmap.geom.exception.CreateEnvelopeException; |
87 | 87 |
import org.gvsig.fmap.geom.primitive.Envelope; |
88 | 88 |
import org.gvsig.fmap.mapcontext.ViewPort; |
... | ... | |
250 | 250 |
callCount = 0; |
251 | 251 |
|
252 | 252 |
enableStopped(); |
253 |
|
|
254 |
if(recalcLevel) { |
|
255 |
double pixelSize = viewPort.getEnvelope().getLength(0) / (double)viewPort.getImageWidth(); |
|
256 |
zoomLevel = dataStore.getNearestLevel(pixelSize); |
|
257 |
} |
|
258 |
recalcLevel = true; |
|
253 | 259 |
|
254 | 260 |
if (isWithinScale(scale)) { |
255 | 261 |
|
Also available in: Unified diff