[R-es] north arrow help

Oscar Perpiñan oscar.perpinan en upm.es
Vie Feb 14 12:24:12 CET 2014


Hola

> Una vez mas, desearia contar con la valiosa ayuda de esta lista. He estado trabajando con el paquete sp para hacer mapas a nivel de pais, municipios, regiones, etc desde una base de datos postgis y tengo un problema que no he podido resolver: A la hora de ubicar el  (north arrow), que lo trabajo como un objeto sp , lo pongo en cualquiera de las 4 posiciones cerca de cada vertice del box del mapa de forma manual de acuerdo al espacio vacio, o sobre el mapa que no me oculte informacion relevante. Pues al cambiar el mapa cambia la apariencia y visivilidad del north arrow
>
>  Existe en R la posibilidad de hacer una consulta a la base de datos y calcular previamente el lugar mas adecuado para ubicarlo de forma automatica, de acuerdo a la topologia del mapa a mostrar?

Me falta información sobre la consulta a la base de datos. Suponiendo
que tienes un objeto "SpatialPolygonsDataFrame" o similar (lo que usa
sp para datos espaciales) puedes calcular el mejor lugar con las
condiciones que quieras (por ejemplo, ausencia de valores) con las
mismas técnicas (==, !=, etc) que usarías con un data.frame.

Por si acaso, en la página de ayuda ?layout.north.arrow tienes
ejemplos de cómo posicionar la flecha (y otras cosas), aunque ahí no
se dedican a buscar un sitio bueno de forma sistemática.

> Es posible en vez de un objeto sp superponer un simbolo de north arrow que sea una imagen ?.

Sí. Se trata de usar el argumento sp.layout (igual que en los ejemplos
anteriores) pero usando la función grid.raster. Supongamos que tu
objeto espacial es "myData" (con clase SpatialPolygonsDataFrame o
parecido) del que te interesa la variable "var", y quieres superponer
el logo de R:

library('png')
library('grid')
library('spplot')

img <- readPNG(system.file("img", "Rlogo.png", package="png"))

spplot(myData["var"], sp.layout=list('grid.raster', img, x=.1, y=.1, width=.1))

Tendrás que echar una lectura a la ayuda de grid.raster para usar bien
x, y (posición) y width, height (tamaño), prestando atención al uso de
las unidades.

Como alternativa, te puede interesar también el uso de capas que
permite el paquete latticeExtra con su función layer y +.trellis:

library(latticeExtra)

spplot(myData["var"]) + layer(grid.raster(img, x=.1, y=.1, width=.1))


> Existe alguna url o paquete en que pueda encontrar algunos disennos de north arrow diferente a los tradicionales en el paquete sp?

Aquí no puedo aportar nada, lo siento.

Saludos.

Oscar.



Más información sobre la lista de distribución R-help-es