Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libjni-gdal-macosx / src / gdaldriver_interfaz.c @ 25845

History | View | Annotate | Download (7.21 KB)

1 8219 nacho
/**********************************************************************
2
 * $Id$
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 "es_gva_cit_jgdal_GdalDriver.h"
55
#include "gdal.h"
56
#include "cpl_string.h"
57
58
59
/* ******************************************************************** */
60
/*                              createCopy                              */
61
/* ******************************************************************** */
62
63
JNIEXPORT jlong JNICALL Java_es_gva_cit_jgdal_GdalDriver_createCopyNat
64
  (JNIEnv *env, jobject obj, jlong ptr_driver, jstring file, jlong ptr_gdal, jint bstrict){
65
66
          GDALDriverH *driver  = (GDALDriverH *) 0 ;
67
          GDALDatasetH *dt_fte  = (GDALDatasetH *) 0 ;
68
          GDALDatasetH dt_dstno;
69
          jlong jresult=0;
70
        const char *filename;
71
72
          dt_fte = *(GDALDatasetH **)&ptr_gdal;
73
          driver = *(GDALDriverH **)&ptr_driver;
74
75
         filename = (*env)->GetStringUTFChars(env, file, 0);
76
77
          dt_dstno = GDALCreateCopy(driver, filename, dt_fte, FALSE, NULL, NULL, NULL);
78
          *(GDALDatasetH **)&jresult = dt_dstno;
79
80
          (*env)->ReleaseStringUTFChars(env, file, filename);
81
82
    return jresult;
83
84
  }
85
86
/* ******************************************************************** */
87
/*                              createCopyParams                        */
88
/* ******************************************************************** */
89
90
JNIEXPORT jlong JNICALL Java_es_gva_cit_jgdal_GdalDriver_createCopyParamsNat
91
  (JNIEnv *env, jobject obj, jlong ptr_driver, jstring file, jlong ptr_gdal, jint bstrict, jobject options){
92
93
          GDALDriverH *driver  = (GDALDriverH *) 0 ;
94
          GDALDatasetH *dt_fte  = (GDALDatasetH *) 0 ;
95
          GDALDatasetH dt_dstno;
96
          jlong jresult=0;
97
        const char *filename;
98
        char **papszOptions = NULL;
99
        int i;
100
101
        //Variables para la obtenci?n de opciones
102
103
        jfieldID fid_vars, fid_datos;
104
        jobjectArray array_vars, array_datos;
105
        jmethodID metodo;
106
        jobject objeto_vars,objeto_datos;
107
        int tam;
108
        const char *str_vars,*str_datos;
109
110
111
          dt_fte = *(GDALDatasetH **)&ptr_gdal;
112
          driver = *(GDALDriverH **)&ptr_driver;
113
114
         filename = (*env)->GetStringUTFChars(env, file, 0);
115
116
         //Obtenemos los par?metros
117
118
         if(options!=NULL){
119
                 jclass clase = (*env)->GetObjectClass(env, options);
120
                 fid_vars = (*env)->GetFieldID(env, clase, "vars", "[Ljava/lang/String;");
121
                 fid_datos = (*env)->GetFieldID(env, clase, "datos", "[Ljava/lang/String;");
122
                 array_vars =(jobjectArray)(*env)->GetObjectField(env, options, fid_vars);
123
                 array_datos =(jobjectArray)(*env)->GetObjectField(env, options, fid_datos);
124
125
                 metodo = (*env)->GetMethodID(env, clase, "getSize","()I");
126
            tam = (*env)->CallIntMethod(env,options,metodo);
127
128
            for(i=0;i<tam;i++){
129
                    objeto_vars = (*env)->GetObjectArrayElement(env, array_vars, i);
130
                    objeto_datos = (*env)->GetObjectArrayElement(env, array_datos, i);
131
                    str_vars = (*env)->GetStringUTFChars(env,objeto_vars,0);
132
                    str_datos = (*env)->GetStringUTFChars(env,objeto_datos,0);
133
134
                       //printf("L105gdaldriver_interfaz.c var=%s param=%s\n",str_vars,str_datos);
135
                      papszOptions = CSLSetNameValue( papszOptions, str_vars, str_datos );
136
137
                       (*env)->ReleaseStringUTFChars(env, objeto_vars, str_vars);
138
                       (*env)->ReleaseStringUTFChars(env, objeto_datos, str_datos);
139
140
            }
141
         }
142
143
144
          dt_dstno = GDALCreateCopy(driver, filename, dt_fte, FALSE, papszOptions, NULL, NULL);
145
          *(GDALDatasetH **)&jresult = dt_dstno;
146
147
          (*env)->ReleaseStringUTFChars(env, file, filename);
148
          //printf("L76createCopy jresult=%ld",(long)jresult);
149
    return jresult;
150
151
  }
152
153
/* ******************************************************************** */
154
/*                              create                                  */
155
/* ******************************************************************** */
156
157
  JNIEXPORT jlong JNICALL Java_es_gva_cit_jgdal_GdalDriver_createNat
158
  (JNIEnv *env, jobject obj, jlong cPtr, jstring file, jint nXSize, jint nYSize, jint nBands, jint nType, jobject options){
159
160
        GDALDriverH *driver  = (GDALDriverH *) 0 ;
161
          GDALDatasetH *dt;
162
          jlong jresult=0;
163
        const char *filename;
164
        char **papszOptions = NULL;
165
        int i;
166
167
        //Variables para la obtenci?n de opciones
168
169
        jfieldID fid_vars, fid_datos;
170
        jobjectArray array_vars, array_datos;
171
        jmethodID metodo;
172
        jobject objeto_vars,objeto_datos;
173
        int tam;
174
        const char *str_vars,*str_datos;
175
176
177
          driver = *(GDALDriverH **)&cPtr;
178
179
         filename = (*env)->GetStringUTFChars(env, file, 0);
180
181
         //Obtenemos los par?metros
182
183
         if(options!=NULL){
184
                 jclass clase = (*env)->GetObjectClass(env, options);
185
                 fid_vars = (*env)->GetFieldID(env, clase, "vars", "[Ljava/lang/String;");
186
                 fid_datos = (*env)->GetFieldID(env, clase, "datos", "[Ljava/lang/String;");
187
                 array_vars =(jobjectArray)(*env)->GetObjectField(env, options, fid_vars);
188
                 array_datos =(jobjectArray)(*env)->GetObjectField(env, options, fid_datos);
189
190
                 metodo = (*env)->GetMethodID(env, clase, "getSize","()I");
191
            tam = (*env)->CallIntMethod(env,options,metodo);
192
193
            for(i=0;i<tam;i++){
194
                    objeto_vars = (*env)->GetObjectArrayElement(env, array_vars, i);
195
                    objeto_datos = (*env)->GetObjectArrayElement(env, array_datos, i);
196
                    str_vars = (*env)->GetStringUTFChars(env,objeto_vars,0);
197
                    str_datos = (*env)->GetStringUTFChars(env,objeto_datos,0);
198
199
                       //printf("L105gdaldriver_interfaz.c var=%s param=%s\n",str_vars,str_datos);
200
                      papszOptions = CSLSetNameValue( papszOptions, str_vars, str_datos );
201
202
                       (*env)->ReleaseStringUTFChars(env, objeto_vars, str_vars);
203
                       (*env)->ReleaseStringUTFChars(env, objeto_datos, str_datos);
204
205
            }
206
         }
207
208
          dt = GDALCreate(driver, filename, nXSize, nYSize, nBands, nType, papszOptions);
209
          *(GDALDatasetH **)&jresult = dt;
210
211
          (*env)->ReleaseStringUTFChars(env, file, filename);
212
          //printf("L76createCopy jresult=%ld",(long)jresult);
213
    return jresult;
214
215
  }
216