我正在使用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
复制相似问题