วิธีการแปลชุดข้อมูล John Snow เป็นพิกัดแผนที่


14

ในแพ็คเกจ HistData สำหรับ R ( https://r-forge.r-project.org/R/?group_id=574 ) ฉันมีชุดข้อมูลที่เกี่ยวข้องกับแผนที่ของ John Snow เกี่ยวกับการระบาดของอหิวาตกโรคในลอนดอนปี 1854 ฉันเชื่อว่าพวกเขา มีอำนาจมีการแปลงเป็นดิจิทัลอย่างระมัดระวังภายใต้การดูแลของวอลเตอร์ Tobler รายละเอียดบางอย่างเกี่ยวกับชุดข้อมูลเหล่านี้จะอธิบายโดยจอห์นแม็คเคนซี่ที่http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html

น่าเสียดายที่พิกัดแห่งความตายปั๊มและถนนใช้ระบบพิกัดโดยพลการไม่ใช่พิกัดแผนที่ที่เหมาะสมสำหรับแอปพลิเคชั่น GIS อื่น ๆ หรือซอฟต์แวร์แผนที่ใน R (แพ็คเกจอวกาศ ggmap ฯลฯ )

ในhttp://freakonometrics.hypotheses.org/19213อาร์เธอร์ Charpentier ใช้ ggmap กับรุ่นของข้อมูลจอห์นหิมะจาก http://www.rtwilson.com/downloads/SnowGIS_v2.zip Cholera_Deaths.shpไฟล์ แต่แสดงรายการเพียง 489 ตายไม่ได้ 578 HistData::Snow.deathsผมได้บันทึกไว้ใน

แนวคิดหนึ่งคือการค้นหาความสัมพันธ์ระหว่างค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของพิกัด (x, y) และ rescale เป็นเส้นตรง แต่อาจจะมีวิธีที่ดีกว่านี้หรือ

นี่คือสิ่งที่ฉันได้ลองไปแล้ว

> 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

อ่านไฟล์ 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
>

ตกลงจากนั้นฉันพยายามปรับขนาดDให้มีค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานเหมือนXXเดิม แต่มีบางอย่างไม่ทำงานอย่างถูกต้องตรงนี้ - ค่าเฉลี่ยคอลัมน์Dscaledควรจะเท่ากับค่าของ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 
>

แก้ไข:มันอาจจะมีประโยชน์ในปัญหานี้เพื่อดูแผนที่ของ Snow ตามฟังก์ชั่นใหม่ซึ่งSnowMap(axis.labels=TRUE)ตอนนี้อยู่ในเวอร์ชันการพัฒนาHistData(rev 102) บน R-Forge ป้ายกำกับแกนแสดงที่มาของระบบพิกัดที่มุมซ้ายล่างเหมือนที่อยู่ในSnow.*ชุดข้อมูลของฉัน

SnowMap


ฉันเพิ่งพยายามปรับขนาดเครื่องสูบน้ำจากชุดข้อมูลแต่ละชุดให้ตรงกัน ฉันไม่เชื่อว่าเส้นช่วย (Snow.pumps) เกี่ยวกับพิกัดอยู่ที่ 100 เมตรเนื่องจากขนาดประมาณ 54 (และการแปล) ทำหน้าที่ได้ดีที่สุดในการทำแผนที่เหล่านี้กับพิกัดกริดของสหราชอาณาจักร shapefile (ซึ่งแน่นอนอยู่ใน เมตร) ถึงแม้ว่าคะแนนจะไม่ทับซ้อนกัน แต่มีการหมุน / เอียงบางอย่างชัดเจน เนื่องจากมีปั๊มน้อยกว่าจึงเป็นไปได้ที่จะระบุปั๊มที่เกี่ยวข้องในแต่ละชุดข้อมูลและคำนวณกะ / แปลสำหรับปั๊มเหล่านั้น
Spacedman

ฉันคิดว่าคุณดูที่ HistData / inst / doc / Snow_deaths-ซ้ำates.htmlและพบว่าไม่ช่วยเหลือ
barrycarter

มันก็เกิดขึ้นกับฉันด้วยที่ฉันจะได้การแปลงเชิงเส้นของพิกัดในของฉัน Snow.*ไฟล์ไปยังผู้ที่อยู่ในแผนที่ GIS กับสถานที่ตั้งของสองปั๊มหรือสามเพื่อตรวจสอบความถูกต้อง น่าเสียดายที่ไม่มีป้ายกำกับสำหรับปั๊มในSnowGISไฟล์และฉันไม่ได้เห็นตัวอย่างของวิธีการลงจุดเพื่อให้สามารถเปรียบเทียบได้
user101089

1
สักครู่ที่นั่นหลังจากอ่านชื่อของคุณฉันคิดว่าคุณต้องการแมปพิกัด รอส
user35594

คำตอบ:


4

บางทีประเมิน shapefile จากhttp://donboyes.com/2011/10/14/john-snow-and-serendipityมี 578 คะแนน

ฉันไม่คิดว่าจะพยายามเชื่อมโยง HistData Snow Deaths กับเวอร์ชันของ Robin Wilson (@robintw) จะทำงานเนื่องจาก shapefile มีจุดประสานงานเดียวสำหรับการเสียชีวิตหลายครั้งในที่อยู่เดียวแทนที่จะเป็นหลายจุดที่ซ้อนกันจากถนนในแผนที่

เวอร์ชันของ Robin นั้นหายไปอย่างแน่นอน จากการมองอย่างรวดเร็วพบว่ามีผู้เสียชีวิตเพียงรายเดียวที่อยู่ห่างไกล ปัญหาอีกประการหนึ่งก็คือใกล้กับศูนย์กลางของแผนที่ซึ่งไม่ตรงกับขอบที่เหมาะสมเมื่อรวมเข้าด้วยกัน (สามารถมองเห็นได้ในแผนที่ Wikipedia ) และสิ่งนี้บดบังจุดต่าง ๆ

แยกแผนที่ที่จัดหาให้ในการดาวน์โหลด :

ป้อนคำอธิบายรูปภาพที่นี่

แยกจากเวอร์ชั่น UCLA :

ป้อนคำอธิบายรูปภาพที่นี่


ที่ดี! สำหรับ concreteness ลิงก์ไปยัง.shpไฟล์คือdonboyes.com/download/snow_shp.zip
user101089

2

เพื่อให้คำตอบสำหรับคำถามนี้เสร็จสมบูรณ์รหัสต่อไปนี้จะค้นหาการแปลงเชิงเส้นของพิกัดในไฟล์ Tobler ดั้งเดิม (เป็น HistData ) และที่ 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]

จากนั้นเชื่อมโยงและถดถอย D [, 1] บน X [, 1] และ D [, 2] บน X [, 2] การแปลงเชิงเส้นถูกกำหนดโดยสัมประสิทธิ์การถดถอย

> 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  
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.