Revision 6498
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.tilecache/org.gvsig.raster.tilecache.app/org.gvsig.raster.tilecache.app.mainplugin/src/main/resources-plugin/config.xml | ||
---|---|---|
19 | 19 |
action-command="view-test-layer-add" |
20 | 20 |
icon="view-test-layer-add" |
21 | 21 |
position="650300005" |
22 |
accelerator="Alt+?" |
|
23 | 22 |
/> |
24 | 23 |
|
25 | 24 |
<menu |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.tilecache/org.gvsig.raster.tilecache.provider/src/main/java/org/gvsig/raster/tilecache/provider/TileStructImage.java | ||
---|---|---|
69 | 69 |
import org.gvsig.raster.lib.buffer.api.BufferLocator; |
70 | 70 |
import org.gvsig.raster.lib.buffer.api.BufferManager; |
71 | 71 |
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException; |
72 |
import org.gvsig.tools.ToolsLocator; |
|
72 | 73 |
import org.gvsig.tools.dispose.DisposeUtils; |
74 |
import org.gvsig.tools.dispose.impl.AbstractDisposable; |
|
73 | 75 |
import org.gvsig.tools.dynobject.DynObject; |
74 | 76 |
import org.gvsig.tools.dynobject.exception.DynMethodException; |
77 |
import org.gvsig.tools.exception.BaseException; |
|
75 | 78 |
import org.gvsig.tools.extensionpoint.ExtensionPoint.Extension; |
76 | 79 |
|
77 | 80 |
/** |
... | ... | |
254 | 257 |
tileStore = createTileStore(zoomLevel, structRow, structCol); |
255 | 258 |
rasterSet = bufferManager.createBuffer(tileStore.getRasterSet(), false); |
256 | 259 |
|
257 |
if (recentAccededTiles.size() > MAX_RECENT_ACCEDED_TILES_NUMBER) { |
|
260 |
if (recentAccededTiles.size() >= MAX_RECENT_ACCEDED_TILES_NUMBER) {
|
|
258 | 261 |
removeOlderTile(); |
259 | 262 |
} |
260 | 263 |
recentAccededTiles.put(keyTile, new Tile(rasterSet, keyTile)); |
... | ... | |
551 | 554 |
} |
552 | 555 |
if (olderTile != null) { |
553 | 556 |
recentAccededTiles.remove(olderTile.getKey()); |
557 |
DisposeUtils.dispose(olderTile); |
|
554 | 558 |
} |
555 | 559 |
} |
556 | 560 |
|
... | ... | |
609 | 613 |
return this.legend; |
610 | 614 |
} |
611 | 615 |
|
612 |
private class Tile { |
|
616 |
private class Tile extends AbstractDisposable {
|
|
613 | 617 |
|
614 | 618 |
org.gvsig.raster.lib.buffer.api.Buffer buffer; |
615 | 619 |
long lastAccess; |
616 | 620 |
String key; |
617 | 621 |
|
618 | 622 |
public Tile(org.gvsig.raster.lib.buffer.api.Buffer buffer, String key) { |
623 |
logger.info("CONSTRUCTOR hashCode = "+this.hashCode()+ " className = "+this.getClass().getSimpleName()); |
|
624 |
ToolsLocator.getDisposableManager().bind(buffer); |
|
619 | 625 |
this.buffer = buffer; |
620 | 626 |
this.key = key; |
621 | 627 |
lastAccess = System.currentTimeMillis(); |
... | ... | |
637 | 643 |
@Override |
638 | 644 |
protected void finalize() throws Throwable { |
639 | 645 |
super.finalize(); |
640 |
logger.info("Tile with key " + this.key + " CLEANED.");
|
|
646 |
logger.info("CLEANED key " + this.key +" hashCode = "+this.hashCode());
|
|
641 | 647 |
} |
648 |
|
|
649 |
@Override |
|
650 |
protected void doDispose() throws BaseException { |
|
651 |
DisposeUtils.dispose(buffer); |
|
652 |
buffer = null; |
|
653 |
} |
|
642 | 654 |
} |
643 | 655 |
|
644 | 656 |
} |
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.dal.raster/org.gvsig.fmap.dal.raster.impl/src/main/java/org/gvsig/fmap/dal/raster/impl/DefaultRasterSet.java | ||
---|---|---|
90 | 90 |
*/ |
91 | 91 |
public DefaultRasterSet(RasterStore store, RasterQuery query) throws DataException { |
92 | 92 |
|
93 |
logger.info("DefaultRasterSet CONSTRUCTOR hashCode = "+this.hashCode()+ " className = "+this.getClass().getSimpleName());
|
|
93 |
logger.info("CONSTRUCTOR hashCode = "+this.hashCode()+ " className = "+this.getClass().getSimpleName()); |
|
94 | 94 |
if(ToolsLocator.getDisposableManager() != null) { |
95 | 95 |
ToolsLocator.getDisposableManager().bind(this); |
96 | 96 |
} else { |
... | ... | |
108 | 108 |
// Filter buffer by raster query |
109 | 109 |
if (query != null) { |
110 | 110 |
if (query.getClip() != null) { |
111 |
buffer = buffer.clip(query.getClip()); |
|
111 |
Buffer clip = buffer.clip(query.getClip()); |
|
112 |
DisposeUtils.dispose(buffer); |
|
113 |
buffer = clip; |
|
112 | 114 |
} |
113 | 115 |
} |
114 | 116 |
} catch (BufferException e) { |
... | ... | |
327 | 329 |
* @see #dispose() |
328 | 330 |
*/ |
329 | 331 |
public void doDispose() throws BaseException { |
330 |
logger.info("DefaultRasterSet DO DISPOSE hashCode = "+this.hashCode());
|
|
332 |
logger.info("DO DISPOSE hashCode = "+this.hashCode()); |
|
331 | 333 |
|
332 | 334 |
DisposableManager disposableManager = ToolsLocator.getDisposableManager(); |
333 | 335 |
DisposeUtils.dispose(store); |
... | ... | |
340 | 342 |
@Override |
341 | 343 |
protected void finalize() throws Throwable { |
342 | 344 |
super.finalize(); |
343 |
logger.info("DefaultRasterSet CLEANED hashCode = "+this.hashCode());
|
|
345 |
logger.info("CLEANED hashCode = "+this.hashCode()); |
|
344 | 346 |
|
345 | 347 |
} |
346 | 348 |
|
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.mapcontext.raster/org.gvsig.fmap.mapcontext.raster.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/DefaultRasterLayer.java | ||
---|---|---|
195 | 195 |
if (rAux == null || rAux.isEmpty() || rAux.getMaximum(0) - rAux.getMinimum(0) == 0 |
196 | 196 |
&& rAux.getMaximum(1) - rAux.getMinimum(1) == 0) { |
197 | 197 |
try { |
198 |
GeometryManager geomManager |
|
199 |
= GeometryLocator.getGeometryManager(); |
|
200 |
rAux |
|
201 |
= geomManager.createEnvelope(0, 0, 90, 90, SUBTYPES.GEOM2D); |
|
198 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
|
199 |
rAux = geomManager.createEnvelope(0, 0, 90, 90, SUBTYPES.GEOM2D); |
|
202 | 200 |
} catch (CreateEnvelopeException e) { |
203 | 201 |
logger.error("Error creating the envelope", e); |
204 | 202 |
e.printStackTrace(); |
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/AbstractClippedBand.java | ||
---|---|---|
16 | 16 |
*/ |
17 | 17 |
public abstract class AbstractClippedBand extends AbstractBand implements Band { |
18 | 18 |
protected Band band; |
19 |
protected ClippedBuffer clippedBuffer; |
|
19 |
protected int firstRow; |
|
20 |
protected int firstColumn; |
|
20 | 21 |
|
21 | 22 |
/** |
22 | 23 |
* @param buffer |
23 | 24 |
* @param band |
24 | 25 |
*/ |
25 | 26 |
public AbstractClippedBand(Buffer buffer, Band band) { |
26 |
DisposableManager disposableManager = ToolsLocator.getDisposableManager(); |
|
27 |
disposableManager.bind(buffer); |
|
28 |
disposableManager.bind(band); |
|
29 |
this.band = band; |
|
30 |
this.clippedBuffer = (ClippedBuffer)buffer; |
|
27 |
if (buffer instanceof ClippedBuffer) { |
|
28 |
ClippedBuffer clippedBuffer = (ClippedBuffer) buffer; |
|
31 | 29 |
|
32 |
this.rows = this.clippedBuffer.getRows(); |
|
33 |
this.columns = this.clippedBuffer.getColumns(); |
|
34 |
this.noData = this.band.getNoData(); |
|
30 |
DisposableManager disposableManager = ToolsLocator.getDisposableManager(); |
|
31 |
disposableManager.bind(band); |
|
32 |
this.band = band; |
|
33 |
|
|
34 |
this.rows = clippedBuffer.getRows(); |
|
35 |
this.columns = clippedBuffer.getColumns(); |
|
36 |
this.firstRow = clippedBuffer.getFirstRow(); |
|
37 |
this.firstColumn = clippedBuffer.getFirstColumn(); |
|
38 |
this.noData = this.band.getNoData(); |
|
39 |
} else { |
|
40 |
throw new IllegalArgumentException("buffer isn't a ClippedBuffer"); |
|
41 |
} |
|
35 | 42 |
} |
36 | 43 |
|
37 | 44 |
@Override |
... | ... | |
46 | 53 |
|
47 | 54 |
@Override |
48 | 55 |
public Object get(int row, int column) { |
49 |
int bandRow = row + this.clippedBuffer.getFirstRow();
|
|
50 |
int bandColumn = column + this.clippedBuffer.getFirstColumn();
|
|
56 |
int bandRow = row + firstRow;
|
|
57 |
int bandColumn = column + firstColumn;
|
|
51 | 58 |
return this.band.get(bandRow, bandColumn); |
52 | 59 |
} |
53 | 60 |
|
... | ... | |
81 | 88 |
public void doDispose() throws BaseException { |
82 | 89 |
super.doDispose(); |
83 | 90 |
DisposeUtils.dispose(band); |
84 |
DisposeUtils.dispose(clippedBuffer); |
|
85 | 91 |
band = null; |
86 |
clippedBuffer = null; |
|
87 | 92 |
} |
88 | 93 |
} |
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/ClippedBandByte.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
@Override |
28 | 28 |
public void fetchRow(int row, Object rowBuffer) { |
29 |
int bandRow = row + this.clippedBuffer.getFirstRow();
|
|
29 |
int bandRow = row + firstRow;
|
|
30 | 30 |
Object auxRowBuffer = this.band.createRowBuffer(); |
31 | 31 |
this.band.fetchRow(bandRow, auxRowBuffer); |
32 | 32 |
|
33 |
System.arraycopy(auxRowBuffer, this.clippedBuffer.getFirstColumn(), (byte[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
33 |
System.arraycopy(auxRowBuffer, firstColumn, (byte[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
34 | 34 |
} |
35 |
|
|
35 |
|
|
36 | 36 |
@Override |
37 | 37 |
public byte getValue(int row, int column) { |
38 | 38 |
return (byte) this.get(row, column); |
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/ClippedBandFloat.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
@Override |
28 | 28 |
public void fetchRow(int row, Object rowBuffer) { |
29 |
int bandRow = row + this.clippedBuffer.getFirstRow();
|
|
29 |
int bandRow = row + this.firstRow;
|
|
30 | 30 |
Object auxRowBuffer = this.band.createRowBuffer(); |
31 | 31 |
this.band.fetchRow(bandRow, auxRowBuffer); |
32 | 32 |
|
33 |
System.arraycopy(auxRowBuffer, this.clippedBuffer.getFirstColumn(), (float[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
33 |
System.arraycopy(auxRowBuffer, this.firstColumn, (float[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
34 | 34 |
} |
35 |
|
|
35 |
|
|
36 | 36 |
@Override |
37 | 37 |
public float getValue(int row, int column) { |
38 | 38 |
return (float) this.get(row, column); |
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/ClippedBandDouble.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
@Override |
28 | 28 |
public void fetchRow(int row, Object rowBuffer) { |
29 |
int bandRow = row + this.clippedBuffer.getFirstRow();
|
|
29 |
int bandRow = row + this.firstRow;
|
|
30 | 30 |
Object auxRowBuffer = this.band.createRowBuffer(); |
31 | 31 |
this.band.fetchRow(bandRow, auxRowBuffer); |
32 | 32 |
|
33 |
System.arraycopy(auxRowBuffer, this.clippedBuffer.getFirstColumn(), (double[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
33 |
System.arraycopy(auxRowBuffer, firstColumn, (double[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
34 | 34 |
} |
35 | 35 |
|
36 | 36 |
@Override |
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/ClippedBuffer.java | ||
---|---|---|
44 | 44 |
ToolsLocator.getDisposableManager().bind(buffer); |
45 | 45 |
this.buffer = buffer; |
46 | 46 |
try { |
47 |
this.envelope = buffer.getEnvelope().getGeometry().intersection(envelope.getGeometry()).getEnvelope(); |
|
47 |
this.envelope = this.buffer.getEnvelope().getGeometry().intersection(envelope.getGeometry()).getEnvelope();
|
|
48 | 48 |
} catch (GeometryOperationNotSupportedException | GeometryOperationException e1) { |
49 | 49 |
throw new CreateBufferException(e1); |
50 | 50 |
} |
... | ... | |
59 | 59 |
this.bands = new ArrayList<Band>(); |
60 | 60 |
|
61 | 61 |
try { |
62 |
createBands(buffer.getBands()); |
|
62 |
createBands(this.buffer.getBands());
|
|
63 | 63 |
} catch (Exception e) { |
64 | 64 |
throw new CreateBufferException(e); |
65 | 65 |
} |
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/AbstractBuffer.java | ||
---|---|---|
70 | 70 |
private boolean disposed = false; |
71 | 71 |
|
72 | 72 |
public AbstractBuffer() { |
73 |
logger.info("AbstractBuffer CONSTRUCTOR with rows = "+rows+" columns = "+columns+ " hashCode = "+this.hashCode()+ " className = "+this.getClass().getSimpleName());
|
|
73 |
logger.info("CONSTRUCTOR rows = "+rows+" columns = "+columns+ " hashCode = "+this.hashCode()+ " className = "+this.getClass().getSimpleName());
|
|
74 | 74 |
if(ToolsLocator.getDisposableManager() != null) { |
75 | 75 |
ToolsLocator.getDisposableManager().bind(this); |
76 | 76 |
} else { |
... | ... | |
527 | 527 |
synchronized (lock) { |
528 | 528 |
// Check if we have already been disposed, and don't do it again |
529 | 529 |
if (!disposed) { |
530 |
logger.info("AbstractBuffer with rows = "+rows+" columns = "+columns+" DISPOSE hashCode = "+this.hashCode());
|
|
530 |
logger.info("DISPOSE rows = "+rows+" columns = "+columns+" hashCode = "+this.hashCode()+" className = "+this.getClass().getSimpleName());
|
|
531 | 531 |
if ( ToolsLocator.getDisposableManager().release(this) ) { |
532 | 532 |
try { |
533 | 533 |
doDispose(); |
... | ... | |
546 | 546 |
* @see #dispose() |
547 | 547 |
*/ |
548 | 548 |
public void doDispose() throws BaseException { |
549 |
logger.info("AbstractBuffer with rows = "+rows+" columns = "+columns+" DO DISPOSE hashCode = "+this.hashCode());
|
|
549 |
logger.info("DO DISPOSE rows = "+rows+" columns = "+columns+" hashCode = "+this.hashCode());
|
|
550 | 550 |
for (Iterator iterator = bands.iterator(); iterator.hasNext();) { |
551 | 551 |
Band band = (Band) iterator.next(); |
552 | 552 |
DisposeUtils.dispose(band); |
553 | 553 |
} |
554 |
bands.removeAll(bands); |
|
554 | 555 |
envelope = null; |
555 | 556 |
projection = null; |
556 | 557 |
//TODO: ?FilterList Disposable? |
... | ... | |
565 | 566 |
@Override |
566 | 567 |
protected void finalize() throws Throwable { |
567 | 568 |
super.finalize(); |
568 |
logger.info("AbstractBuffer with rows = "+rows+" columns = "+columns+" CLEANED hashCode = "+this.hashCode()); |
|
569 |
|
|
569 |
logger.info("CLEANED rows = "+rows+" columns = "+columns+" hashCode = "+this.hashCode()); |
|
570 | 570 |
} |
571 | 571 |
} |
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/AbstractPaginatedBand.java | ||
---|---|---|
93 | 93 |
if (firstRowOfPage + rowsPerPage > this.rows) { |
94 | 94 |
rowsInPage = this.rows - firstRowOfPage; |
95 | 95 |
} |
96 |
logger.info("loadPage: firstRowOfPage = "+firstRowOfPage + " rowsPerPage = "+rowsPerPage+" rows = "+rows); |
|
96 | 97 |
this.pageManager.load(data, firstRowOfPage, rowsInPage, this.getDataType()); |
97 | 98 |
loaded = true; |
98 | 99 |
} catch (IOException e) { |
... | ... | |
101 | 102 |
} |
102 | 103 |
|
103 | 104 |
protected void saveCurrentPage() { |
104 |
logger.info("AbstractPaginatedBand - saveCurrentPage: firstRowOfPage = "+firstRowOfPage + " rowsPerPage = "+rowsPerPage+" rows = "+rows); |
|
105 | 105 |
try { |
106 | 106 |
int rowsInPage = rowsPerPage; |
107 | 107 |
if (firstRowOfPage + rowsPerPage > this.rows) { |
... | ... | |
161 | 161 |
@Override |
162 | 162 |
public void doDispose() throws BaseException { |
163 | 163 |
super.doDispose(); |
164 |
logger.info("AbstractPaginatedBand - doDispose : firstRowOfPage = "+firstRowOfPage + " rowsPerPage = "+rowsPerPage+" rows = "+rows);
|
|
164 |
logger.info("DO DISPOSE firstRowOfPage = "+firstRowOfPage + " rowsPerPage = "+rowsPerPage+" rows = "+rows);
|
|
165 | 165 |
data = null; |
166 | 166 |
//FIXME: ?hacer disposables los pageManagers? |
167 | 167 |
pageManager = null; |
... | ... | |
170 | 170 |
@Override |
171 | 171 |
protected void finalize() throws Throwable { |
172 | 172 |
super.finalize(); |
173 |
logger.info("AbstractPaginatedBand with rowsPerPage = "+rowsPerPage+" columns = "+columns+" CLEANED hashCode = "+this.hashCode());
|
|
173 |
logger.info("CLEANED rowsPerPage = "+rowsPerPage+" columns = "+columns+" hashCode = "+this.hashCode());
|
|
174 | 174 |
|
175 | 175 |
} |
176 | 176 |
|
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/AbstractTiledBand.java | ||
---|---|---|
178 | 178 |
|
179 | 179 |
@Override |
180 | 180 |
public void doDispose() throws BaseException { |
181 |
super.dispose(); |
|
181 |
super.doDispose();
|
|
182 | 182 |
data = null; |
183 | 183 |
//FIXME: ?hacer disposables los pageManagers? |
184 | 184 |
tileManager = null; |
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/ClippedBandInt.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
@Override |
28 | 28 |
public void fetchRow(int row, Object rowBuffer) { |
29 |
int bandRow = row + this.clippedBuffer.getFirstRow();
|
|
29 |
int bandRow = row + this.firstRow;
|
|
30 | 30 |
Object auxRowBuffer = this.band.createRowBuffer(); |
31 | 31 |
this.band.fetchRow(bandRow, auxRowBuffer); |
32 | 32 |
|
33 |
System.arraycopy(auxRowBuffer, this.clippedBuffer.getFirstColumn(), (int[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
33 |
System.arraycopy(auxRowBuffer, this.firstColumn, (int[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
34 | 34 |
} |
35 |
|
|
35 |
|
|
36 | 36 |
@Override |
37 | 37 |
public int getValue(int row, int column) { |
38 | 38 |
return (int) this.get(row, column); |
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/ClippedBandShort.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
@Override |
28 | 28 |
public void fetchRow(int row, Object rowBuffer) { |
29 |
int bandRow = row + this.clippedBuffer.getFirstRow();
|
|
29 |
int bandRow = row + this.firstRow;
|
|
30 | 30 |
Object auxRowBuffer = this.band.createRowBuffer(); |
31 | 31 |
this.band.fetchRow(bandRow, auxRowBuffer); |
32 | 32 |
|
33 |
System.arraycopy(auxRowBuffer, this.clippedBuffer.getFirstColumn(), (int[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
33 |
System.arraycopy(auxRowBuffer, this.firstColumn, (int[]) rowBuffer, 0, Math.min(getColumns(), this.band.getColumns()));
|
|
34 | 34 |
} |
35 | 35 |
|
36 | 36 |
@Override |
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/AbstractBand.java | ||
---|---|---|
135 | 135 |
@Override |
136 | 136 |
protected void finalize() throws Throwable { |
137 | 137 |
super.finalize(); |
138 |
logger.info("AbstractBand with rows = "+rows+" columns = "+columns+" CLEANED hashCode = "+this.hashCode());
|
|
138 |
logger.info("CLEANED rows = "+rows+" columns = "+columns+" hashCode = "+this.hashCode());
|
|
139 | 139 |
|
140 | 140 |
} |
141 | 141 |
|
... | ... | |
143 | 143 |
synchronized (lock) { |
144 | 144 |
// Check if we have already been disposed, and don't do it again |
145 | 145 |
if (!disposed) { |
146 |
logger.info("AbstractBand with rows = "+rows+" columns = "+columns+" DISPOSE hashCode = "+this.hashCode());
|
|
146 |
logger.info("DISPOSE rows = "+rows+" columns = "+columns+" hashCode = "+this.hashCode());
|
|
147 | 147 |
if ( ToolsLocator.getDisposableManager().release(this) ) { |
148 | 148 |
try { |
149 | 149 |
doDispose(); |
... | ... | |
162 | 162 |
* @see #dispose() |
163 | 163 |
*/ |
164 | 164 |
public void doDispose() throws BaseException { |
165 |
logger.info("AbstractBand with rows = "+rows+" columns = "+columns+" DO DISPOSE hashCode = "+this.hashCode());
|
|
165 |
logger.info("DO DISPOSE rows = "+rows+" columns = "+columns+" hashCode = "+this.hashCode());
|
|
166 | 166 |
noData = null; |
167 | 167 |
} |
168 | 168 |
|
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.legend/org.gvsig.raster.lib.legend.impl/src/main/java/org/gvsig/raster/lib/legend/impl/DefaultRasterLegend.java | ||
---|---|---|
7 | 7 |
import java.awt.image.BufferedImage; |
8 | 8 |
|
9 | 9 |
import org.cresques.cts.ICoordTrans; |
10 |
import org.slf4j.Logger; |
|
11 |
import org.slf4j.LoggerFactory; |
|
10 | 12 |
|
11 | 13 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
12 | 14 |
import org.gvsig.fmap.geom.GeometryLocator; |
13 | 15 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
14 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
|
15 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
|
16 | 16 |
import org.gvsig.fmap.geom.primitive.Envelope; |
17 | 17 |
import org.gvsig.fmap.geom.primitive.Point; |
18 | 18 |
import org.gvsig.fmap.mapcontext.ViewPort; |
19 | 19 |
import org.gvsig.raster.lib.buffer.api.Band; |
20 | 20 |
import org.gvsig.raster.lib.buffer.api.Buffer; |
21 | 21 |
import org.gvsig.raster.lib.buffer.api.FilterList; |
22 |
import org.gvsig.raster.lib.buffer.api.NoData; |
|
23 | 22 |
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException; |
24 | 23 |
import org.gvsig.raster.lib.legend.api.ColorInterpretation; |
25 | 24 |
import org.gvsig.raster.lib.legend.api.ColorTable; |
... | ... | |
34 | 33 |
import org.gvsig.tools.task.SimpleTaskStatus; |
35 | 34 |
import org.gvsig.tools.task.TaskStatusManager; |
36 | 35 |
|
37 |
import org.slf4j.Logger; |
|
38 |
import org.slf4j.LoggerFactory; |
|
39 |
|
|
40 | 36 |
/** |
41 | 37 |
* Default implementation of {@link RasterLegend}. This object can draw buffers |
42 | 38 |
* with a {@link ColorInterpretation}, {@link ColorTable} and {@link FilterList} |
... | ... | |
143 | 139 |
Buffer bufferToDraw = buffer; |
144 | 140 |
try { |
145 | 141 |
|
146 |
if (!viewPort.getProjection().equals(buffer.getProjection())) { |
|
142 |
if (!viewPort.getProjection().equals(bufferToDraw.getProjection())) {
|
|
147 | 143 |
|
148 | 144 |
// Convert extension to check if envelopes intersect |
149 |
ICoordTrans coordTrans = viewPort.getProjection().getCT(buffer.getProjection()); |
|
150 |
ICoordTrans invertedCoordTrans = buffer.getProjection().getCT(viewPort.getProjection()); |
|
145 |
ICoordTrans coordTrans = viewPort.getProjection().getCT(bufferToDraw.getProjection());
|
|
146 |
ICoordTrans invertedCoordTrans = bufferToDraw.getProjection().getCT(viewPort.getProjection());
|
|
151 | 147 |
Envelope convertedEnvelope = viewPort.getAdjustedEnvelope().convert(coordTrans); |
152 | 148 |
double viewPortPixelSizeX = viewPort.getAdjustedEnvelope().getLength(0) / viewPort.getImageWidth(); |
153 | 149 |
double viewPortPixelSizeY = viewPort.getAdjustedEnvelope().getLength(1) / viewPort.getImageHeight(); |
154 |
if (!convertedEnvelope.intersects(buffer.getEnvelope())) { |
|
150 |
if (!convertedEnvelope.intersects(bufferToDraw.getEnvelope())) {
|
|
155 | 151 |
return; |
156 | 152 |
} |
157 | 153 |
try { |
158 | 154 |
// Clip buffer with doubled converted envelope |
159 |
clip = buffer.clip(convertedEnvelope); |
|
155 |
clip = bufferToDraw.clip(convertedEnvelope);
|
|
160 | 156 |
Envelope bufferEnvelopeInViewPortCoords = clip.getEnvelope().convert(invertedCoordTrans); |
161 | 157 |
|
162 | 158 |
double widthPixel = bufferEnvelopeInViewPortCoords.getLength(0) / viewPortPixelSizeX; |
... | ... | |
178 | 174 |
taskStatus.abort(); |
179 | 175 |
return; |
180 | 176 |
} |
181 |
} else if (viewPort.getAdjustedEnvelope().intersects(buffer.getEnvelope())) { |
|
177 |
} else if (viewPort.getAdjustedEnvelope().intersects(bufferToDraw.getEnvelope())) {
|
|
182 | 178 |
|
183 | 179 |
double widthPixel = 0; |
184 | 180 |
double heightPixel = 0; |
185 | 181 |
try { |
186 | 182 |
// Clip and interpolate buffer with view port envelope |
187 |
if (!buffer.getEnvelope().equals(viewPort.getAdjustedEnvelope())) { |
|
188 |
clip = buffer.clip(viewPort.getAdjustedEnvelope()); |
|
183 |
if (!bufferToDraw.getEnvelope().equals(viewPort.getAdjustedEnvelope())) {
|
|
184 |
clip = bufferToDraw.clip(viewPort.getAdjustedEnvelope());
|
|
189 | 185 |
bufferToDraw = clip; |
190 | 186 |
} |
191 | 187 |
widthPixel = |
... | ... | |
253 | 249 |
taskStatus.abort(); |
254 | 250 |
return; |
255 | 251 |
} |
256 |
// if(bufferToDraw != buffer){ |
|
257 |
// DisposeUtils.dispose(bufferToDraw); |
|
258 |
bufferToDraw = null; |
|
259 |
// } |
|
260 | 252 |
} |
261 | 253 |
} finally { |
262 | 254 |
if (clip != null) { |
... | ... | |
271 | 263 |
DisposeUtils.dispose(converted); |
272 | 264 |
converted = null; |
273 | 265 |
} |
266 |
if (bufferToDraw == null && bufferToDraw != buffer) { |
|
267 |
DisposeUtils.dispose(bufferToDraw); |
|
268 |
bufferToDraw = null; |
|
269 |
} |
|
274 | 270 |
|
275 | 271 |
if (!isMyTask) { |
276 | 272 |
taskStatus.pop(); |
Also available in: Unified diff