svn-gvsig-desktop / trunk / libraries / libRaster / src / org / gvsig / raster / RasterLibrary.java @ 11237
History | View | Annotate | Download (4.21 KB)
1 | 10960 | nacho | package org.gvsig.raster; |
---|---|---|---|
2 | |||
3 | import java.io.File; |
||
4 | import java.util.ArrayList; |
||
5 | |||
6 | import org.gvsig.raster.dataset.io.EcwDriver; |
||
7 | import org.gvsig.raster.dataset.io.GdalDriver; |
||
8 | import org.gvsig.raster.dataset.io.GdalWriter; |
||
9 | 11074 | nacho | import org.gvsig.raster.dataset.io.MemoryRasterDriver; |
10 | 11237 | nacho | import org.gvsig.raster.util.extensionPoints.ExtensionPoint; |
11 | import org.gvsig.raster.util.extensionPoints.ExtensionPoints; |
||
12 | import org.gvsig.raster.util.extensionPoints.ExtensionPointsSingleton; |
||
13 | 10960 | nacho | |
14 | /**
|
||
15 | *
|
||
16 | * @author Nacho Brodin (nachobrodin@gmail.com)
|
||
17 | *
|
||
18 | */
|
||
19 | public class RasterLibrary { |
||
20 | public static ArrayList readersClassList = new ArrayList(); |
||
21 | public static ArrayList writersClassList = new ArrayList(); |
||
22 | |||
23 | /**
|
||
24 | * En la generaci?n autom?tica de clases esta variable representa el n?mero de
|
||
25 | * clases en las que se hace la divisi?n.
|
||
26 | */
|
||
27 | 11183 | bsanchez | public static int defaultNumberOfClasses = 64; |
28 | 11207 | nacho | /**
|
29 | * Tama?o de bloque en los procesos que recorren un raster completo a base de ventanas con recorrido
|
||
30 | * descendente. Esta variable indica la altura de dicho bloque. Por lo tanto cada bloque ser? de
|
||
31 | * raster.width X blockHeight. Tipicamente recorridos de este tipo se usan para el calculo de estad?sticas,
|
||
32 | 11237 | nacho | * histogramas, salvado a raster, etc...
|
33 | 11207 | nacho | */
|
34 | public static int blockHeight = 512; |
||
35 | 10960 | nacho | |
36 | //*************CACHE*******************
|
||
37 | /**
|
||
38 | * Tama?o aproximado de cach? en Megas. Si este valor es alto cabr?n muchas p?ginas en memoria
|
||
39 | * a la vez y si es bajo cabr?n pocas. Hay que tener en cuenta que al instanciar se convertira en bytes
|
||
40 | * para su mejor tratamiento. Al llamar al constructor esta variable contendr? el tama?o exacto
|
||
41 | * de la cache en bytes. El tama?o aqu? especificado es aproximado. Este variar? dependiendo de los
|
||
42 | * par?metros del raster a cachear ya que las p?ginas deben tener una altura potencia de 2.
|
||
43 | */
|
||
44 | public static long cacheSize = 40; |
||
45 | /**
|
||
46 | * Tama?o m?ximo de la p?gina en Megas. Hay que tener en cuenta que al instanciar se convertira en bytes
|
||
47 | * para su mejor tratamiento. Al llamar al constructor esta variable contendr? el tama?o exacto
|
||
48 | * de la p?gina en bytes
|
||
49 | */
|
||
50 | public static double pageSize = 4; |
||
51 | /**
|
||
52 | * N?mero de p?ginas que tiene cada conjunto de cach?
|
||
53 | */
|
||
54 | public static int pagsPerGroup = 5; |
||
55 | |||
56 | //*************PATHS*******************
|
||
57 | |||
58 | /**
|
||
59 | * Directorio temporal para la cach?. Si gastamos el mismo que andami este se ocupar? de gestionar su
|
||
60 | * destrucci?n al cerrar gvSIG.
|
||
61 | */
|
||
62 | public static String tempCacheDirectoryPath = System.getProperty("java.io.tmpdir")+"/tmp-andami"; |
||
63 | |||
64 | /**
|
||
65 | * Ejecuta las acciones necesarias para arrancar la librer?a.
|
||
66 | */
|
||
67 | public static void wakeUp(){ |
||
68 | 11237 | nacho | //Punto de extensi?n para registro de drivers de lectura
|
69 | ExtensionPoints extensionPoints = ExtensionPointsSingleton.getInstance(); |
||
70 | if (!extensionPoints.containsKey("RasterReader")) { |
||
71 | extensionPoints.put( new ExtensionPoint( "RasterReader", "Raster Reader Classes")); |
||
72 | } |
||
73 | |||
74 | //Punto de extensi?n para registro de drivers de escritura
|
||
75 | if (!extensionPoints.containsKey("RasterWriter")) { |
||
76 | extensionPoints.put(new ExtensionPoint("RasterWriter", "Raster Writer Classes")); |
||
77 | } |
||
78 | //Ejecuta el c?digo static de la clase cada driver
|
||
79 | 10960 | nacho | readersClassList.add(GdalDriver.class); |
80 | readersClassList.add(EcwDriver.class); |
||
81 | 11074 | nacho | readersClassList.add(MemoryRasterDriver.class); |
82 | 10960 | nacho | writersClassList.add(GdalWriter.class); |
83 | |||
84 | //Limpiamos el directorio temporal
|
||
85 | RasterLibrary.cleanUpTempFiles(); |
||
86 | } |
||
87 | |||
88 | /**
|
||
89 | * Elimina los ficheros del directorio temporal. Realizamos esta acci?n al levantar la
|
||
90 | * librer?a.
|
||
91 | */
|
||
92 | public static void cleanUpTempFiles() { |
||
93 | try{
|
||
94 | File tempDirectory = new File(tempCacheDirectoryPath); |
||
95 | |||
96 | File[] files = tempDirectory.listFiles(); |
||
97 | if (files!=null) { |
||
98 | for (int i = 0; i < files.length; i++) { |
||
99 | // s?lo por si en un futuro se necesitan crear directorios temporales
|
||
100 | if (files[i].isDirectory()) deleteDirectory(files[i]);
|
||
101 | files[i].delete(); |
||
102 | } |
||
103 | } |
||
104 | tempDirectory.delete(); |
||
105 | } catch (Exception e) { } |
||
106 | |||
107 | } |
||
108 | |||
109 | /**
|
||
110 | * Recursive directory delete.
|
||
111 | * @param f
|
||
112 | */
|
||
113 | private static void deleteDirectory(File f) { |
||
114 | File[] files = f.listFiles(); |
||
115 | for (int i = 0; i < files.length; i++) { |
||
116 | if (files[i].isDirectory()) deleteDirectory(files[i]);
|
||
117 | files[i].delete(); |
||
118 | } |
||
119 | |||
120 | } |
||
121 | } |