Revision 6318
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.buffer/org.gvsig.raster.lib.buffer.impl/src/main/java/org/gvsig/raster/lib/buffer/impl/BufferInterpolation.java | ||
---|---|---|
10 | 10 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
11 | 11 |
import org.gvsig.tools.ToolsLocator; |
12 | 12 |
import org.gvsig.tools.task.SimpleTaskStatus; |
13 |
|
|
13 | 14 |
import org.slf4j.Logger; |
14 | 15 |
import org.slf4j.LoggerFactory; |
15 | 16 |
|
... | ... | |
62 | 63 |
Band sourceBand = source.getBand(iBand); |
63 | 64 |
Band targetBand = target.getBand(iBand); |
64 | 65 |
if (rows <= source.getRows()) { // submuestreo |
66 |
int previousTargetRow=-1; |
|
67 |
int previousTargetColumn=-1; |
|
65 | 68 |
for (int iRow = 0; iRow < source.getRows(); iRow++) { |
66 |
for (int iCol = 0; iCol < source.getColumns(); iCol++) { |
|
67 |
status.setCurValue(count++); |
|
68 |
if (status.isCancelled()) { |
|
69 |
status.abort(); |
|
70 |
return; |
|
69 |
int targetRow = (int) (iRow * stepY); |
|
70 |
if (targetRow != previousTargetRow) { |
|
71 |
for (int iCol = 0; iCol < source.getColumns(); iCol++) { |
|
72 |
status.setCurValue(count++); |
|
73 |
if (status.isCancelled()) { |
|
74 |
status.abort(); |
|
75 |
return; |
|
76 |
} |
|
77 |
int targetColumn = (int) (iCol * stepX); |
|
78 |
if (targetColumn != previousTargetColumn) { |
|
79 |
targetBand.set(targetRow, targetColumn, sourceBand.get(iRow, iCol)); |
|
80 |
previousTargetRow = targetRow; |
|
81 |
previousTargetColumn = targetColumn; |
|
82 |
} |
|
71 | 83 |
} |
72 |
targetBand.set((int) (iRow * stepY), (int) (iCol * stepX), sourceBand.get(iRow, iCol)); |
|
84 |
} else { |
|
85 |
count += source.getColumns(); |
|
86 |
status.setCurValue(count); |
|
73 | 87 |
} |
74 | 88 |
} |
75 | 89 |
} else { // supermuestreo |
... | ... | |
80 | 94 |
status.abort(); |
81 | 95 |
return; |
82 | 96 |
} |
83 |
targetBand.set(iRow, iCol, sourceBand.get((int) (iRow / stepY), (int) (iCol / stepX))); |
|
97 |
int sourceRow = (int) (iRow / stepY); |
|
98 |
int sourceColumn = (int) (iCol / stepX); |
|
99 |
targetBand.set(iRow, iCol, sourceBand.get(sourceRow, sourceColumn)); |
|
84 | 100 |
} |
85 | 101 |
} |
86 | 102 |
} |
87 |
|
|
88 | 103 |
} |
89 | 104 |
|
90 | 105 |
if (isMyStatus) { |
Also available in: Unified diff