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 @ 162

History | View | Annotate | Download (8.68 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

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

    
137
        /**
138
         * Activa o desactiva el supersampling en la carga del buffer.
139
         * <P>
140
         * Si este flag es false
141
         * y pasamos un buffer de tama?o mayor que el n?mero de pixels del ?rea requerida en la
142
         * llamada setAreaOfInterest entonces se ajustar? este buffer al n?mero de pixeles contenidos
143
         * en el ?rea.
144
         * </P>
145
         * <P>
146
         * Por ejemplo, si solicitamos un ?rea de 5x4 pixels de un raster y pedimos que nos los grabe
147
         * en un buffer de 500x400, si esta variable es false el buffer lo generar? de 5x4. Si esta
148
         * variable es true el buffer lo generar? de 500x400.
149
         * </P>
150
         *
151
         * @param supersamplingLoadingBuffer true o false para activar o desactivar el supersampling en la
152
         * carga del buffer.
153
         */
154
        public void setSupersamplingLoadingBuffer(boolean supersamplingLoadingBuffer);
155
        
156
        /**
157
         * Asigna el ?rea de interes en coordenadas del mundo real. Si las coordenadas exceden del tama?o de la imagen
158
         * estas coordenadas son ajustadas el extent.
159
         * @param x Coordenada X, esquina superior izquierda
160
         * @param y Coordenada Y, esquina superior izquierda
161
         * @param w Ancho del ?rea
162
         * @param h Alto del ?rea
163
         * @throws ArrayIndexOutOfBoundsException
164
         * @throws InvalidSetViewException 
165
         */
166
        public void setAreaOfInterest(double x, double y, double w, double h);
167
        
168
        /**
169
         * Asigna el ?rea de interes en coordenadas del mundo real. Si las coordenadas exceden del tama?o de la imagen
170
         * estas coordenadas son ajustadas el extent.
171
         * @param x Coordenada X, esquina superior izquierda
172
         * @param y Coordenada Y, esquina superior izquierda
173
         * @param w Ancho del ?rea
174
         * @param h Alto del ?rea
175
         * @param bufWidth Ancho del buffer
176
         * @param bufHeight Alto del buffer
177
         * @return En caso de que el buffer sea mayor que el tama?o seleccionado de raster se produce supersampleo. La funci?n devuelve
178
         * un array de dos elementos que representan el desplazamiento en pixels de X e Y de la esquina superior izquierda.
179
         * @throws ArrayIndexOutOfBoundsException
180
         * @throws InvalidSetViewException 
181
         */
182
        public void setAreaOfInterest(double ulx, double uly, double lrx, double lry, int bufWidth, int bufHeight);
183
        
184
        /**
185
         * Asigna el ?rea de interes en coordenadas pixel. Si las coordenadas exceden del tama?o de la imagen
186
         * lanza una excepci?n.
187
         * @param x Coordenada X, esquina superior izquierda
188
         * @param y Coordenada Y, esquina superior izquierda
189
         * @param w Ancho del ?rea
190
         * @param h Alto del ?rea
191
         * @throws InvalidSetViewException  
192
         * @throws ArrayIndexOutOfBoundsException
193
         */
194
        public void setAreaOfInterest(int x, int y, int w, int h);
195
        
196
        /**
197
         * Asigna el ?rea de inter?s a toda la extensi?n del raster.
198
         */
199
        public void setAreaOfInterest();
200
        
201
        /**
202
         * Asigna el ?rea de interes en coordenadas pixel. Esta operaci?n cargar? un RasterBuffer con los datos solicitados por
203
         * lo que, si al acabar hacemos getRasterBuf obtendremos la matriz de datos. Si las coordenadas exceden del tama?o
204
         * de la imagen lanza una excepci?n.
205
         * @param x Coordenada X, esquina superior izquierda
206
         * @param y Coordenada Y, esquina superior izquierda
207
         * @param w Ancho del ?rea
208
         * @param h Alto del ?rea
209
         * @param bufWidth Ancho del buffer
210
         * @param bufHeight Alto del buffer
211
         * @throws ArrayIndexOutOfBoundsException
212
         */
213
        public void setAreaOfInterest(int x, int y, int w, int h, int bufWidth, int bufHeight);
214
}