我正在尝试使用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%的优化,因为它需要花费数小时的时间来生成瓷砖......
答案 0 :(得分:1)
如果您没有任何内存限制,可以通过增加ImageCache.java中的缓存大小来降低SaveAll()的频率