14 votos

Cómo traducir John Snow de los conjuntos de datos de mapa de coordenadas

En el HistData paquete de R (https://r-forge.r-project.org/R/?group_id=574) tengo los conjuntos de datos relacionados con Juan de la Nieve mapa de la epidemia de cólera en Londres, 1854. Creo que son autorizada, habiendo sido cuidadosamente digitalizado bajo la supervisión de Walter Tobler. Algunos detalles sobre estos conjuntos de datos son descritos por John Mackenzie, en http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html.

Por desgracia, las coordenadas de las muertes, de las bombas, y las calles de utilizar un sistema de coordenadas arbitrario, no de mapa de coordenadas adecuado para otras aplicaciones de GIS o de software de mapeo en R (espacial paquetes, ggmap, etc.)

En http://freakonometrics.hypotheses.org/19213 Arthur Charpentier utiliza ggmap con una versión de la Nieve de Juan de datos de http://www.rtwilson.com/downloads/SnowGIS_v2.zip. El Cholera_Deaths.shp archivo, sin embargo sólo las listas de 489 muertes, no el 578 he registrado en HistData::Snow.deaths.

Una idea es encontrar las relaciones entre los medios y desviaciones estándar de los (x,y) las coordenadas y cambiar la escala linealmente, pero tal vez hay una mejor manera?

He aquí lo que he probado hasta ahora

> data(Snow.deaths, package="HistData")
> D <- Snow.deaths[,2:3]
> colMeans(D)
       x        y 
13.03312 11.69721 
> var(D)
          x         y
x 3.8150987 0.3802654
y 0.3802654 2.7213828

Leer el archivo Cholera_deaths

> folder <- "C:/Dropbox/R/data/Snow/SnowGIS_v2/SnowGIS"
> library(maptools)
> deaths <- readShapePoints(file.path(folder, "Cholera_Deaths"))
> head(deaths@coords)
  coords.x1 coords.x2
0  529308.7  181031.4
1  529312.2  181025.2
2  529314.4  181020.3
3  529317.4  181014.3
4  529320.7  181007.9
5  529336.7  181006.0
> # deaths has only 250 observations; 489 deaths
> sum(deaths@data$Count)
[1] 489

 > # try to relate to Snow.deaths
> X <- deaths@coords
> colnames(X) <- c("x", "y")
> 
> XX <- data.frame(X, Freq=deaths@data$Count)
> XX <- vcdExtra::expand.dft(XX)
> 
> colMeans(XX)
       x        y 
529414.8 181031.9 
> var(XX)
          x        y
x 10813.816 1521.693
y  1521.693 6227.924
>

OK, entonces trato de re-escala D a tener el mismo medio y estándar desviaciones como XX, pero hay algo que no funciona correctamente, la columna de medios de Dscaled han vuelto a ser iguales a los de XX:

> # scale D to have the same means and standard deviations as XX
> Dscaled <- scale(D, center=TRUE, scale=TRUE)
> Dscaled <- scale(Dscaled, center=colMeans(XX), scale=sqrt(diag(var(XX))))
> colMeans(Dscaled)
        x         y 
-5091.040 -2293.947 
>

EDIT: puede ser de ayuda en este problema para ver la Nieve del mapa como atraídos por la nueva función, SnowMap(axis.labels=TRUE) ahora en la versión de desarrollo de la HistData (rev 102) en R-Forge. Las etiquetas de los ejes muestran el origen del sistema de coordenadas en la esquina inferior izquierda como en mis datos Snow.* conjuntos de datos.

SnowMap

5voto

Lucas Puntos 128

Tal vez evaluar el shapefile de http://donboyes.com/2011/10/14/john-snow-and-serendipity se ha 578 puntos.

No creo que tratando de relacionar la HistData Nieve Muertes de Robin Wilson (@robintw) versión funcionará como el shapefile contiene un único punto de coordenadas para varias muertes en una sola dirección, en lugar de los múltiples puntos apilados en la calle a en el mapa.

Robin versión es, sin duda faltan un montón de puntos. De un rápido vistazo, hay bastantes alejadas único muertes perdidas. Otro problema que está más cerca del centro del mapa, donde no fue debidamente borde coincidente cuando se ponen juntos (esto también es visible en la Wikipedia mapa) y de este modo se descuida una cantidad de puntos.

Extracto de mapa suministrado en la descarga:

enter image description here

Extracto de la UCLA versión:

enter image description here

2voto

danish Puntos 2664

Para completar la respuesta a esta pregunta, el siguiente código se encuentra en el lineal la transformación de las coordenadas en el original Tobler archivos (en HistData) y los proived por Don Boyes.

folder <- "C:/Dropbox/R/data/Snow/snow_shp"
library(maptools)
deaths <- readShapePoints(file.path(folder, "deaths_gcs"))
data(Snow.deaths, package="HistData")
X <- deaths@coords
D <- Snow.deaths[,2:3]

Entonces, correlación y regresión, D[,1] X[,1] y D[,2] X[,2]. La transformación lineal está dada por los coeficientes de regresión.

> cor(D[,1], X[,1])
[1] 0.9999664
> cor(D[,2], X[,2])
[1] 0.9995559
> 
> # linear transformations to GIS coords
> lm(D[,1] ~ X[,1])

Call:
lm(formula = D[, 1] ~ X[, 1])

Coefficients:
(Intercept)       X[, 1]  
      185.4       1264.7  

> 
> lm(D[,2] ~ X[,2])

Call:
lm(formula = D[, 2] ~ X[, 2])

Coefficients:
(Intercept)       X[, 2]  
    -105441         2047  

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X