Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libjni-gdal / src / main / native / jgdal / gdaldriver_interfaz.c @ 17679

History | View | Annotate | Download (7.24 KB)

1
/**********************************************************************
2
 * $Id: gdaldriver_interfaz.c 7765 2006-10-03 07:05:18Z nacho $
3
 *
4
 * Name:     rasterband_interfaz.c
5
 * Project:  JGDAL. Interface java to gdal (Frank Warmerdam).
6
 * Purpose:  Raster band's Basic Funcions.
7
 * Author:   Nacho Brodin, brodin_ign@gva.es
8
 *
9
 **********************************************************************/
10
/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
11
*
12
* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
13
*
14
* This program is free software; you can redistribute it and/or
15
* modify it under the terms of the GNU General Public License
16
* as published by the Free Software Foundation; either version 2
17
* of the License, or (at your option) any later version.
18
*
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
* GNU General Public License for more details.
23
*
24
* You should have received a copy of the GNU General Public License
25
* along with this program; if not, write to the Free Software
26
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
27
*
28
* For more information, contact:
29
*
30
*  Generalitat Valenciana
31
*   Conselleria d'Infraestructures i Transport
32
*   Av. Blasco Ib��ez, 50
33
*   46010 VALENCIA
34
*   SPAIN
35
*
36
*      +34 963862235
37
*   gvsig@gva.es
38
*      www.gvsig.gva.es
39
*
40
*    or
41
*
42
*   IVER T.I. S.A
43
*   Salamanca 50
44
*   46005 Valencia
45
*   Spain
46
*
47
*   +34 963163400
48
*   dac@iver.es
49
*/
50

    
51

    
52

    
53
#include <jni.h>
54
#include "gdal.h"
55
#include "cpl_string.h"
56

    
57

    
58
/* ******************************************************************** */
59
/*                              createCopy                              */
60
/* ******************************************************************** */
61

    
62
JNIEXPORT jlong JNICALL Java_es_gva_cit_jgdal_GdalDriver_createCopyNat
63
  (JNIEnv *env, jobject obj, jlong ptr_driver, jstring file, jlong ptr_gdal, jint bstrict){
64
          
65
          GDALDriverH *driver  = (GDALDriverH *) 0 ;
66
          GDALDatasetH *dt_fte  = (GDALDatasetH *) 0 ;
67
          GDALDatasetH dt_dstno;
68
          jlong jresult=0;
69
        const char *filename;
70
          
71
          dt_fte = *(GDALDatasetH **)&ptr_gdal;
72
          driver = *(GDALDriverH **)&ptr_driver;
73
          
74
         filename = (*env)->GetStringUTFChars(env, file, 0);
75
         
76
          dt_dstno = GDALCreateCopy(driver, filename, dt_fte, FALSE, NULL, NULL, NULL);
77
          *(GDALDatasetH **)&jresult = dt_dstno;
78
          
79
          (*env)->ReleaseStringUTFChars(env, file, filename);
80
          
81
    return jresult;
82
          
83
  }
84
 
85
/* ******************************************************************** */
86
/*                              createCopyParams                        */
87
/* ******************************************************************** */ 
88
  
89
JNIEXPORT jlong JNICALL Java_es_gva_cit_jgdal_GdalDriver_createCopyParamsNat
90
  (JNIEnv *env, jobject obj, jlong ptr_driver, jstring file, jlong ptr_gdal, jint bstrict, jobject options){
91
          
92
          GDALDriverH *driver  = (GDALDriverH *) 0 ;
93
          GDALDatasetH *dt_fte  = (GDALDatasetH *) 0 ;
94
          GDALDatasetH dt_dstno;
95
          jlong jresult=0;
96
        const char *filename;
97
        char **papszOptions = NULL;
98
        int i;
99
        
100
        //Variables para la obtenci�n de opciones
101
        
102
        jfieldID fid_vars, fid_datos;
103
        jobjectArray array_vars, array_datos;
104
        jmethodID metodo;
105
        jobject objeto_vars,objeto_datos;
106
        int tam;
107
        const char *str_vars,*str_datos;
108
          
109
           
110
          dt_fte = *(GDALDatasetH **)&ptr_gdal;
111
          driver = *(GDALDriverH **)&ptr_driver;
112
          
113
         filename = (*env)->GetStringUTFChars(env, file, 0);
114
         
115
         //Obtenemos los par�metros
116
         
117
         if(options!=NULL){
118
                 jclass clase = (*env)->GetObjectClass(env, options);
119
                 fid_vars = (*env)->GetFieldID(env, clase, "vars", "[Ljava/lang/String;");
120
                 fid_datos = (*env)->GetFieldID(env, clase, "datos", "[Ljava/lang/String;");
121
                 array_vars =(jobjectArray)(*env)->GetObjectField(env, options, fid_vars);
122
                 array_datos =(jobjectArray)(*env)->GetObjectField(env, options, fid_datos);
123
                 
124
                 metodo = (*env)->GetMethodID(env, clase, "getSize","()I");
125
            tam = (*env)->CallIntMethod(env,options,metodo);
126
          
127
            for(i=0;i<tam;i++){
128
                    objeto_vars = (*env)->GetObjectArrayElement(env, array_vars, i);
129
                    objeto_datos = (*env)->GetObjectArrayElement(env, array_datos, i);
130
                    str_vars = (*env)->GetStringUTFChars(env,objeto_vars,0);
131
                    str_datos = (*env)->GetStringUTFChars(env,objeto_datos,0);
132
                       
133
                       //printf("L105gdaldriver_interfaz.c var=%s param=%s\n",str_vars,str_datos);
134
                      papszOptions = CSLSetNameValue( papszOptions, str_vars, str_datos );            
135
                       
136
                       (*env)->ReleaseStringUTFChars(env, objeto_vars, str_vars);     
137
                       (*env)->ReleaseStringUTFChars(env, objeto_datos, str_datos); 
138
                          
139
            }    
140
         }
141
    
142
         
143
          dt_dstno = GDALCreateCopy(driver, filename, dt_fte, FALSE, papszOptions, NULL, NULL);
144
          *(GDALDatasetH **)&jresult = dt_dstno;
145
          
146
          (*env)->ReleaseStringUTFChars(env, file, filename);
147
          //printf("L76createCopy jresult=%ld",(long)jresult);
148
    return jresult;
149
          
150
  }
151
  
152
/* ******************************************************************** */
153
/*                              create                                  */
154
/* ******************************************************************** */
155
  
156
  JNIEXPORT jlong JNICALL Java_es_gva_cit_jgdal_GdalDriver_createNat
157
  (JNIEnv *env, jobject obj, jlong cPtr, jstring file, jint nXSize, jint nYSize, jint nBands, jint nType, jobject options){
158

    
159
        GDALDriverH *driver  = (GDALDriverH *) 0 ;
160
          GDALDatasetH *dt;
161
          jlong jresult=0;
162
        const char *filename;
163
        char **papszOptions = NULL;
164
        int i;
165
        
166
        //Variables para la obtenci�n de opciones
167
        
168
        jfieldID fid_vars, fid_datos;
169
        jobjectArray array_vars, array_datos;
170
        jmethodID metodo;
171
        jobject objeto_vars,objeto_datos;
172
        int tam;
173
        const char *str_vars,*str_datos;
174
          
175
           
176
          driver = *(GDALDriverH **)&cPtr;
177
          
178
         filename = (*env)->GetStringUTFChars(env, file, 0);
179
         
180
         //Obtenemos los par�metros
181
         
182
         if(options!=NULL){
183
                 jclass clase = (*env)->GetObjectClass(env, options);
184
                 fid_vars = (*env)->GetFieldID(env, clase, "vars", "[Ljava/lang/String;");
185
                 fid_datos = (*env)->GetFieldID(env, clase, "datos", "[Ljava/lang/String;");
186
                 array_vars =(jobjectArray)(*env)->GetObjectField(env, options, fid_vars);
187
                 array_datos =(jobjectArray)(*env)->GetObjectField(env, options, fid_datos);
188
                 
189
                 metodo = (*env)->GetMethodID(env, clase, "getSize","()I");
190
            tam = (*env)->CallIntMethod(env,options,metodo);
191
          
192
            for(i=0;i<tam;i++){
193
                    objeto_vars = (*env)->GetObjectArrayElement(env, array_vars, i);
194
                    objeto_datos = (*env)->GetObjectArrayElement(env, array_datos, i);
195
                    str_vars = (*env)->GetStringUTFChars(env,objeto_vars,0);
196
                    str_datos = (*env)->GetStringUTFChars(env,objeto_datos,0);
197
                       
198
                       //printf("L105gdaldriver_interfaz.c var=%s param=%s\n",str_vars,str_datos);
199
                      papszOptions = CSLSetNameValue( papszOptions, str_vars, str_datos );            
200
                       
201
                       (*env)->ReleaseStringUTFChars(env, objeto_vars, str_vars);     
202
                       (*env)->ReleaseStringUTFChars(env, objeto_datos, str_datos); 
203
                          
204
            }    
205
         }
206
         
207
          dt = GDALCreate(driver, filename, nXSize, nYSize, nBands, nType, papszOptions);          
208
          *(GDALDatasetH **)&jresult = dt;
209
          
210
          (*env)->ReleaseStringUTFChars(env, file, filename);
211
          //printf("L76createCopy jresult=%ld",(long)jresult);
212
    return jresult;
213
                   
214
  }
215
  
216