root / trunk / libraries / libRaster / src / org / gvsig / raster / RasterLibrary.java @ 12160
History | View | Annotate | Download (7.07 KB)
1 | 11526 | bsanchez | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
|
||
4 | *
|
||
5 | * This program is free software; you can redistribute it and/or
|
||
6 | * modify it under the terms of the GNU General Public License
|
||
7 | * as published by the Free Software Foundation; either version 2
|
||
8 | * of the License, or (at your option) any later version.
|
||
9 | *
|
||
10 | * This program is distributed in the hope that it will be useful,
|
||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
13 | * GNU General Public License for more details.
|
||
14 | *
|
||
15 | * You should have received a copy of the GNU General Public License
|
||
16 | * along with this program; if not, write to the Free Software
|
||
17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||
18 | */
|
||
19 | 10960 | nacho | package org.gvsig.raster; |
20 | |||
21 | import java.io.File; |
||
22 | import java.util.ArrayList; |
||
23 | |||
24 | import org.gvsig.raster.dataset.io.EcwDriver; |
||
25 | 11505 | nacho | import org.gvsig.raster.dataset.io.ErmapperWriter; |
26 | 10960 | nacho | import org.gvsig.raster.dataset.io.GdalDriver; |
27 | import org.gvsig.raster.dataset.io.GdalWriter; |
||
28 | 11074 | nacho | import org.gvsig.raster.dataset.io.MemoryRasterDriver; |
29 | 11866 | nacho | import org.gvsig.raster.dataset.io.MrSidDriver; |
30 | 12066 | nacho | import org.gvsig.raster.grid.filter.bands.ColorTableListManager; |
31 | 12095 | dguerrero | import org.gvsig.raster.grid.filter.convolution.ConvolutionListManager; |
32 | 12000 | bsanchez | import org.gvsig.raster.grid.filter.correction.MedianListManager; |
33 | 11526 | bsanchez | import org.gvsig.raster.grid.filter.enhancement.BrightnessContrastListManager; |
34 | import org.gvsig.raster.grid.filter.enhancement.EnhancementListManager; |
||
35 | 11986 | bsanchez | import org.gvsig.raster.grid.filter.segmentation.FirstDerivativeListManager; |
36 | 11237 | nacho | import org.gvsig.raster.util.extensionPoints.ExtensionPoint; |
37 | import org.gvsig.raster.util.extensionPoints.ExtensionPoints; |
||
38 | import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton; |
||
39 | 10960 | nacho | /**
|
40 | 11351 | nacho | * Clase principal de la libreria. En ella se definen variables globales con informaci?n
|
41 | * de uso general, as? como acciones a realizar al arracar la librer?a. El m?todo que
|
||
42 | * contiene las acciones de arranque es wakeUp. Las tareas principales de este m?todo
|
||
43 | * son de registro de drivers de lectura y escritura y eliminaci?n del directorio de
|
||
44 | * temporales.
|
||
45 | 10960 | nacho | *
|
46 | * @author Nacho Brodin (nachobrodin@gmail.com)
|
||
47 | */
|
||
48 | public class RasterLibrary { |
||
49 | public static ArrayList writersClassList = new ArrayList(); |
||
50 | 11986 | bsanchez | |
51 | 10960 | nacho | /**
|
52 | * En la generaci?n autom?tica de clases esta variable representa el n?mero de
|
||
53 | * clases en las que se hace la divisi?n.
|
||
54 | */
|
||
55 | 11183 | bsanchez | public static int defaultNumberOfClasses = 64; |
56 | 11207 | nacho | /**
|
57 | * Tama?o de bloque en los procesos que recorren un raster completo a base de ventanas con recorrido
|
||
58 | * descendente. Esta variable indica la altura de dicho bloque. Por lo tanto cada bloque ser? de
|
||
59 | * raster.width X blockHeight. Tipicamente recorridos de este tipo se usan para el calculo de estad?sticas,
|
||
60 | 11386 | nacho | * histogramas, salvado a raster, etc... Es importante para el buen funcionamiento que este bloque sea
|
61 | * potencia de dos.
|
||
62 | 11207 | nacho | */
|
63 | public static int blockHeight = 512; |
||
64 | 11986 | bsanchez | |
65 | 10960 | nacho | //*************CACHE*******************
|
66 | /**
|
||
67 | * Tama?o aproximado de cach? en Megas. Si este valor es alto cabr?n muchas p?ginas en memoria
|
||
68 | * a la vez y si es bajo cabr?n pocas. Hay que tener en cuenta que al instanciar se convertira en bytes
|
||
69 | * para su mejor tratamiento. Al llamar al constructor esta variable contendr? el tama?o exacto
|
||
70 | * de la cache en bytes. El tama?o aqu? especificado es aproximado. Este variar? dependiendo de los
|
||
71 | * par?metros del raster a cachear ya que las p?ginas deben tener una altura potencia de 2.
|
||
72 | */
|
||
73 | 11947 | nacho | public static long cacheSize = 25; |
74 | 10960 | nacho | /**
|
75 | * Tama?o m?ximo de la p?gina en Megas. Hay que tener en cuenta que al instanciar se convertira en bytes
|
||
76 | * para su mejor tratamiento. Al llamar al constructor esta variable contendr? el tama?o exacto
|
||
77 | * de la p?gina en bytes
|
||
78 | */
|
||
79 | public static double pageSize = 4; |
||
80 | /**
|
||
81 | * N?mero de p?ginas que tiene cada conjunto de cach?
|
||
82 | */
|
||
83 | public static int pagsPerGroup = 5; |
||
84 | 11986 | bsanchez | |
85 | 10960 | nacho | //*************PATHS*******************
|
86 | 11986 | bsanchez | |
87 | 10960 | nacho | /**
|
88 | * Directorio temporal para la cach?. Si gastamos el mismo que andami este se ocupar? de gestionar su
|
||
89 | * destrucci?n al cerrar gvSIG.
|
||
90 | */
|
||
91 | 11351 | nacho | public static String tempCacheDirectoryPath = System.getProperty("java.io.tmpdir") + "/tmp-andami"; |
92 | 10960 | nacho | /**
|
93 | 11483 | nacho | * Ruta o rutas donde busca jars con clases que incorporen elementos nuevos que extiendan
|
94 | * otros ya existentes. Estos pueden ser drivers o filtros.
|
||
95 | */
|
||
96 | public static String[] pathExtensions = {"./"}; |
||
97 | /**
|
||
98 | 10960 | nacho | * Ejecuta las acciones necesarias para arrancar la librer?a.
|
99 | */
|
||
100 | 11527 | bsanchez | public static void wakeUp() { |
101 | 11237 | nacho | //Punto de extensi?n para registro de drivers de lectura
|
102 | ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance(); |
||
103 | 11986 | bsanchez | if (!extensionPoints.containsKey("RasterReader")) |
104 | 11237 | nacho | extensionPoints.put( new ExtensionPoint( "RasterReader", "Raster Reader Classes")); |
105 | 11986 | bsanchez | |
106 | 11237 | nacho | //Punto de extensi?n para registro de drivers de escritura
|
107 | 11986 | bsanchez | if (!extensionPoints.containsKey("RasterWriter")) |
108 | 11237 | nacho | extensionPoints.put(new ExtensionPoint("RasterWriter", "Raster Writer Classes")); |
109 | 11648 | nacho | |
110 | 11237 | nacho | //Ejecuta el c?digo static de la clase cada driver
|
111 | 12122 | bsanchez | GdalDriver.register(); |
112 | 12124 | nacho | EcwDriver.register(); |
113 | MrSidDriver.register(); |
||
114 | MemoryRasterDriver.register(); |
||
115 | GdalWriter.register(); |
||
116 | ErmapperWriter.register(); |
||
117 | 11986 | bsanchez | |
118 | 11528 | bsanchez | //Punto de extensi?n para registro de filtros
|
119 | 11526 | bsanchez | if (!extensionPoints.containsKey("RasterFilter")) { |
120 | extensionPoints.put(new ExtensionPoint("RasterFilter", "Raster Filter Classes")); |
||
121 | } |
||
122 | 11710 | bsanchez | |
123 | // Invoca las llamadas estaticas de cada clase para registrarlas en los
|
||
124 | // puntos de extensi?n
|
||
125 | 12122 | bsanchez | BrightnessContrastListManager.register(); |
126 | EnhancementListManager.register(); |
||
127 | FirstDerivativeListManager.register(); |
||
128 | MedianListManager.register(); |
||
129 | ConvolutionListManager.register(); |
||
130 | 11710 | bsanchez | // Registrar los nuevos filtros del directorio
|
131 | registerExtensions(); |
||
132 | 11986 | bsanchez | |
133 | 10960 | nacho | //Limpiamos el directorio temporal
|
134 | RasterLibrary.cleanUpTempFiles(); |
||
135 | } |
||
136 | 11986 | bsanchez | |
137 | 10960 | nacho | /**
|
138 | 11526 | bsanchez | * Elimina los ficheros del directorio temporal. Realizamos esta acci?n al
|
139 | * levantar la librer?a.
|
||
140 | 10960 | nacho | */
|
141 | 11526 | bsanchez | public static void cleanUpTempFiles() { |
142 | try {
|
||
143 | File tempDirectory = new File(tempCacheDirectoryPath); |
||
144 | 10960 | nacho | |
145 | 11526 | bsanchez | File[] files = tempDirectory.listFiles(); |
146 | if (files != null) { |
||
147 | for (int i = 0; i < files.length; i++) { |
||
148 | // s?lo por si en un futuro se necesitan crear directorios temporales
|
||
149 | if (files[i].isDirectory())
|
||
150 | deleteDirectory(files[i]); |
||
151 | files[i].delete(); |
||
152 | } |
||
153 | } |
||
154 | tempDirectory.delete(); |
||
155 | } catch (Exception e) { |
||
156 | } |
||
157 | } |
||
158 | 10960 | nacho | |
159 | 11526 | bsanchez | /**
|
160 | * Recursive directory delete.
|
||
161 | * @param f
|
||
162 | */
|
||
163 | private static void deleteDirectory(File f) { |
||
164 | File[] files = f.listFiles(); |
||
165 | for (int i = 0; i < files.length; i++) { |
||
166 | if (files[i].isDirectory())
|
||
167 | deleteDirectory(files[i]); |
||
168 | files[i].delete(); |
||
169 | } |
||
170 | } |
||
171 | 10960 | nacho | |
172 | 11526 | bsanchez | /**
|
173 | * Esta funci?n buscar? todos los jars en las rutas de pathExtensions y
|
||
174 | * registrar? todos las clases registrables. En este momento hay posibilidad
|
||
175 | * de registro de drivers y filtros.
|
||
176 | */
|
||
177 | 11710 | bsanchez | private static void registerExtensions() { |
178 | 11526 | bsanchez | for (int iPath = 0; iPath < pathExtensions.length; iPath++) { |
179 | 11505 | nacho | File files = new File(pathExtensions[iPath]); |
180 | 11526 | bsanchez | if (files.isDirectory()) {
|
181 | // TODO:FUNCIONALIDAD: Descubrimiento de drivers y filtros registrables.
|
||
182 | 11505 | nacho | } |
183 | } |
||
184 | 11526 | bsanchez | } |
185 | 10960 | nacho | } |