Statistics
| Revision:

gvsig-raster / org.gvsig.raster / trunk / org.gvsig.raster / org.gvsig.raster.lib / org.gvsig.raster.lib.api / src / main / java / org / gvsig / fmap / dal / coverage / store / RasterQuery.java @ 316

History | View | Annotate | Download (10.3 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.fmap.dal.coverage.store;
23

    
24
import org.gvsig.fmap.dal.DataQuery;
25
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException;
26
import org.gvsig.raster.cache.tile.provider.TileListener;
27

    
28
/**
29
 * Interfaz que contiene las operaciones que debe soportar la carga de datos
30
 * raster en un buffer.
31
 * @author Nacho Brodin (nachobrodin@gmail.com)
32
 */
33
public interface RasterQuery extends DataQuery {
34
        
35
        /**
36
         * Sets the frame width. This parameter is take into 
37
         * account only when the request is tiled and this characteristic is
38
         * supported.
39
         * @param n
40
         */
41
        public void setFrameWidth(int n);
42
        
43
        /**
44
         * Sets the number of the alpha band. This parameter is take into 
45
         * account only when the request is made using TileListener. In this case
46
         * the parameter transparencyBuffer in nextBuffer method will have the right
47
         * data.
48
         * @param bandNumber
49
         */
50
        public void setAlphaBand(int bandNumber);
51
        
52
        /**
53
         * The user can told if the buffer will be stored or not in the RasterDatasource.
54
         * @param store
55
         */
56
        public void storeLastBuffer(boolean store);
57
        
58
        /**
59
         * Asigna el flag que ajusta el extent de la petici?n al del raster. Si est? a
60
         * true en caso de que el extent de la petici?n sea mayor lo ajustar? a los limites
61
         * de este. Si est? a false no lo ajustar? rellenando los valores con NoData
62
         * @param adjustToExtent true para ajustar y false si no queremos que lo haga. Por defecto
63
         * estar? a true.
64
         */
65
        public void setAdjustToExtent(boolean adjustToExtent);
66
        
67
        /**
68
         * Obtiene el flag que ajusta el extent de la petici?n al del raster. Si est? a
69
         * true en caso de que el extent de la petici?n sea mayor lo ajustar? a los limites
70
         * de este. Si est? a false no lo ajustar? rellenando los valores con NoData. Por defecto
71
         * estar? a true.
72
         * @return true si ajusta y false si no lo hace
73
         */
74
        public boolean isAdjustToExtent();
75
        
76
        /**
77
         * Para este GeoRasterFile asigna que bandas se pintaran
78
         * sobre el RasterBuf cuando se haga un update. Cada posici?n del vector es una banda
79
         * del rasterBuf y el contenido de esa posici?n es la banda de la imagen que se dibujar?
80
         * sobre ese RasterBuf.
81
         * @param drawableBands        Array con las bandas a dibujar.
82
         * @return array con tantos elementos como bandas a dibujar. El valor contenido es el fichero del
83
         * dataset multifichero al que corresponde la banda.
84
         */
85
        public void setDrawableBands(int[] drawableBands);
86
        
87
        /**
88
         * Para este GeoRasterFile asigna que bandas se pintaran
89
         * sobre el RasterBuf cuando se haga un update. Cada posici?n del vector es una banda
90
         * del rasterBuf y el contenido de esa posici?n es la banda de la imagen que se dibujar?
91
         * sobre ese RasterBuf. Esta llamada asigna todas las bandas dibujables en su orden natural.
92
         * @return array con tantos elementos como bandas a dibujar. El valor contenido es el fichero del
93
         * dataset multifichero al que corresponde la banda.
94
         */
95
        public void setAllDrawableBands();
96
        
97
        /**
98
         * Obtiene el array que contiene el orden de bandas. Cada posici?n del vector es una banda
99
         * del rasterBuf y el contenido de esa posici?n es la banda de la imagen que se dibujar?
100
         * sobre ese RasterBuf.
101
         * @return Array de enteros con el orden de las badas
102
         */
103
        public int[] getDrawableBands();
104
        
105
        /**
106
         * Asigna el flag que dice si la carga del siguiente buffer es de solo lectura o lectura/escritura.
107
         * La asignaci?n del flag de solo lectura a true debe hacerse para cada consulta.
108
         * @param readOnly true si la siguiente carga de buffer se hace de solo lectura y false si es de lectura/escritura
109
         */
110
        public void setReadOnly(boolean readOnly);
111
        
112
        /**
113
         * Asigna el flag que dice si la carga del siguiente buffer es en memoria
114
         * @param memory true si la siguiente carga de buffer se hace en memoria y false se deja decidir al dataset 
115
         * el tipo de buffer
116
         */
117
        public void setMemoryBuffer(boolean readOnly);
118
        
119
        /**
120
         * Asigna el valor noData con el que se rellenan las celdas cuando se hace una petici?n
121
         * en la que no se quiere que se ajuste al ?rea del raster. Por defecto noData tendr? el valor
122
         * que aparece en IBuffer.
123
         * @param noData
124
         */
125
        public void setNoDataToFill(double noData);
126
        
127
        /**
128
         * Consulta el flag de supersampleo en la carga del buffer.
129
         * <P>
130
         * Si este flag es false
131
         * y pasamos un buffer de tama?o mayor que el n?mero de pixels del ?rea requerida en la
132
         * llamada setAreaOfInterest entonces se ajustar? este buffer al n?mero de pixeles contenidos
133
         * en el ?rea.
134
         * </P>
135
         * <P>
136
         * Por ejemplo, si solicitamos un ?rea de 5x4 pixels de un raster y pedimos que nos los grabe
137
         * en un buffer de 500x400, si esta variable es false el buffer lo generar? de 5x4. Si esta
138
         * variable es true el buffer lo generar? de 500x400.
139
         * </P>
140
         *
141
         * @return true si el supersampleo en la carga del buffer est? activado y false si no lo est?.
142
         */
143
        public boolean isSupersamplingLoadingBuffer();
144
        
145
        /**
146
         * Returns true if the buffer is not writable
147
         * @return
148
         */
149
        public boolean isReadOnly();
150

    
151
        /**
152
         * Activa o desactiva el supersampling en la carga del buffer.
153
         * <P>
154
         * Si este flag es false
155
         * y pasamos un buffer de tama?o mayor que el n?mero de pixels del ?rea requerida en la
156
         * llamada setAreaOfInterest entonces se ajustar? este buffer al n?mero de pixeles contenidos
157
         * en el ?rea.
158
         * </P>
159
         * <P>
160
         * Por ejemplo, si solicitamos un ?rea de 5x4 pixels de un raster y pedimos que nos los grabe
161
         * en un buffer de 500x400, si esta variable es false el buffer lo generar? de 5x4. Si esta
162
         * variable es true el buffer lo generar? de 500x400.
163
         * </P>
164
         *
165
         * @param supersamplingLoadingBuffer true o false para activar o desactivar el supersampling en la
166
         * carga del buffer.
167
         */
168
        public void setSupersamplingLoadingBuffer(boolean supersamplingLoadingBuffer);
169
        
170
        /**
171
         * Asigna el ?rea de interes en coordenadas del mundo real. 
172
         * Si las coordenadas exceden del tama?o de la imagen estas coordenadas son ajustadas el extent.
173
         * @param x Coordenada X, esquina superior izquierda
174
         * @param y Coordenada Y, esquina superior izquierda
175
         * @param w Ancho del ?rea
176
         * @param h Alto del ?rea
177
         */
178
        public void setAreaOfInterest(double x, double y, double w, double h);
179
        
180
        /**
181
         * Asigna el ?rea de interes en coordenadas del mundo real. Si las coordenadas exceden del tama?o de la imagen
182
         * estas coordenadas son ajustadas el extent. Si la petici?n es tileada se har? una llamada al listener cada vez
183
         * que se reciba un tile.
184
         * @param x Coordenada X, esquina superior izquierda
185
         * @param y Coordenada Y, esquina superior izquierda
186
         * @param w Ancho del ?rea
187
         * @param h Alto del ?rea
188
         * @param bufWidth Ancho del buffer
189
         * @param bufHeight Alto del buffer
190
         * @param listener Este listener es usado para recibir tiles. Cada vez que se recibe uno se har? una llamada.
191
         * @return En caso de que el buffer sea mayor que el tama?o seleccionado de raster se produce supersampleo. La funci?n devuelve
192
         * un array de dos elementos que representan el desplazamiento en pixels de X e Y de la esquina superior izquierda.
193
         */
194
        public void setAreaOfInterest(double ulx, double uly, double lrx, double lry, int bufWidth, int bufHeight, TileListener listener);
195
        
196
        /**
197
         * Asigna el ?rea de interes en coordenadas del mundo real. 
198
         * Si las coordenadas exceden del tama?o de la imagen estas coordenadas son ajustadas el extent.
199
         * Este es el m?todo que se gasta para dibujado. Aunque se ajusten las coordenadas reales el tama?o de buffer ser
200
         * respeta. Si el supersamplig est? desactivado entonces cuando el zoom es mayor que 1:1 modifica el tama?o de buffer
201
         * devolviendo un pixel buffer en un pixel de imagen. El buffer resultante ser? menor que el pedido. Esto es as? porque
202
         * hay proveedores que no supersamplean y porque el dibujado se encarga de supersamplear.  
203
         * @param x Coordenada X, esquina superior izquierda
204
         * @param y Coordenada Y, esquina superior izquierda
205
         * @param w Ancho del ?rea
206
         * @param h Alto del ?rea
207
         * @param bufWidth Ancho del buffer
208
         * @param bufHeight Alto del buffer
209
         * @return En caso de que el buffer sea mayor que el tama?o seleccionado de raster se produce supersampleo. La funci?n devuelve
210
         * un array de dos elementos que representan el desplazamiento en pixels de X e Y de la esquina superior izquierda.
211
         * @throws ArrayIndexOutOfBoundsException
212
         * @throws InvalidSetViewException 
213
         */
214
        public void setAreaOfInterest(double ulx, double uly, double lrx, double lry, int bufWidth, int bufHeight);
215
        
216
        /**
217
         * Asigna el ?rea de interes en coordenadas pixel. Si las coordenadas exceden del tama?o de la imagen
218
         * lanza una excepci?n.
219
         * @param x Coordenada X, esquina superior izquierda
220
         * @param y Coordenada Y, esquina superior izquierda
221
         * @param w Ancho del ?rea
222
         * @param h Alto del ?rea
223
         * @throws InvalidSetViewException  
224
         * @throws ArrayIndexOutOfBoundsException
225
         */
226
        public void setAreaOfInterest(int x, int y, int w, int h);
227
        
228
        /**
229
         * Asigna el ?rea de inter?s a toda la extensi?n del raster.
230
         */
231
        public void setAreaOfInterest();
232
        
233
        /**
234
         * Asigna el ?rea de interes en coordenadas pixel. Esta operaci?n cargar? un RasterBuffer con los datos solicitados por
235
         * lo que, si al acabar hacemos getRasterBuf obtendremos la matriz de datos. Si las coordenadas exceden del tama?o
236
         * de la imagen lanza una excepci?n.
237
         * @param x Coordenada X, esquina superior izquierda
238
         * @param y Coordenada Y, esquina superior izquierda
239
         * @param w Ancho del ?rea
240
         * @param h Alto del ?rea
241
         * @param bufWidth Ancho del buffer
242
         * @param bufHeight Alto del buffer
243
         * @throws ArrayIndexOutOfBoundsException
244
         */
245
        public void setAreaOfInterest(int x, int y, int w, int h, int bufWidth, int bufHeight);
246
}