Revision 10953 branches/v10/libraries/libCq_CMS_praster/src/org/cresques/io/data/Grid.java
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