我正在尝试使用TileCreator生成作为多边形集合的图块。我正在使用tileCreator.renderData(),tileCreator.saveAll()之类的方法。这些都工作正常。但是saveAll()方法需要花费大量时间才能将映像放入文件系统中。
TileCreator tileCreator= new TileCreator(
directory,
zoomLevel,
new TileRenderer[] { new ValueAsColoredShapeRenderer(color) {
} });
Double [][]kmllatlonbounds=new Double[][]{{1000.0,1000.0},{-1000.0,-1000.0}};
tileCreator.kmllatlon=new ArrayList<ArrayList<Double>>();
for(int i=0;i<jsArray2.length();i++){
JSONArray bound = jsArray2.getJSONArray(i);
//System.out.println("Zoom Level: "+zoomLevel+" Bound[0]: "+bound.getDouble(0)+"Bound[1]: "+bound.getDouble(1));
Double lon = bound.getDouble(0);
Double lat = bound.getDouble(1);
if(lat>kmllatlonbounds[1][0])
{
kmllatlonbounds[1][0]=lat;
}
if(lat<kmllatlonbounds[0][0])
{
kmllatlonbounds[0][0]=lat;
}
if(lon>kmllatlonbounds[1][1])
{
kmllatlonbounds[1][1]=lon;
}
if(lon<kmllatlonbounds[0][1])
{
kmllatlonbounds[0][1]=lon;
}
double[] meters = tileCreator.getMercator().LatLonToMeters(lat, lon);
int[] metersToPixels = tileCreator.getMercator().MetersToPixels(meters[0],meters[1], zoomLevel);
ArrayList<Double> tmplatlon=new ArrayList<Double>();
tmplatlon.add((double)metersToPixels[1]);
tmplatlon.add((double)metersToPixels[0]);
tileCreator.kmllatlon.add(tmplatlon);
}
tileCreator.renderData(kmllatlonbounds);
tileCreator.saveAll();
在内部,我正在使用ImageIo类进行读/写操作。我认为问题出在ImageIo,但无法解决。
谁能帮帮我吗?因为我要100%优化,因为要花费数小时才能生成图块...
最佳答案
如果您没有任何内存限制,则可以通过增加ImageCache.java中的缓存大小来降低SaveAll()的频率。