Revision 27428
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/DataTools.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.sql.Types; |
|
4 |
import java.util.Date; |
|
5 |
|
|
6 |
import org.gvsig.fmap.dal.DataTypes; |
|
7 |
|
|
8 |
public class DataTools { |
|
9 |
|
|
10 |
public static int[] getgvSIGTypes(Class[] types) { |
|
11 |
|
|
12 |
int iTypes[] = new int[types.length]; |
|
13 |
for (int i = 0; i < types.length; i++) { |
|
14 |
if (types[i].equals(Integer.class)){ |
|
15 |
iTypes[i] = DataTypes.INT; |
|
16 |
} |
|
17 |
else if (types[i].equals(Double.class)){ |
|
18 |
iTypes[i] = DataTypes.DOUBLE; |
|
19 |
} |
|
20 |
else if (types[i].equals(Long.class)){ |
|
21 |
iTypes[i] = DataTypes.LONG; |
|
22 |
} |
|
23 |
else if (types[i].equals(Float.class)){ |
|
24 |
iTypes[i] = DataTypes.FLOAT; |
|
25 |
} |
|
26 |
else if (types[i].equals(String.class)){ |
|
27 |
iTypes[i] = DataTypes.CHAR; |
|
28 |
} |
|
29 |
else if (types[i].equals(Date.class)){ |
|
30 |
iTypes[i] = DataTypes.DATE; |
|
31 |
} |
|
32 |
else if (types[i].equals(Boolean.class)){ |
|
33 |
iTypes[i] = DataTypes.BOOLEAN; |
|
34 |
} |
|
35 |
else if (types[i].equals(Object.class)){ |
|
36 |
iTypes[i] = DataTypes.OBJECT; |
|
37 |
} |
|
38 |
} |
|
39 |
|
|
40 |
return iTypes; |
|
41 |
|
|
42 |
} |
|
43 |
|
|
44 |
public static Class getTypeClass(int dataType) { |
|
45 |
|
|
46 |
switch (dataType) { |
|
47 |
case DataTypes.DOUBLE: |
|
48 |
return Double.class; |
|
49 |
case DataTypes.FLOAT: |
|
50 |
return Float.class; |
|
51 |
case DataTypes.LONG: |
|
52 |
return Long.class; |
|
53 |
case DataTypes.INT: |
|
54 |
return Integer.class; |
|
55 |
case DataTypes.STRING: |
|
56 |
return String.class; |
|
57 |
case DataTypes.CHAR: |
|
58 |
return String.class; |
|
59 |
case DataTypes.DATE: |
|
60 |
return Date.class; |
|
61 |
case DataTypes.BOOLEAN: |
|
62 |
return Boolean.class; |
|
63 |
} |
|
64 |
|
|
65 |
return String.class; |
|
66 |
|
|
67 |
} |
|
68 |
|
|
69 |
|
|
70 |
// public static Object[] getSextanteValues(Value[] record) { |
|
71 |
// |
|
72 |
// Object[] values = new Object[record.length]; |
|
73 |
// |
|
74 |
// for (int i = 0; i < record.length; i++) { |
|
75 |
// if (record[i] instanceof IntValue){ |
|
76 |
// values[i] = new Integer(((IntValue)record[i]).getValue()); |
|
77 |
// } |
|
78 |
// else if (record[i] instanceof DoubleValue){ |
|
79 |
// values[i] = new Double(((DoubleValue)record[i]).getValue()); |
|
80 |
// } |
|
81 |
// else if (record[i] instanceof FloatValue){ |
|
82 |
// values[i] = new Float(((FloatValue)record[i]).getValue()); |
|
83 |
// } |
|
84 |
// else if (record[i] instanceof LongValue){ |
|
85 |
// values[i] = new Long(((LongValue)record[i]).getValue()); |
|
86 |
// } |
|
87 |
// else if (record[i] instanceof DateValue){ |
|
88 |
// values[i] = ((DateValue)record[i]).getValue(); |
|
89 |
// } |
|
90 |
// else if (record[i] instanceof StringValue){ |
|
91 |
// values[i] = ((StringValue)record[i]).getValue(); |
|
92 |
// } |
|
93 |
// else if (record[i] instanceof BooleanValue){ |
|
94 |
// values[i] = new Boolean(((BooleanValue)record[i]).getValue()); |
|
95 |
// } |
|
96 |
// } |
|
97 |
// |
|
98 |
// return values; |
|
99 |
// |
|
100 |
// } |
|
101 |
|
|
102 |
// public static Value[] getGVSIGValues(Object[] record) { |
|
103 |
// |
|
104 |
// Value[] values = new Value[record.length]; |
|
105 |
// |
|
106 |
// for (int i = 0; i < record.length; i++) { |
|
107 |
// if (record[i] instanceof Integer){ |
|
108 |
// values[i] = ValueFactory.createValue(((Integer)record[i]).intValue()); |
|
109 |
// } |
|
110 |
// else if (record[i] instanceof Double){ |
|
111 |
// values[i] = ValueFactory.createValue(((Double)record[i]).doubleValue()); |
|
112 |
// } |
|
113 |
// else if (record[i] instanceof Float){ |
|
114 |
// values[i] = ValueFactory.createValue(((Float)record[i]).longValue()); |
|
115 |
// } |
|
116 |
// else if (record[i] instanceof Long){ |
|
117 |
// values[i] = ValueFactory.createValue(((Long)record[i]).longValue()); |
|
118 |
// } |
|
119 |
// else if (record[i] instanceof Date){ |
|
120 |
// values[i] = ValueFactory.createValue(((Date)record[i])); |
|
121 |
// } |
|
122 |
// else if (record[i] instanceof String){ |
|
123 |
// values[i] = ValueFactory.createValue(((String)record[i])); |
|
124 |
// } |
|
125 |
// else if (record[i] instanceof Boolean){ |
|
126 |
// values[i] = ValueFactory.createValue(((Boolean)record[i]).booleanValue()); |
|
127 |
// } |
|
128 |
// else if (record[i] == null){ |
|
129 |
// values[i] = ValueFactory.createNullValue(); |
|
130 |
// } |
|
131 |
// } |
|
132 |
// |
|
133 |
// return values; |
|
134 |
// |
|
135 |
// } |
|
136 |
|
|
137 |
} |
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvRasterLayer.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.awt.geom.Rectangle2D; |
|
4 |
|
|
5 |
import org.cresques.cts.IProjection; |
|
6 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
7 |
import org.gvsig.fmap.raster.layers.FLyrRasterSE; |
|
8 |
import org.gvsig.raster.buffer.RasterBuffer; |
|
9 |
import org.gvsig.raster.grid.Grid; |
|
10 |
import org.gvsig.raster.grid.GridException; |
|
11 |
|
|
12 |
import es.unex.sextante.dataObjects.AbstractRasterLayer; |
|
13 |
import es.unex.sextante.dataObjects.IRasterLayer; |
|
14 |
import es.unex.sextante.rasterWrappers.GridExtent; |
|
15 |
|
|
16 |
public class gvRasterLayer extends AbstractRasterLayer { |
|
17 |
|
|
18 |
private String m_sFilename; |
|
19 |
private IProjection m_Projection; |
|
20 |
private Grid layerGrid = null; |
|
21 |
|
|
22 |
private double DEFAULT_NO_DATA_VALUE = -99999.; |
|
23 |
|
|
24 |
public void create(String sName, String sFilename, |
|
25 |
GridExtent ge, int iDataType, |
|
26 |
int iNumBands, Object crs) { |
|
27 |
|
|
28 |
RasterMemoryDriver rmd = new RasterMemoryDriver(ge, iDataType, iNumBands); |
|
29 |
rmd.setName(sName); |
|
30 |
//rmd.setProjection((IProjection) crs); |
|
31 |
rmd.setNoDataValue(DEFAULT_NO_DATA_VALUE); |
|
32 |
|
|
33 |
m_BaseDataObject = rmd; |
|
34 |
|
|
35 |
m_sFilename = sFilename; |
|
36 |
|
|
37 |
m_Projection = (IProjection) crs; |
|
38 |
|
|
39 |
} |
|
40 |
|
|
41 |
public void create(String sName, String sFilename, |
|
42 |
GridExtent ge, int iDataType, Object crs) { |
|
43 |
|
|
44 |
create(sName, sFilename, ge, iDataType, 1, crs); |
|
45 |
|
|
46 |
} |
|
47 |
|
|
48 |
public void create(Object obj) { |
|
49 |
|
|
50 |
if (obj instanceof FLyrRasterSE){ |
|
51 |
m_BaseDataObject = obj; |
|
52 |
m_Projection = ((FLyrRasterSE)obj).getProjection(); |
|
53 |
} |
|
54 |
|
|
55 |
} |
|
56 |
|
|
57 |
public int getDataType() { |
|
58 |
|
|
59 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
60 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
61 |
return layer.getDataType()[0]; |
|
62 |
} |
|
63 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
64 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
65 |
return layer.getRasterBuf().getDataType(); |
|
66 |
} |
|
67 |
|
|
68 |
return 0; |
|
69 |
} |
|
70 |
|
|
71 |
public void assign(double dValue) { |
|
72 |
|
|
73 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
74 |
super.assign(dValue); |
|
75 |
} |
|
76 |
|
|
77 |
} |
|
78 |
|
|
79 |
public void assign(IRasterLayer layer) { |
|
80 |
|
|
81 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
82 |
super.assign(layer); |
|
83 |
} |
|
84 |
|
|
85 |
} |
|
86 |
|
|
87 |
public void setCellValue(int x, int y, int iBand, double dValue) { |
|
88 |
|
|
89 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
90 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
91 |
layer.setCellValue(x,y, iBand, dValue); |
|
92 |
} |
|
93 |
|
|
94 |
} |
|
95 |
|
|
96 |
public void setNoDataValue(double dNoDataValue) { |
|
97 |
|
|
98 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
99 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
100 |
layer.setNoDataValue(dNoDataValue); |
|
101 |
} |
|
102 |
else if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
103 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
104 |
layer.setNoDataValue(dNoDataValue); |
|
105 |
} |
|
106 |
|
|
107 |
} |
|
108 |
|
|
109 |
public void setNoData(int x, int y) { |
|
110 |
|
|
111 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
112 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
113 |
layer.setNoData(x, y); |
|
114 |
} |
|
115 |
|
|
116 |
} |
|
117 |
|
|
118 |
public double getNoDataValue(){ |
|
119 |
|
|
120 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
121 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
122 |
return layer.getNoDataValue(); |
|
123 |
} |
|
124 |
else if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
125 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
126 |
return layer.getNoDataValue(); |
|
127 |
} |
|
128 |
|
|
129 |
return 0; |
|
130 |
|
|
131 |
} |
|
132 |
|
|
133 |
public double getCellValueInLayerCoords(int x, int y, int band) { |
|
134 |
|
|
135 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
136 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
137 |
int iType = layerGrid.getDataType(); |
|
138 |
|
|
139 |
if (iType == RasterBuffer.TYPE_DOUBLE) { |
|
140 |
return layerGrid.getRasterBuf().getElemDouble(y, x, band); |
|
141 |
} else if (iType == RasterBuffer.TYPE_INT) { |
|
142 |
return (double) layerGrid.getRasterBuf().getElemInt(y, x, band); |
|
143 |
} else if (iType == RasterBuffer.TYPE_FLOAT) { |
|
144 |
return (double) layerGrid.getRasterBuf().getElemFloat(y, x, band); |
|
145 |
} else if (iType == RasterBuffer.TYPE_BYTE) { |
|
146 |
return (double) ( layerGrid.getRasterBuf().getElemByte(y, x, band) & 0xff); |
|
147 |
} else if ((iType == RasterBuffer.TYPE_SHORT) | (iType == RasterBuffer.TYPE_USHORT)) { |
|
148 |
return (double) layerGrid.getRasterBuf().getElemShort(y, x, band); |
|
149 |
} |
|
150 |
|
|
151 |
return layerGrid.getNoDataValue(); |
|
152 |
} |
|
153 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
154 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
155 |
return layer.getCellValue(x, y, band); |
|
156 |
} |
|
157 |
|
|
158 |
return getNoDataValue(); |
|
159 |
|
|
160 |
} |
|
161 |
|
|
162 |
public int getBandsCount() { |
|
163 |
|
|
164 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
165 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
166 |
return layer.getBandCount(); |
|
167 |
} |
|
168 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
169 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
170 |
return layer.getRasterBuf().getBandCount(); |
|
171 |
} |
|
172 |
|
|
173 |
return 0; |
|
174 |
|
|
175 |
} |
|
176 |
|
|
177 |
public void fitToGridExtent(GridExtent ge){ |
|
178 |
|
|
179 |
int iNX, iNY; |
|
180 |
int x, y; |
|
181 |
int iBand; |
|
182 |
|
|
183 |
if (ge != null){ |
|
184 |
if (!ge.equals(getWindowGridExtent()) ){ |
|
185 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
186 |
RasterMemoryDriver gvSIGDriver = (RasterMemoryDriver) m_BaseDataObject; |
|
187 |
|
|
188 |
FLyrRasterSE gvSIGLayer = gvSIGDriver.getRasterLayer(Long.toString(System.currentTimeMillis()).toString(), |
|
189 |
m_Projection); |
|
190 |
gvRasterLayer orgLayer = new gvRasterLayer(); |
|
191 |
orgLayer.create(gvSIGLayer); |
|
192 |
|
|
193 |
iNX = ge.getNX(); |
|
194 |
iNY = ge.getNY(); |
|
195 |
|
|
196 |
m_BaseDataObject = null; |
|
197 |
|
|
198 |
create(this.getName(), m_sFilename, ge, this.getDataType(), this.getBandsCount()); |
|
199 |
for (iBand = 0; iBand < this.getBandsCount(); iBand++){ |
|
200 |
for (y = 0; y < iNY; y++){ |
|
201 |
for (x = 0; x < iNX; x++){ |
|
202 |
setCellValue(x, y, iBand, orgLayer.getCellValueAsDouble(x, y, iBand)); |
|
203 |
} |
|
204 |
} |
|
205 |
} |
|
206 |
} |
|
207 |
} |
|
208 |
} |
|
209 |
} |
|
210 |
|
|
211 |
public String getName() { |
|
212 |
|
|
213 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
214 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
215 |
return layer.getName(); |
|
216 |
} |
|
217 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
218 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
219 |
return layer.getName(); |
|
220 |
} |
|
221 |
|
|
222 |
return null; |
|
223 |
|
|
224 |
} |
|
225 |
|
|
226 |
public void postProcess() { |
|
227 |
|
|
228 |
if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
229 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
230 |
if (layer.export(m_sFilename, m_Projection)){ |
|
231 |
FLyrRasterSE rasterLayer = (FLyrRasterSE) FileTools.openLayer(m_sFilename, |
|
232 |
layer.getName(), null); |
|
233 |
create(rasterLayer); |
|
234 |
rasterLayer.setNoDataValue(layer.getNoDataValue()); |
|
235 |
System.gc(); |
|
236 |
} |
|
237 |
} |
|
238 |
|
|
239 |
} |
|
240 |
|
|
241 |
public void open() { |
|
242 |
|
|
243 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
244 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
245 |
try { |
|
246 |
layerGrid = layer.getReadOnlyFullGrid(false); |
|
247 |
} catch (GridException e) { |
|
248 |
e.printStackTrace(); |
|
249 |
} catch (InterruptedException e) { |
|
250 |
e.printStackTrace(); |
|
251 |
} |
|
252 |
} |
|
253 |
|
|
254 |
} |
|
255 |
|
|
256 |
public void close() { |
|
257 |
|
|
258 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
259 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
260 |
if(layerGrid != null) |
|
261 |
layerGrid.getRasterBuf().free(); |
|
262 |
layerGrid = null; |
|
263 |
} |
|
264 |
|
|
265 |
} |
|
266 |
|
|
267 |
public Rectangle2D getFullExtent() { |
|
268 |
|
|
269 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
270 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
271 |
try{ |
|
272 |
Envelope env=layer.getFullEnvelope(); |
|
273 |
return new Rectangle2D.Double(env.getMinimum(0),env.getMinimum(1),env.getLength(0),env.getLength(1)); |
|
274 |
}catch(Exception e){ |
|
275 |
return null; |
|
276 |
} |
|
277 |
} |
|
278 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
279 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
280 |
return layer.getGridExtent().getAsRectangle2D(); |
|
281 |
} |
|
282 |
|
|
283 |
return null; |
|
284 |
|
|
285 |
} |
|
286 |
|
|
287 |
public GridExtent getLayerGridExtent() { |
|
288 |
|
|
289 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
290 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
291 |
try{ |
|
292 |
GridExtent extent = new GridExtent(); |
|
293 |
extent.setXRange(layer.getMinX(), layer.getMaxX()); |
|
294 |
extent.setYRange(layer.getMinY(), layer.getMaxY()); |
|
295 |
extent.setCellSize(layer.getCellSize()); |
|
296 |
return extent; |
|
297 |
}catch(Exception e){ |
|
298 |
return null; |
|
299 |
} |
|
300 |
} |
|
301 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
302 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
303 |
return layer.getGridExtent(); |
|
304 |
} |
|
305 |
|
|
306 |
return null; |
|
307 |
|
|
308 |
} |
|
309 |
|
|
310 |
public double getLayerCellSize() { |
|
311 |
|
|
312 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
313 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
314 |
return layer.getCellSize(); |
|
315 |
} |
|
316 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
317 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
318 |
return layer.getGridExtent().getCellSize(); |
|
319 |
} |
|
320 |
|
|
321 |
return 0; |
|
322 |
|
|
323 |
} |
|
324 |
|
|
325 |
public String getFilename() { |
|
326 |
|
|
327 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
328 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
329 |
return layer.getDataSource().getDataset(0)[0].getFName(); |
|
330 |
} |
|
331 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
332 |
return m_sFilename; |
|
333 |
} |
|
334 |
|
|
335 |
return ""; |
|
336 |
|
|
337 |
} |
|
338 |
|
|
339 |
|
|
340 |
public Object getCRS() { |
|
341 |
|
|
342 |
return m_Projection; |
|
343 |
|
|
344 |
} |
|
345 |
|
|
346 |
|
|
347 |
public void setName(String name) { |
|
348 |
|
|
349 |
if (m_BaseDataObject instanceof FLyrRasterSE) { |
|
350 |
FLyrRasterSE layer = (FLyrRasterSE) m_BaseDataObject; |
|
351 |
layer.setName(name); |
|
352 |
} |
|
353 |
else if (m_BaseDataObject instanceof RasterMemoryDriver) { |
|
354 |
RasterMemoryDriver layer = (RasterMemoryDriver) m_BaseDataObject; |
|
355 |
layer.setName(name); |
|
356 |
}; |
|
357 |
|
|
358 |
} |
|
359 |
|
|
360 |
} |
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvVectorLayer.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.awt.geom.Rectangle2D; |
|
4 |
import java.io.File; |
|
5 |
import java.sql.Types; |
|
6 |
import java.util.Date; |
|
7 |
import java.util.Iterator; |
|
8 |
|
|
9 |
import org.cresques.cts.IProjection; |
|
10 |
import org.gvsig.fmap.dal.DALLocator; |
|
11 |
import org.gvsig.fmap.dal.DataManager; |
|
12 |
import org.gvsig.fmap.dal.DataStoreParameters; |
|
13 |
import org.gvsig.fmap.dal.DataTypes; |
|
14 |
import org.gvsig.fmap.dal.exception.DataException; |
|
15 |
import org.gvsig.fmap.dal.exception.ReadException; |
|
16 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
|
17 |
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor; |
|
18 |
import org.gvsig.fmap.dal.feature.EditableFeatureType; |
|
19 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
|
20 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
21 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
22 |
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters; |
|
23 |
import org.gvsig.fmap.dal.feature.impl.DefaultEditableFeatureType; |
|
24 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer; |
|
25 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters; |
|
26 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
|
27 |
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters; |
|
28 |
import org.gvsig.fmap.geom.primitive.Envelope; |
|
29 |
import org.gvsig.fmap.geom.util.Converter; |
|
30 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
|
31 |
|
|
32 |
import com.vividsolutions.jts.geom.Geometry; |
|
33 |
|
|
34 |
import es.unex.sextante.dataObjects.AbstractVectorLayer; |
|
35 |
import es.unex.sextante.dataObjects.IFeatureIterator; |
|
36 |
import es.unex.sextante.dataObjects.IVectorLayer; |
|
37 |
|
|
38 |
public class gvVectorLayer extends AbstractVectorLayer { |
|
39 |
|
|
40 |
private final int PRECISION = 5; |
|
41 |
|
|
42 |
private String m_sFilename; |
|
43 |
private FeatureStore featureStore; |
|
44 |
private int m_iGeometry; |
|
45 |
private String m_sName; |
|
46 |
private IProjection m_Projection; |
|
47 |
|
|
48 |
private FeatureType featureType; |
|
49 |
|
|
50 |
public void create(String sName, String sFilename, int iShapeType, |
|
51 |
Class[] types, String[] sFields, Object crs) { |
|
52 |
|
|
53 |
int iTypes[]; |
|
54 |
try { |
|
55 |
FeatureType fType=getFeatureType(sFields, types, iShapeType, crs); |
|
56 |
// LayerDefinition tableDef; |
|
57 |
|
|
58 |
m_sName = sName; |
|
59 |
m_sFilename = sFilename; |
|
60 |
m_iGeometry = 0; |
|
61 |
m_Projection = (IProjection) crs; |
|
62 |
|
|
63 |
DataManager datamanager=DALLocator.getDataManager(); |
|
64 |
FilesystemServerExplorerParameters explorerParams=(FilesystemServerExplorerParameters) datamanager.createServerExplorerParameters(FilesystemServerExplorer.NAME); |
|
65 |
explorerParams.setRoot(new File(sFilename).getParent()); |
|
66 |
FilesystemServerExplorer explorer=(FilesystemServerExplorer) datamanager.createServerExplorer(explorerParams); |
|
67 |
NewFeatureStoreParameters newParams = (NewFeatureStoreParameters) explorer.getAddParameters(new File(sFilename)); |
|
68 |
|
|
69 |
newParams.setDefaultFeatureType(featureType); |
|
70 |
// ((FilesystemStoreParameters)newParams).setSRS((IProjection) crs); |
|
71 |
explorer.add(newParams, true); |
|
72 |
DataManager manager = DALLocator.getDataManager(); |
|
73 |
featureStore = (FeatureStore) manager |
|
74 |
.createStore(newParams); |
|
75 |
featureStore.edit(FeatureStore.MODE_APPEND); |
|
76 |
|
|
77 |
|
|
78 |
|
|
79 |
|
|
80 |
if (sFilename.toLowerCase().endsWith("dxf")){ |
|
81 |
// m_Writer = new DxfWriter(); |
|
82 |
// ((DxfWriter)m_Writer).setFile(new File(sFilename)); |
|
83 |
// ((DxfWriter)m_Writer).setProjection((IProjection) crs); |
|
84 |
// tableDef = new DXFLayerDefinition(); |
|
85 |
// tableDef.setShapeType(getgvSIGShapeType(iShapeType)); |
|
86 |
|
|
87 |
// DxfFieldsMapping fieldsMapping = new DxfFieldsMapping(); |
|
88 |
// ((DxfWriter)m_Writer).setFieldMapping(fieldsMapping); |
|
89 |
|
|
90 |
} |
|
91 |
else{ |
|
92 |
// m_Writer = new ShpWriter(); |
|
93 |
// ((ShpWriter)m_Writer).setFile(new File(sFilename)); |
|
94 |
// tableDef = new SHPLayerDefinition(); |
|
95 |
// tableDef.setShapeType(getgvSIGShapeType(iShapeType)); |
|
96 |
} |
|
97 |
|
|
98 |
// iTypes = DataTools.getgvSIGTypes(types); |
|
99 |
|
|
100 |
// FieldDescription[] fields = new FieldDescription[sFields.length]; |
|
101 |
// for (int i = 0; i < fields.length; i++) { |
|
102 |
// fields[i] = new FieldDescription(); |
|
103 |
// fields[i].setFieldName(sFields[i]); |
|
104 |
// fields[i].setFieldType(iTypes[i]); |
|
105 |
// fields[i].setFieldLength(getDataTypeLength(iTypes[i])); |
|
106 |
// fields[i].setFieldDecimalCount(PRECISION); |
|
107 |
// } |
|
108 |
// tableDef.setFieldsDesc(fields); |
|
109 |
// tableDef.setName(sFilename); |
|
110 |
|
|
111 |
// m_Writer.initialize(tableDef); |
|
112 |
// m_Writer.preProcess(); |
|
113 |
|
|
114 |
// m_RV = null; |
|
115 |
|
|
116 |
|
|
117 |
} catch (Exception e){ |
|
118 |
e.printStackTrace(); |
|
119 |
} |
|
120 |
|
|
121 |
} |
|
122 |
|
|
123 |
private FeatureType getFeatureType(String[] fields, Class[] types, |
|
124 |
int shapeType, Object crs) { |
|
125 |
int[] iTypes=DataTools.getgvSIGTypes(types); |
|
126 |
EditableFeatureType eft=new DefaultEditableFeatureType(); |
|
127 |
for (int i = 0; i < fields.length; i++) { |
|
128 |
EditableFeatureAttributeDescriptor efad=eft.add(fields[i], iTypes[i]); |
|
129 |
if (iTypes[i]==DataTypes.GEOMETRY){ |
|
130 |
efad.setGeometryType(shapeType); |
|
131 |
efad.setSRS((IProjection)crs); |
|
132 |
}else{ |
|
133 |
efad.setPrecision(PRECISION); |
|
134 |
} |
|
135 |
} |
|
136 |
return eft; |
|
137 |
} |
|
138 |
|
|
139 |
// private int getTypeToDAL(Class class1) { |
|
140 |
// if (class1.equals(Integer.class)){ |
|
141 |
// return DataTypes.INT; |
|
142 |
// }else if (class1.equals(Long.class)){ |
|
143 |
// return DataTypes.LONG; |
|
144 |
// }else if (class1.equals(Float.class)){ |
|
145 |
// return DataTypes.FLOAT; |
|
146 |
// }else if (class1.equals(Double.class)){ |
|
147 |
// return DataTypes.DOUBLE; |
|
148 |
// }else if (class1.equals(String.class)){ |
|
149 |
// return DataTypes.STRING; |
|
150 |
// }else if (class1.equals(Date.class)){ |
|
151 |
// return DataTypes.DATE; |
|
152 |
// }else if (class1.equals(Object.class)){ |
|
153 |
// return DataTypes.OBJECT; |
|
154 |
// }else if (class1.equals(Byte.class)){ |
|
155 |
// return DataTypes.BYTE; |
|
156 |
// }else if (class1.equals(Boolean.class)){ |
|
157 |
// return DataTypes.BOOLEAN; |
|
158 |
// }else if (class1.equals(Geometry.class)){ |
|
159 |
// return DataTypes.GEOMETRY; |
|
160 |
// } |
|
161 |
// return DataTypes.STRING; |
|
162 |
// } |
|
163 |
|
|
164 |
public void create(Object obj) { |
|
165 |
|
|
166 |
if (obj instanceof FLyrVect){ |
|
167 |
m_BaseDataObject = (FLyrVect) obj; |
|
168 |
FLyrVect layer = (FLyrVect) m_BaseDataObject; |
|
169 |
try{ |
|
170 |
featureStore = layer.getFeatureStore(); |
|
171 |
featureType=featureStore.getDefaultFeatureType(); |
|
172 |
m_Projection = layer.getProjection(); |
|
173 |
} |
|
174 |
catch(Exception e){ |
|
175 |
e.printStackTrace(); |
|
176 |
} |
|
177 |
} |
|
178 |
|
|
179 |
} |
|
180 |
|
|
181 |
public void open() { |
|
182 |
|
|
183 |
// if (featureStore != null) { |
|
184 |
// |
|
185 |
// try { |
|
186 |
// featureStore.start(); |
|
187 |
// } catch (InitializeDriverException e) { |
|
188 |
// e.printStackTrace(); |
|
189 |
// } catch (ReadDriverException e) { |
|
190 |
// e.printStackTrace(); |
|
191 |
// } |
|
192 |
// |
|
193 |
// }; |
|
194 |
|
|
195 |
} |
|
196 |
|
|
197 |
public void close() { |
|
198 |
|
|
199 |
// if (m_RV != null){ |
|
200 |
// try { |
|
201 |
// m_RV.stop(); |
|
202 |
// } catch (ReadDriverException e) { |
|
203 |
// e.printStackTrace(); |
|
204 |
// } |
|
205 |
// }; |
|
206 |
|
|
207 |
} |
|
208 |
|
|
209 |
/** |
|
210 |
* Returns the length of field |
|
211 |
* @param dataType |
|
212 |
* @return length of field |
|
213 |
*/ |
|
214 |
public int getDataTypeLength(int dataType) { |
|
215 |
|
|
216 |
switch (dataType) { |
|
217 |
case Types.NUMERIC: |
|
218 |
case Types.DOUBLE: |
|
219 |
case Types.REAL: |
|
220 |
case Types.FLOAT: |
|
221 |
case Types.BIGINT: |
|
222 |
case Types.INTEGER: |
|
223 |
case Types.DECIMAL: |
|
224 |
return 20; |
|
225 |
case Types.CHAR: |
|
226 |
case Types.VARCHAR: |
|
227 |
case Types.LONGVARCHAR: |
|
228 |
return 254; |
|
229 |
case Types.DATE: |
|
230 |
return 8; |
|
231 |
case Types.BOOLEAN: |
|
232 |
case Types.BIT: |
|
233 |
return 1; |
|
234 |
} |
|
235 |
return 0; |
|
236 |
|
|
237 |
} |
|
238 |
|
|
239 |
public void addFeature(Geometry geom, Object[] values) { |
|
240 |
|
|
241 |
org.gvsig.fmap.geom.Geometry iGeo = Converter.jtsToGeometry(geom); |
|
242 |
// Value[] gvSIGValues = DataTools.getGVSIGValues(values); |
|
243 |
// DefaultFeature feat = new DefaultFeature(iGeo, gvSIGValues, Integer.toString(m_iGeometry)); |
|
244 |
// IRowEdited editFeat = new DefaultRowEdited(feat, IRowEdited.STATUS_MODIFIED, m_iGeometry); |
|
245 |
m_iGeometry++; |
|
246 |
try { |
|
247 |
EditableFeature ef=featureStore.createNewFeature(); |
|
248 |
Iterator<FeatureAttributeDescriptor> features=featureType.iterator(); |
|
249 |
int i=0; |
|
250 |
while (features.hasNext()) { |
|
251 |
FeatureAttributeDescriptor featureAttributeDescriptor = (FeatureAttributeDescriptor) features |
|
252 |
.next(); |
|
253 |
if (!featureAttributeDescriptor.getName().equals(featureType.getDefaultGeometryAttributeName())){ |
|
254 |
ef.set(featureAttributeDescriptor.getName(), values[i]); |
|
255 |
i++; |
|
256 |
} |
|
257 |
} |
|
258 |
ef.set(featureType.getDefaultGeometryAttributeIndex(), iGeo); |
|
259 |
featureStore.insert(ef); |
|
260 |
} catch (Exception e) { |
|
261 |
e.printStackTrace(); |
|
262 |
} |
|
263 |
} |
|
264 |
|
|
265 |
public IFeatureIterator iterator() { |
|
266 |
|
|
267 |
if (m_BaseDataObject instanceof FLyrVect){ |
|
268 |
FLyrVect layer = (FLyrVect) m_BaseDataObject; |
|
269 |
gvFeatureIterator iter = new gvFeatureIterator(layer); |
|
270 |
return iter; |
|
271 |
} |
|
272 |
else{ |
|
273 |
return null; |
|
274 |
} |
|
275 |
|
|
276 |
} |
|
277 |
|
|
278 |
public String getFieldName(int i) { |
|
279 |
|
|
280 |
if (featureStore != null){ |
|
281 |
return ((FeatureAttributeDescriptor)featureType.get(i)).getName(); |
|
282 |
} |
|
283 |
return null; //TODO |
|
284 |
} |
|
285 |
|
|
286 |
public Class getFieldType(int i) { |
|
287 |
|
|
288 |
if (featureStore != null){ |
|
289 |
return DataTools.getTypeClass(((FeatureAttributeDescriptor)featureType.get(i)).getDataType()); |
|
290 |
} |
|
291 |
return null; //TODO |
|
292 |
} |
|
293 |
|
|
294 |
|
|
295 |
public int getFieldCount() { |
|
296 |
|
|
297 |
if (featureStore != null){ |
|
298 |
return featureType.size(); |
|
299 |
} |
|
300 |
return 0; //TODO |
|
301 |
|
|
302 |
} |
|
303 |
|
|
304 |
public int getShapesCount() { |
|
305 |
|
|
306 |
|
|
307 |
if (featureStore != null){ |
|
308 |
try { |
|
309 |
return (int)featureStore.getFeatureSet().getSize(); |
|
310 |
} catch (DataException e) { |
|
311 |
e.printStackTrace(); |
|
312 |
return 0; |
|
313 |
} |
|
314 |
} |
|
315 |
|
|
316 |
return 0; //TODO |
|
317 |
|
|
318 |
} |
|
319 |
|
|
320 |
public int getShapeType() { |
|
321 |
|
|
322 |
if (featureStore != null){ |
|
323 |
return getShapeTypeFromGvSIGShapeType(((FeatureAttributeDescriptor)featureType.get(featureType.getDefaultGeometryAttributeIndex())).getGeometryType()); |
|
324 |
} |
|
325 |
|
|
326 |
return 0; |
|
327 |
|
|
328 |
} |
|
329 |
|
|
330 |
private int getShapeTypeFromGvSIGShapeType(int shapeType) { |
|
331 |
|
|
332 |
switch (shapeType){ |
|
333 |
case org.gvsig.fmap.geom.Geometry.TYPES.SURFACE: |
|
334 |
return IVectorLayer.SHAPE_TYPE_POLYGON; |
|
335 |
case org.gvsig.fmap.geom.Geometry.TYPES.CURVE: |
|
336 |
return IVectorLayer.SHAPE_TYPE_LINE; |
|
337 |
case org.gvsig.fmap.geom.Geometry.TYPES.POINT: |
|
338 |
return IVectorLayer.SHAPE_TYPE_POINT; |
|
339 |
default: |
|
340 |
return IVectorLayer.SHAPE_TYPE_POLYGON; |
|
341 |
} |
|
342 |
|
|
343 |
} |
|
344 |
|
|
345 |
private int getgvSIGShapeType(int shapeType) { |
|
346 |
|
|
347 |
switch (shapeType){ |
|
348 |
case IVectorLayer.SHAPE_TYPE_POLYGON : |
|
349 |
return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE; |
|
350 |
case IVectorLayer.SHAPE_TYPE_LINE: |
|
351 |
return org.gvsig.fmap.geom.Geometry.TYPES.CURVE; |
|
352 |
case IVectorLayer.SHAPE_TYPE_POINT: |
|
353 |
return org.gvsig.fmap.geom.Geometry.TYPES.POINT; |
|
354 |
default: |
|
355 |
return org.gvsig.fmap.geom.Geometry.TYPES.SURFACE; |
|
356 |
} |
|
357 |
|
|
358 |
} |
|
359 |
|
|
360 |
public String getName() { |
|
361 |
|
|
362 |
if (m_BaseDataObject instanceof FLyrVect){ |
|
363 |
FLyrVect layer = (FLyrVect) m_BaseDataObject; |
|
364 |
return layer.getName(); |
|
365 |
} |
|
366 |
else{ |
|
367 |
return m_sName; |
|
368 |
} |
|
369 |
|
|
370 |
} |
|
371 |
|
|
372 |
public void postProcess() { |
|
373 |
|
|
374 |
if (featureStore == null){ |
|
375 |
return; |
|
376 |
} |
|
377 |
try { |
|
378 |
featureStore.finishEditing(); |
|
379 |
} catch (DataException e) { |
|
380 |
e.printStackTrace(); |
|
381 |
} |
|
382 |
FLyrVect vectorLayer = (FLyrVect) FileTools.openLayer( |
|
383 |
m_sFilename, m_sName, m_Projection); |
|
384 |
create(vectorLayer); |
|
385 |
|
|
386 |
} |
|
387 |
|
|
388 |
public Rectangle2D getFullExtent() { |
|
389 |
|
|
390 |
if (m_BaseDataObject instanceof FLyrVect){ |
|
391 |
FLyrVect layer = (FLyrVect) m_BaseDataObject; |
|
392 |
Envelope env=null; |
|
393 |
try { |
|
394 |
env = layer.getFullEnvelope(); |
|
395 |
} catch (ReadException e) { |
|
396 |
e.printStackTrace(); |
|
397 |
} |
|
398 |
return new Rectangle2D.Double(env.getMinimum(0), env.getMinimum(1), env.getLength(0), env.getLength(1)); |
|
399 |
|
|
400 |
} |
|
401 |
return null; |
|
402 |
|
|
403 |
} |
|
404 |
|
|
405 |
public String getFilename() { |
|
406 |
|
|
407 |
if (m_BaseDataObject instanceof FLyrVect){ |
|
408 |
FLyrVect layer = (FLyrVect) m_BaseDataObject; |
|
409 |
FeatureStore fs=null; |
|
410 |
try { |
|
411 |
fs = ((FLyrVect)layer).getFeatureStore(); |
|
412 |
} catch (ReadException e) { |
|
413 |
e.printStackTrace(); |
|
414 |
} |
|
415 |
DataStoreParameters dsp=fs.getParameters(); |
|
416 |
if (dsp instanceof FilesystemStoreParameters) { |
|
417 |
return ((FilesystemStoreParameters)dsp).getFile().getAbsolutePath(); |
|
418 |
} |
|
419 |
else{ |
|
420 |
return null; |
|
421 |
} |
|
422 |
} |
|
423 |
else{ |
|
424 |
return m_sFilename; |
|
425 |
} |
|
426 |
|
|
427 |
} |
|
428 |
|
|
429 |
public Object getCRS() { |
|
430 |
|
|
431 |
return m_Projection; |
|
432 |
|
|
433 |
} |
|
434 |
|
|
435 |
public void setName(String name) { |
|
436 |
|
|
437 |
m_sName = name; |
|
438 |
|
|
439 |
} |
|
440 |
|
|
441 |
} |
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/FileTools.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
|
|
5 |
import org.cresques.cts.IProjection; |
|
6 |
import org.gvsig.fmap.dal.DALLocator; |
|
7 |
import org.gvsig.fmap.dal.DataManager; |
|
8 |
import org.gvsig.fmap.dal.DataStoreParameters; |
|
9 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
10 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
|
11 |
import org.gvsig.fmap.dal.store.dbf.DBFStoreParameters; |
|
12 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException; |
|
13 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
|
14 |
import org.gvsig.fmap.mapcontext.layers.LayerFactory; |
|
15 |
import org.gvsig.fmap.raster.layers.FLyrRasterSE; |
|
16 |
import org.gvsig.project.document.table.FeatureTableDocument; |
|
17 |
import org.gvsig.raster.dataset.RasterDataset; |
|
18 |
|
|
19 |
import com.iver.cit.gvsig.project.Project; |
|
20 |
import com.iver.cit.gvsig.project.ProjectFactory; |
|
21 |
|
|
22 |
|
|
23 |
public class FileTools { |
|
24 |
|
|
25 |
public final static String [] RASTER_EXT_IN = {"tif","asc", "dat", "tiff", "bmp", "gif", "img", "jpg", "png", "vrt", |
|
26 |
"lan", "gis", "pix", "aux", "adf", "mpr", "mpl", "map", "hdr"}; |
|
27 |
public final static String [] RASTER_DRIVERS_IN = {"gvSIG Image Driver", "gvSIG Image Driver", |
|
28 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
29 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
30 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
31 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
32 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
33 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
34 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
35 |
"gvSIG Image Driver", "gvSIG Image Driver", |
|
36 |
"gvSIG Image Driver" |
|
37 |
}; |
|
38 |
|
|
39 |
public final static String [] VECTOR_EXT_IN = {"shp","gml","dxf","dgn","dwg"}; |
|
40 |
public final static String [] VECTOR_DRIVERS_IN = {"gvSIG shp driver", |
|
41 |
"gvSIG GML Memory Driver", "gvSIG DXF Memory Driver", |
|
42 |
"gvSIG DGN Memory Driver", "gvSIG DWG Memory Driver"}; |
|
43 |
public final static String [] TABLE_EXT = {"dbf"}; |
|
44 |
public static final String[] LAYERS_EXT_IN = {"tif","asc", "dat", "tiff", "bmp", "gif", "img", "jpg", "png", "vrt", |
|
45 |
"lan", "gis", "pix", "aux", "adf", "mpr", "mpl", "map", "shp","gml", |
|
46 |
"dxf","dgn","dwg"}; |
|
47 |
public static final String[] LAYER_DRIVERS_IN = {"RasterStore", "RasterStore", |
|
48 |
"RasterStore", "RasterStore", |
|
49 |
"RasterStore", "RasterStore", |
|
50 |
"RasterStore", "RasterStore", |
|
51 |
"RasterStore", "RasterStore", |
|
52 |
"RasterStore", "RasterStore", |
|
53 |
"RasterStore", "RasterStore", |
|
54 |
"RasterStore", "RasterStore", |
|
55 |
"RasterStore", "RasterStore", |
|
56 |
"SHPStore", |
|
57 |
"GMLStore", "DXFStore", |
|
58 |
"DGNStore", "DWGStore"}; |
|
59 |
|
|
60 |
public static FLayer openLayer(String sFilename, String sName, IProjection projection) { |
|
61 |
|
|
62 |
String sExtension = sFilename.substring(sFilename.lastIndexOf('.') + 1, sFilename.length()); |
|
63 |
|
|
64 |
String[] extensionSupported = RasterDataset.getExtensionsSupported(); |
|
65 |
FLyrRasterSE rlayer = null; |
|
66 |
for (int i = 0; i < extensionSupported.length; i++) { |
|
67 |
if(sExtension.equals(extensionSupported[i])) |
|
68 |
try { |
|
69 |
rlayer = FLyrRasterSE.createLayer(sName, new File(sFilename), projection); |
|
70 |
} catch (LoadLayerException e) { |
|
71 |
e.printStackTrace(); |
|
72 |
return null; |
|
73 |
} |
|
74 |
if (rlayer != null && rlayer.isAvailable()){ |
|
75 |
return rlayer; |
|
76 |
} |
|
77 |
} |
|
78 |
|
|
79 |
for (int i = 0; i < LAYERS_EXT_IN.length; i++) { |
|
80 |
if (sExtension.equals(LAYERS_EXT_IN[i])){ |
|
81 |
try { |
|
82 |
FLayer layer; |
|
83 |
// Driver driver = LayerFactory.getDM().getDriver(FileTools.LAYER_DRIVERS_IN[i]); |
|
84 |
DataManager dm=DALLocator.getDataManager(); |
|
85 |
DataStoreParameters params=dm.createStoreParameters(FileTools.LAYER_DRIVERS_IN[i]); |
|
86 |
((FilesystemStoreParameters)params).setFile(new File(sFilename)); |
|
87 |
|
|
88 |
//FIXME ver si esto es necesario para todos los casos. |
|
89 |
if (params.hasDynValue("DefualtSRS")){ |
|
90 |
params.setDynValue("DefaultSRS", projection); |
|
91 |
} |
|
92 |
layer = LayerFactory.getInstance().createLayer(sName, params); |
|
93 |
|
|
94 |
|
|
95 |
if (layer != null && layer.isAvailable()){ |
|
96 |
return layer; |
|
97 |
} |
|
98 |
else{ |
|
99 |
return null; |
|
100 |
} |
|
101 |
} catch (Exception e) { |
|
102 |
e.printStackTrace(); |
|
103 |
return null; |
|
104 |
} |
|
105 |
} |
|
106 |
} |
|
107 |
return null; |
|
108 |
} |
|
109 |
|
|
110 |
public static FeatureTableDocument openTable(String sFilename, String sName) { |
|
111 |
DBFStoreParameters dbfParams=new DBFStoreParameters(); |
|
112 |
dbfParams.setDBFFileName(sFilename); |
|
113 |
DataManager dm=DALLocator.getDataManager(); |
|
114 |
try { |
|
115 |
FeatureStore store=(FeatureStore)dm.createStore(dbfParams); |
|
116 |
FeatureTableDocument pt = ProjectFactory.createTable(sName, store); |
|
117 |
return pt; |
|
118 |
|
|
119 |
} catch (Exception e) { |
|
120 |
return null; |
|
121 |
} |
|
122 |
|
|
123 |
} |
|
124 |
|
|
125 |
public static Object open(String sFilename){ |
|
126 |
|
|
127 |
FLayer layer = openLayer(sFilename, sFilename, Project.getDefaultProjection()); |
|
128 |
if (layer != null){ |
|
129 |
return layer; |
|
130 |
} |
|
131 |
|
|
132 |
FeatureTableDocument table = openTable(sFilename, sFilename); |
|
133 |
|
|
134 |
return table; |
|
135 |
|
|
136 |
|
|
137 |
} |
|
138 |
|
|
139 |
} |
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvRecordsetIterator.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.Iterator; |
|
5 |
|
|
6 |
import org.gvsig.fmap.dal.exception.DataException; |
|
7 |
import org.gvsig.fmap.dal.feature.Feature; |
|
8 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
|
9 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
|
10 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
11 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
12 |
import org.gvsig.project.document.table.FeatureTableDocument; |
|
13 |
|
|
14 |
import es.unex.sextante.dataObjects.IRecord; |
|
15 |
import es.unex.sextante.dataObjects.IRecordsetIterator; |
|
16 |
import es.unex.sextante.dataObjects.RecordImpl; |
|
17 |
|
|
18 |
public class gvRecordsetIterator implements IRecordsetIterator { |
|
19 |
|
|
20 |
private FeatureSet featureSet; |
|
21 |
// long m_iIndex; |
|
22 |
private Iterator<Feature> featureIterator; |
|
23 |
|
|
24 |
public gvRecordsetIterator(FeatureSet obj) { |
|
25 |
|
|
26 |
featureSet = (FeatureSet)obj; |
|
27 |
try { |
|
28 |
featureIterator=featureSet.iterator(); |
|
29 |
} catch (DataException e) { |
|
30 |
e.printStackTrace(); |
|
31 |
} |
|
32 |
// m_iIndex = 0; |
|
33 |
|
|
34 |
} |
|
35 |
|
|
36 |
public boolean hasNext() { |
|
37 |
return featureIterator.hasNext(); |
|
38 |
// long iRecordCount = 0; |
|
39 |
// try{ |
|
40 |
// if (m_Object instanceof TableMemoryDriver) { |
|
41 |
// TableMemoryDriver table = (TableMemoryDriver) m_Object; |
|
42 |
// iRecordCount = table.getRowCount(); |
|
43 |
// } |
|
44 |
// else{ |
|
45 |
// FeatureTableDocument table = (FeatureTableDocument) m_Object; |
|
46 |
// featureIterator = table.getStore().getFeatureSet(table.getQuery()).iterator(); |
|
47 |
// } |
|
48 |
// } |
|
49 |
// catch(Exception e){ |
|
50 |
// e.printStackTrace(); |
|
51 |
// } |
|
52 |
// |
|
53 |
// return iRecordCount > m_iIndex; |
|
54 |
|
|
55 |
} |
|
56 |
|
|
57 |
public IRecord next() { |
|
58 |
Feature feature = featureIterator.next(); |
|
59 |
FeatureType fType=feature.getType(); |
|
60 |
Iterator<FeatureAttributeDescriptor> descriptors=fType.iterator(); |
|
61 |
ArrayList<Object> objects=new ArrayList<Object>(); |
|
62 |
while (descriptors.hasNext()) { |
|
63 |
FeatureAttributeDescriptor descriptor = (FeatureAttributeDescriptor) descriptors.next(); |
|
64 |
objects.add(feature.get(descriptor.getName())); |
|
65 |
} |
|
66 |
|
|
67 |
IRecord record = new RecordImpl(objects.toArray(new Object[0])); |
|
68 |
// int iFieldCount; |
|
69 |
// try{ |
|
70 |
// if (m_Object instanceof TableMemoryDriver) { |
|
71 |
// TableMemoryDriver table = (TableMemoryDriver) m_Object; |
|
72 |
// iFieldCount = table.getFieldCount(); |
|
73 |
// Object[] obj = new Object[iFieldCount]; |
|
74 |
// for (int i = 0; i < iFieldCount; i++) { |
|
75 |
// obj[i] = table.getFieldValue(m_iIndex, i); |
|
76 |
// } |
|
77 |
// record = new RecordImpl(obj); |
|
78 |
// } |
|
79 |
// else{ |
|
80 |
// FeatureTableDocument table = (FeatureTableDocument) m_Object; |
|
81 |
// Value[] obj = table.getModelo().getRecordset().getRow(m_iIndex); |
|
82 |
// record = new RecordImpl(DataTools.getSextanteValues(obj)); |
|
83 |
// } |
|
84 |
// } |
|
85 |
// catch(Exception e){} |
|
86 |
// |
|
87 |
// m_iIndex++; |
|
88 |
|
|
89 |
return record; |
|
90 |
|
|
91 |
} |
|
92 |
|
|
93 |
public void close() {} |
|
94 |
|
|
95 |
} |
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvFeatureIterator.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.Iterator; |
|
5 |
|
|
6 |
import org.gvsig.fmap.dal.exception.DataException; |
|
7 |
import org.gvsig.fmap.dal.feature.Feature; |
|
8 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
|
9 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
10 |
import org.gvsig.fmap.geom.operation.tojts.ToJTS; |
|
11 |
|
|
12 |
import com.vividsolutions.jts.geom.Geometry; |
|
13 |
|
|
14 |
import es.unex.sextante.dataObjects.FeatureImpl; |
|
15 |
import es.unex.sextante.dataObjects.IFeature; |
|
16 |
import es.unex.sextante.dataObjects.IFeatureIterator; |
|
17 |
|
|
18 |
public class gvFeatureIterator implements IFeatureIterator { |
|
19 |
|
|
20 |
private Iterator<Feature> featureIterator; |
|
21 |
|
|
22 |
public gvFeatureIterator(org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect layer){ |
|
23 |
try { |
|
24 |
featureIterator = layer.getFeatureStore().getFeatureSet().iterator(); |
|
25 |
} catch (DataException e) { |
|
26 |
e.printStackTrace(); |
|
27 |
} |
|
28 |
} |
|
29 |
|
|
30 |
public boolean hasNext() { |
|
31 |
return featureIterator.hasNext(); |
|
32 |
} |
|
33 |
|
|
34 |
public IFeature next() throws java.util.NoSuchElementException{ |
|
35 |
try{ |
|
36 |
Feature f=featureIterator.next(); |
|
37 |
org.gvsig.fmap.geom.Geometry geometry = f.getDefaultGeometry(); |
|
38 |
Geometry geom = (Geometry)geometry.invokeOperation(ToJTS.CODE, null); |
|
39 |
FeatureType type=f.getType(); |
|
40 |
Iterator<FeatureAttributeDescriptor> iter=type.iterator(); |
|
41 |
ArrayList<Object> objects=new ArrayList<Object>(); |
|
42 |
while (iter.hasNext()) { |
|
43 |
FeatureAttributeDescriptor descriptor = iter.next(); |
|
44 |
String name=descriptor.getName(); |
|
45 |
if (!type.getDefaultGeometryAttributeName().equals(name)){ |
|
46 |
objects.add(f.get(name)); |
|
47 |
} |
|
48 |
} |
|
49 |
FeatureImpl feature = new FeatureImpl(geom, objects.toArray(new Object[0])); |
|
50 |
return feature; |
|
51 |
}catch (Exception e){ |
|
52 |
e.printStackTrace(); |
|
53 |
return null; |
|
54 |
} |
|
55 |
|
|
56 |
} |
|
57 |
|
|
58 |
public void close() {} |
|
59 |
|
|
60 |
} |
tags/tmp_build/extensions/extSextanteGvsigBindings/src/es/unex/sextante/gvsig/core/gvTable.java | ||
---|---|---|
1 |
package es.unex.sextante.gvsig.core; |
|
2 |
|
|
3 |
import java.io.File; |
|
4 |
import java.io.IOException; |
|
5 |
import java.sql.Types; |
|
6 |
|
|
7 |
import org.gvsig.fmap.dal.DataTypes; |
|
8 |
import org.gvsig.fmap.dal.exception.DataException; |
|
9 |
import org.gvsig.fmap.dal.exception.ReadException; |
|
10 |
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor; |
|
11 |
import org.gvsig.fmap.dal.feature.FeatureSet; |
|
12 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
|
13 |
import org.gvsig.fmap.dal.feature.FeatureType; |
|
14 |
import org.gvsig.project.document.table.FeatureTableDocument; |
|
15 |
|
|
16 |
import com.iver.cit.gvsig.project.ProjectFactory; |
|
17 |
|
|
18 |
|
|
19 |
import es.unex.sextante.dataObjects.AbstractTable; |
|
20 |
import es.unex.sextante.dataObjects.IRecordsetIterator; |
|
21 |
|
|
22 |
public class gvTable extends AbstractTable { |
|
23 |
|
|
24 |
private Object m_BaseDataObject; |
|
25 |
private String m_sName; |
|
26 |
private String m_sFilename; |
|
27 |
private FeatureSet featureSet; |
|
28 |
private FeatureType featureType; |
|
29 |
private FeatureStore featureStore; |
|
30 |
|
|
31 |
public String getName() { |
|
32 |
|
|
33 |
if (m_BaseDataObject instanceof FeatureTableDocument){ |
|
34 |
FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject; |
|
35 |
return table.getName(); |
|
36 |
} |
|
37 |
else{ |
|
38 |
return m_sName; |
|
39 |
} |
|
40 |
|
|
41 |
} |
|
42 |
|
|
43 |
public void create(Object obj) { |
|
44 |
|
|
45 |
if (obj instanceof FeatureTableDocument){ |
|
46 |
try { |
|
47 |
featureStore =((FeatureTableDocument)obj).getStore(); |
|
48 |
featureSet = featureStore.getFeatureSet(((FeatureTableDocument)obj).getQuery()); |
|
49 |
featureType = featureStore.getDefaultFeatureType(); |
|
50 |
|
|
51 |
} catch (DataException e) { |
|
52 |
e.printStackTrace(); |
|
53 |
} |
|
54 |
} |
|
55 |
|
|
56 |
} |
|
57 |
|
|
58 |
public void create(String sName, String sFilename, Class[] types, String[] sFields) { |
|
59 |
|
|
60 |
// m_sFilename = sFilename; |
|
61 |
// TableMemoryDriver table = new TableMemoryDriver(sFields, DataTools.getgvSIGTypes(types)); |
|
62 |
// m_sName = sName; |
|
63 |
// m_BaseDataObject = table; |
|
64 |
|
|
65 |
} |
|
66 |
|
|
67 |
public void addRecord(Object[] record) { |
|
68 |
|
|
69 |
// if (m_BaseDataObject instanceof TableMemoryDriver) { |
|
70 |
// TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject; |
|
71 |
// table.addRow(DataTools.getGVSIGValues(record)); |
|
72 |
// } |
|
73 |
|
|
74 |
} |
|
75 |
|
|
76 |
public IRecordsetIterator iterator() { |
|
77 |
|
|
78 |
return new gvRecordsetIterator(featureSet); |
|
79 |
|
|
80 |
} |
|
81 |
|
|
82 |
public String getFieldName(int i) { |
|
83 |
return ((FeatureAttributeDescriptor)featureType.get(i)).getName(); |
|
84 |
// if (m_BaseDataObject instanceof FeatureTableDocument) { |
|
85 |
// FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject; |
|
86 |
// try { |
|
87 |
// return table.getModelo().getRecordset().getFieldName(i); |
|
88 |
// } catch (Exception e) { |
|
89 |
// return ""; |
|
90 |
// } |
|
91 |
// } |
|
92 |
// else{ |
|
93 |
// TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject; |
|
94 |
// return table.getFieldName(i); |
|
95 |
// } |
|
96 |
|
|
97 |
} |
|
98 |
|
|
99 |
public Class getFieldType(int i) { |
|
100 |
return DataTools.getTypeClass(((FeatureAttributeDescriptor)featureType.get(i)).getDataType()); |
|
101 |
// if (m_BaseDataObject instanceof FeatureTableDocument) { |
|
102 |
// FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject; |
|
103 |
// try { |
|
104 |
// int iType = table.getModelo().getRecordset().getFieldType(i); |
|
105 |
// return DataTools.getTypeClass(iType); |
|
106 |
// } catch (Exception e) { |
|
107 |
// return String.class; |
|
108 |
// } |
|
109 |
// } |
|
110 |
// else{ |
|
111 |
// TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject; |
|
112 |
// int iType; |
|
113 |
// iType = table.getFieldType(i); |
|
114 |
// return DataTools.getTypeClass(iType); |
|
115 |
// } |
|
116 |
|
|
117 |
} |
|
118 |
|
|
119 |
public int getFieldCount() { |
|
120 |
return featureType.size(); |
|
121 |
// if (m_BaseDataObject instanceof FeatureTableDocument) { |
|
122 |
// FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject; |
|
123 |
// try { |
|
124 |
// return table.getModelo().getRecordset().getFieldCount(); |
|
125 |
// } catch (Exception e) { |
|
126 |
// return 0; |
|
127 |
// } |
|
128 |
// } |
|
129 |
// else{ |
|
130 |
// TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject; |
|
131 |
// return table.getFieldCount(); |
|
132 |
// } |
|
133 |
|
|
134 |
} |
|
135 |
|
|
136 |
public long getRecordCount() { |
|
137 |
try { |
|
138 |
return featureSet.getSize(); |
|
139 |
} catch (DataException e) { |
|
140 |
e.printStackTrace(); |
|
141 |
} |
|
142 |
return 0; |
|
143 |
// if (m_BaseDataObject instanceof FeatureTableDocument) { |
|
144 |
// FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject; |
|
145 |
// try { |
|
146 |
// return table.getModelo().getRecordset().getRowCount(); |
|
147 |
// } catch (Exception e) { |
|
148 |
// return 0; |
|
149 |
// } |
|
150 |
// } |
|
151 |
// else{ |
|
152 |
// TableMemoryDriver table = (TableMemoryDriver) m_BaseDataObject; |
|
153 |
// return table.getRowCount(); |
|
154 |
// } |
|
155 |
|
|
156 |
} |
|
157 |
|
|
158 |
public void postProcess() { |
|
159 |
|
|
160 |
// SelectableDataSource source; |
|
161 |
// ITableDefinition orgDef; |
|
162 |
// FileDriver driver; |
|
163 |
File file; |
|
164 |
try { |
|
165 |
// LayerFactory.getDataSourceFactory().addDataSource((TableMemoryDriver)m_BaseDataObject, |
|
166 |
// m_sName); |
|
167 |
// DataSource dataSource = LayerFactory.getDataSourceFactory(). |
|
168 |
// createRandomDataSource(m_sName); |
|
169 |
// dataSource.start(); |
|
170 |
// SelectableDataSource sds = new SelectableDataSource(dataSource); |
|
171 |
// EditableAdapter auxea = new EditableAdapter(); |
|
172 |
// auxea.setOriginalDataSource(sds); |
|
173 |
FeatureTableDocument table = ProjectFactory.createTable(m_sName, featureStore); |
|
174 |
file = new File(m_sFilename); |
|
175 |
// driver = (FileDriver) LayerFactory.getDM().getDriver("gdbms dbf driver"); |
|
176 |
// source = table.getModelo().getRecordset(); |
|
177 |
// source.start(); |
|
178 |
// orgDef = table.getModelo().getTableDefinition(); |
|
179 |
} catch (Exception e) { |
|
180 |
return; |
|
181 |
} |
|
182 |
|
|
183 |
// try { |
|
184 |
// if (!file.exists()){ |
|
185 |
// driver.createSource(file.getAbsolutePath(),new String[] {"0"},new int[] {Types.INTEGER} ); |
|
186 |
// file.createNewFile(); |
|
187 |
// } |
|
188 |
// driver.open(file); |
|
189 |
// } catch (IOException e) { |
|
190 |
// e.printStackTrace(); |
|
191 |
// return; |
|
192 |
// } catch (ReadException ex) { |
|
193 |
// ex.printStackTrace(); |
|
194 |
// return; |
|
195 |
// } |
|
196 |
|
|
197 |
// IWriter writer = ((IWriteable)driver).getWriter(); |
|
198 |
// try { |
|
199 |
// writer.initialize(orgDef); |
|
200 |
// writer.preProcess(); |
|
201 |
// SourceIterator sourceIter = new SourceIterator(source); |
|
202 |
// IFeature feature; |
|
203 |
// int i=0; |
|
204 |
// while (sourceIter.hasNext()){ |
|
205 |
// feature = sourceIter.nextFeature(); |
|
206 |
// |
|
207 |
// DefaultRowEdited edRow = new DefaultRowEdited(feature, |
|
208 |
// DefaultRowEdited.STATUS_ADDED, i); |
|
209 |
// writer.process(edRow); |
|
210 |
// i++; |
|
211 |
// } |
|
212 |
// writer.postProcess(); |
|
213 |
// } catch (Exception e) { |
|
214 |
// return; |
|
215 |
// } |
|
216 |
|
|
217 |
FeatureTableDocument table = FileTools.openTable(m_sFilename, m_sName); |
|
218 |
create(table); |
|
219 |
|
|
220 |
} |
|
221 |
|
|
222 |
public void open() { |
|
223 |
|
|
224 |
// if (m_BaseDataObject instanceof FeatureTableDocument){ |
|
225 |
// FeatureTableDocument table = (FeatureTableDocument) m_BaseDataObject; |
|
226 |
// try { |
|
227 |
// table.getModelo().getRecordset().start(); |
|
228 |
// } catch (Exception e) { |
|
229 |
// e.printStackTrace(); |
|
230 |
// } |
|
231 |
// } |
|
232 |
|
|
233 |
} |
|
234 |
|
Also available in: Unified diff