Dalam paket HistData untuk R ( https://r-forge.r-project.org/R/?group_id=574 ) Saya memiliki kumpulan data yang terkait dengan peta John Snow tentang wabah kolera di London, 1854. Saya percaya mereka bersifat otoritatif, telah didigitalkan dengan cermat di bawah pengawasan Walter Tobler. Beberapa detail pada set data ini dijelaskan oleh John Mackenzie, di http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html .
Sayangnya, koordinat kematian, pompa, dan jalan-jalan menggunakan sistem koordinat sewenang-wenang, bukan koordinat peta yang cocok untuk aplikasi GIS lain atau perangkat lunak pemetaan di R (paket spasial, ggmap, dll.)
Dalam http://freakonometrics.hypotheses.org/19213 Arthur Charpentier menggunakan ggmap dengan versi data John Snow dari
http://www.rtwilson.com/downloads/SnowGIS_v2.zip . Namun Cholera_Deaths.shp
file tersebut hanya mencantumkan 489 kematian, bukan 578 yang telah saya rekam HistData::Snow.deaths
.
Satu ide adalah untuk menemukan hubungan antara sarana dan standar deviasi dari koordinat (x, y) dan skala ulang secara linear, tetapi mungkin ada cara yang lebih baik?
Inilah yang saya coba sejauh ini
> 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
Baca file 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, maka saya mencoba untuk skala ulang D
untuk memiliki cara yang sama dan standar deviasi XX
, tetapi ada sesuatu yang tidak berfungsi dengan benar di sini - sarana kolom Dscaled
seharusnya ternyata sama dengan yang dari 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: Mungkin bermanfaat dalam masalah ini untuk melihat peta Snow yang digambar oleh fungsi baru, SnowMap(axis.labels=TRUE)
sekarang dalam versi pengembangan HistData
(rev 102) pada R-Forge. Label sumbu menunjukkan asal sistem koordinat di sudut kiri bawah seperti pada Snow.*
set data data saya .
sumber
Snow.*
file saya ke yang ada di peta berbasis GIS dengan lokasi dua pompa, atau tiga untuk memeriksa akurasi. Sayangnya, tidak ada label untuk pompa diSnowGIS
file, dan saya belum melihat contoh cara plot mereka sehingga saya bisa membandingkannya secara visual.Jawaban:
Mungkin mengevaluasi shapefile dari http://donboyes.com/2011/10/10/14/john-snow-and-serendipity memiliki 578 poin.
Saya tidak berpikir mencoba menghubungkan HistData Snow Deaths dengan versi Robin Wilson (@robintw) akan berfungsi karena shapefile berisi koordinat titik tunggal untuk banyak kematian di satu alamat, alih-alih beberapa titik yang ditumpuk kembali dari jalan di peta .
Versi Robin jelas kehilangan banyak poin. Dari pandangan sekilas, ada beberapa kematian tunggal yang terlewatkan. Masalah lainnya adalah lebih dekat ke pusat peta di mana tidak cocok dengan tepi ketika disatukan (ini juga terlihat di peta Wikipedia ) dan ini mengaburkan sejumlah poin.
Ekstrak peta yang disediakan dalam unduhan :
Ekstrak dari versi UCLA :
sumber
.shp
file adalah donboyes.com/download/snow_shp.zipUntuk menyelesaikan jawaban atas pertanyaan ini, kode berikut ini menemukan transformasi linear dari koordinat dalam file Tobler asli (dalam
HistData
) dan yang disediakan oleh Don Boyes.Kemudian, berkorelasi dan mundur D [, 1] pada X [, 1] dan D [, 2] pada X [, 2]. Transformasi linier diberikan oleh koefisien regresi.
sumber