2012-04-06 1 views
1

utilise R pour créer un plan d'étage d'une maison avec plusieurs couches comme ci-dessous, à partir de la couche inférieure:à l'aide que je suis « le annotation_raster » et a atteint « le plafond de la mémoire » de R de ggplot

  • basemap: une version numérisée de floorplan que je mets à la couche inférieure pour faciliter la lecture
  • bed: la maison ont plusieurs dizaines de lits, répartis dans différentes pièces de la maison, ils ont des couleurs différentes en fonction des caractéristiques des habitants
  • piechart : chaque lit a une pièce de haut de celui-ci, un gagner les piecharts sont créés en fonction de l'autre ensemble de caractéristiques des résidents, certains lits ont piecharts, d'autres pas.

Le bed et piechart ont été créé sur la base du fichier shp créé sur la base de la carte de base (c.-à-je utiliser MapWindow la création d'une couche vectorielle, importez la carte de base en tant que couche de trame et de le mettre au fond, puis dessinez les lits un par un. le lit fichier shp est ensuite importé dans R, les polygones de lit de centroïde sont calculées et que barycentre aide à positionner les PieCharts)

je read.jpeg pour importer le basemap pour objet imagematrix, puis utilisez la nouvelle annotation_raster fonctionner en ggplot2 0.9 pour mettre le basemap au niveau de la couche inférieure, puisque le bed couche est créé en fonction de la basemap également, la couche bed superposer sur la couche basemap parfaitement dans ggplot2.

Je peux créer la carte sans problème - si le basemap est assez petit (3000 x 3000 pixels), maintenant j'ai un basemap de 8000+ x 3000+ pixels (object.size 241823624 octets), je n'ai pas au courant de la question de la mémoire R quand je créais le fichier shp, l'objet ggplot peut être compilé si j'ai le annotation_raster désactivé, mais R n'arrête pas de dire que je peux allouer de la mémoire avec xxxMB quand j'essaie d'inclure le basemap dans l'objet ggplot.

Je pense que cela n'a rien à voir avec la compression des fichiers jpg, car la dimension n'est pas modifiée même si je compile davantage le fichier jpg. Mais je ne peux pas redimensionner le fichier jpg car mon calque bed est créé en fonction de la dimension du fichier jpg d'origine.

Quelqu'un peut-il aider à réduire la taille de la imagematrix de basemap, sans changer la dimension du jpeg ou d'autres astuces pour traiter la limitation de la mémoire de la R? Merci.

+0

Je n'ai aucune idée de comment aider, mais je veux savoir de quoi parle ce projet ... –

Répondre

0

Je l'ai corrigé.

j'ai créé un nouveau fichier d'image basemap avec largeur et hauteur réduite de moitié, puis dans le annotation_raster je l'ai fait ce qui suit:

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 

Maintenant, la carte peut être compilé au sein de la limite de mémoire de R, l'inconvénient que je peux penser de est la réduction de la qualité de l'image, mais cela est supportable, car il était 8000 x 3000 à l'origine.

Questions connexes