Revision 10953 branches/v10/libraries/libCq_CMS_praster/src/org/cresques/io/data/Grid.java

View differences:

Grid.java
206 206
		
207 207
		//Caso en que la extensi?n pedida SI se sale fuera del ?rea del raster
208 208
		//El pixel a medias entre NoData y datos se pone NoData
209
		if(!Utilities.isInside(dataExtent, fitExtent)){
209
		if(Utilities.isOutside(dataExtent, grmf.getExtent())) {
210
			double error = 0.01;
210 211
			//Upper Left
211 212
			double distWcX = Math.abs(fitExtent.getMin().getX() - dataExtent.getMin().getX());
213
			distWcX = (distWcX > error) ? distWcX : 0;
212 214
			double distWcY = Math.abs(fitExtent.getMax().getY() - dataExtent.getMax().getY());
215
			distWcY = (distWcY > error) ? distWcY : 0;
213 216
			//Pixel inicial del buffer donde se empieza a dibujar. Redondeamos por arriba pq lo que sobra se pone NoData
214 217
			double initPxX = Math.ceil((distWcX * bufWidth) / (Math.abs(maxX - minX))); 
215 218
			double initPxY = Math.ceil((distWcY * bufHeight) / (Math.abs(maxY - minY)));
216 219
			//Obtenemos la coordenada real para el pixel inicial
217
			double wcXInit = (initPxX * (Math.abs(maxX - minX))) / bufWidth;
218
			double wcYInit = (initPxY * (Math.abs(maxY - minY))) / bufHeight;
220
			double wcXInit = (minX < grmf.getExtent().minX()) ? grmf.getExtent().minX() : minX;
221
			double wcYInit = (maxY > grmf.getExtent().maxY()) ? grmf.getExtent().maxY() : maxY;
219 222
			
220 223
			//Lower Right
221 224
			distWcX = Math.abs(fitExtent.getMax().getX() - dataExtent.getMin().getX());
225
			distWcX = (distWcX > error) ? distWcX : 0;
222 226
			distWcY = Math.abs(fitExtent.getMin().getY() - dataExtent.getMax().getY());
227
			distWcY = (distWcY > error) ? distWcY : 0;
223 228
			//Pixel final del buffer donde se dibuja. Redondeamos por abajo pq lo que sobra se pone NoData
224 229
			double endPxX = Math.floor((distWcX * bufWidth) / (Math.abs(maxX - minX))); 
225 230
			double endPxY = Math.floor((distWcY * bufHeight) / (Math.abs(maxY - minY)));
226 231
			//Obtenemos la coordenada real para el pixel
227
			double wcXEnd = (endPxX * (Math.abs(maxX - minX))) / bufWidth;
228
			double wcYEnd = (endPxY * (Math.abs(maxY - minY))) / bufHeight;
232
			double wcXEnd = (maxX > grmf.getExtent().maxX()) ? grmf.getExtent().maxX() : maxX;
233
			double wcYEnd = (minY < grmf.getExtent().minY()) ? grmf.getExtent().minY() : minY;
229 234
			
230 235
			rasterBuf = grmf.getWindowRaster(wcXInit, wcYInit, wcXEnd, wcYEnd, (int)Math.abs(endPxX - initPxX), (int)Math.abs(endPxY - initPxY));
231 236
			
......
243 248
		}
244 249
		
245 250
		//Caso en que la extensi?n pedida NO se sale fuera del ?rea del raster
246
		rasterBuf = grmf.getWindowRaster(fitExtent.minX(), fitExtent.maxY(), fitExtent.width(), fitExtent.height(), bufWidth, bufHeight);
251
		rasterBuf = grmf.getWindowRaster(fitExtent.minX(), fitExtent.minY(), fitExtent.maxX(), fitExtent.maxY(), bufWidth, bufHeight);
247 252
		return null;
248 253
	}
249 254
	

Also available in: Unified diff