Revision 10953
branches/v10/libraries/libCq_CMS_praster/src-test/org/cresques/io/data/TestDataSourceWithNoDataAndSizeBuffer.java | ||
---|---|---|
57 | 57 |
//El par?metro false indica que no se ajuste el extent al raster sino que se rellene con NoData los huecos |
58 | 58 |
|
59 | 59 |
//TODO: Hacer las llamadas para probar setAreaOfInterest con tama?o de buffer |
60 |
g.setAreaOfInterest(645819.2583, 4923849.7, 25.584, 25.2); //ZOOM |
|
61 |
//g.setAreaOfInterest(645818.2583, 4923850.7, 34.584, 33.2); |
|
62 |
//g.setAreaOfInterest(645808.2583, 4923850.7, 44.584, 33.2); //NODATA IZDA |
|
63 |
//g.setAreaOfInterest(645818.2583, 4923860.7, 34.584, 43.2); //NODATA ARRIBA |
|
64 |
//g.setAreaOfInterest(645818.2583, 4923850.7, 34.584, 43.2); //NODATA ABAJO |
|
65 |
//g.setAreaOfInterest(645818.2583, 4923850.7, 44.584, 33.2); //NODATA DCHA |
|
66 |
//g.setAreaOfInterest(645808.2583, 4923860.7, 54.584, 53.2); //NODATA 4 LADOS |
|
67 | 60 |
|
61 |
g.setAreaOfInterest(645818.258, 4923850.7, 645852.841, 4923817.5, 4, 4);//EXTENT COMPLETO |
|
62 |
//g.setAreaOfInterest(645835.550, 4923850.7, 645852.841, 4923817.5, 4, 4);//MEDIO EXTENT DCHA |
|
63 |
//g.setAreaOfInterest(645818.258, 4923850.7, 645835.550, 4923817.5, 4, 4);//MEDIO EXTENT IZDA |
|
64 |
//g.setAreaOfInterest(645818.258, 4923850.7, 645852.841, 4923834.1, 4, 4);//MEDIO EXTENT ARRIBA |
|
65 |
//g.setAreaOfInterest(645818.258, 4923834.1, 645852.841, 4923817.5, 4, 4);//MEDIO EXTENT ABAJO |
|
66 |
//g.setAreaOfInterest(645828.258, 4923840.7, 645842.841, 4923827.5, 4, 4);//VISTA INTERIOR |
|
67 |
|
|
68 |
//g.setAreaOfInterest(645808.258, 4923850.7, 645852.841, 4923817.5, 4, 4);//NODATA IZDA |
|
69 |
//g.setAreaOfInterest(645818.258, 4923850.7, 645862.841, 4923817.5, 4, 4);//NODATA DCHA |
|
70 |
//g.setAreaOfInterest(645818.258, 4923860.7, 645852.841, 4923817.5, 4, 4);//NODATA ARRIBA |
|
71 |
//g.setAreaOfInterest(645818.258, 4923850.7, 645852.841, 4923807.5, 4, 4);//NODATA ABAJO |
|
72 |
//g.setAreaOfInterest(645808.258, 4923860.7, 645862.841, 4923807.5, 5, 5);//4 LADOS |
|
73 |
|
|
68 | 74 |
RasterBuf raster = g.getRasterBuf(); |
69 | 75 |
for(int line = 0; line < raster.getHeight(); line++){ |
70 | 76 |
for(int col = 0; col < raster.getWidth(); col++) |
branches/v10/libraries/libCq_CMS_praster/src/org/cresques/io/data/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 |
|
branches/v10/libraries/libCq_CMS_praster/src/org/cresques/util/Utilities.java | ||
---|---|---|
262 | 262 |
return ((e1.getMin().getX() >= e2.getMin().getX()) && (e1.getMin().getY() >= e2.getMin().getY()) && |
263 | 263 |
(e1.getMax().getX() <= e2.getMax().getX()) && (e1.getMax().getY() <= e2.getMax().getY())); |
264 | 264 |
} |
265 |
|
|
266 |
/** |
|
267 |
* Comprueba si alguna parte de un extent est? fuera del extent que tenemos como referencia. |
|
268 |
* @param e1 Extent a comprobar si est? fuera |
|
269 |
* @param ref Extent de referencia |
|
270 |
* @return Devuelve true si alguna parte de e1 cae fuera de ref y false si no tiene ninguna fuera. |
|
271 |
*/ |
|
272 |
public static boolean isOutside(Extent e1, Extent ref){ |
|
273 |
return ((e1.getMin().getX() < ref.getMin().getX()) || (e1.getMin().getY() < ref.getMin().getY()) || |
|
274 |
(e1.getMax().getX() > ref.getMax().getX()) || (e1.getMax().getY() > ref.getMax().getY())); |
|
275 |
} |
|
265 | 276 |
//--------------------------------------------------------------- |
266 | 277 |
//TRATAMIENTO DE FICHEROS |
267 | 278 |
|
Also available in: Unified diff