我正在使用R创建一个房屋的平面图,其中包括以下几层,从底层开始:
basemap
:是一种建筑平面图的扫描版,我把它放在底层以帮助readingbed
:,房子有几十张床,分散在房子的不同房间里,它们根据residentspiechart
:的特点有不同的颜色,每一张床都有一段顶部,再一次,碎片是根据居民的其他特性创建的,有些床有零碎的,有些没有。bed
和piechart
是根据基于basemap创建的shp文件创建的(即我使用Mapwindow创建一个矢量层,导入basemap作为栅格层并将其放在底部,然后逐个绘制床。然后将床的shp文件导入R中,计算床多边形的质心,而质心帮助定位分段)
我使用read.jpeg
将basemap
导入到imagematrix
对象,然后在ggplot2 0.9
中使用新的annotation_raster
函数将basemap
放在底层映射层,因为bed
层也是基于basemap
创建的,bed
层完全叠加在basemap
层中ggplot2
中。
我可以毫无问题地创建映射--如果basemap
足够小(3000 x 3000
像素),现在我有了basemap
of 8000+ x 3000+
像素(object.size
241823624字节),我在创建shp文件时没有意识到R内存问题,如果禁用annotation_raster
,ggplot
对象可以编译,但是R一直说,当我试图将basemap
包括到ggplot
对象中时,我可以用xxxMB分配内存。
我认为这与jpg文件的压缩无关,因为即使我进一步压缩jpg文件,维度也不会改变。但是我不能调整jpg文件的大小,因为我的bed
层是基于原始jpg文件的维度创建的。
谁能帮助缩小basemap
的图像矩阵的大小,而不改变jpeg的尺寸,或者其他一些技巧来处理R的内存限制?谢谢。
发布于 2012-04-06 18:15:59
我修好了。
我首先创建了一个宽度和高度减半的新basemap
图像文件,然后在annotation_raster
中执行了以下操作:
chart <- chart + annotation_raster(db$temp.basemap,
xmin=0,
xmax=basemap.xlength*2, # I stretched the image in R
ymin=0,
ymax=basemap.ylength*2) # I stretched the image in R
现在地图可以在R的内存限制内编译,我能想到的缺点是图像质量的下降,但这是可以忍受的,因为它原来是8000 x 3000
。
https://stackoverflow.com/questions/10046489
复制相似问题