निर्देशांक को मैप करने के लिए जॉन स्नो डेटा सेट का अनुवाद कैसे करें


14

R के लिए HistData पैकेज में ( https://r-forge.r-project.org/R/?group_id=574 ) मेरे पास लंदन, 1854 में हैजा के प्रकोप के जॉन स्नो के नक्शे से संबंधित डेटा सेट हैं। मुझे विश्वास है कि वे आधिकारिक हैं, वाल्टर टॉबलर की देखरेख में सावधानी से डिजीटल किए गए हैं। इन डेटा सेटों पर कुछ विवरण जॉन मैकेंजी द्वारा http://www1.udel.edu/johnmack/frec480/cholera/cholera2.html पर बताए गए हैं ।

दुर्भाग्य से, मौतों, पंपों और सड़कों के निर्देशांक एक मनमाना समन्वय प्रणाली का उपयोग करते हैं, न कि अन्य जीआईएस अनुप्रयोगों या आर (स्थानिक पैकेज, ggmap, आदि) में मैपिंग सॉफ़्टवेयर के लिए उपयुक्त मैप निर्देशांक।

में http://freakonometrics.hypotheses.org/19213 आर्थर Charpentier से जॉन स्नो डेटा का एक संस्करण के साथ ggmap का उपयोग करता http://www.rtwilson.com/downloads/SnowGIS_v2.zipCholera_Deaths.shpफ़ाइल, हालांकि केवल 489 लोगों की मृत्यु, 578 मैं में दर्ज की गई है नहीं सूचीबद्ध करता है HistData::Snow.deaths

एक विचार (x, y) निर्देशांक और पुनर्विक्रय के साधनों और मानक विचलन के बीच संबंधों को रैखिक रूप से खोजना है, लेकिन शायद एक बेहतर तरीका है?

यहाँ मैंने अभी तक क्या किया है

> 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 
>

EDIT: इस समस्या में मददगार हो सकता है कि स्नो के नक्शे को नए फ़ंक्शन द्वारा खींचा जाए, SnowMap(axis.labels=TRUE)अब HistDataआर-फोर्ज पर (102) के विकास संस्करण में । अक्ष लेबल निचले बाएँ कोने में समन्वय प्रणाली की उत्पत्ति दिखाते हैं क्योंकि वे मेरे डेटा Snow.*डेटा सेट में हैं।

SnowMap


मैं सिर्फ मिलान करने के लिए सेट किए गए प्रत्येक डेटा से पंपों को स्केल करने की कोशिश कर रहा हूं। मुझे विश्वास नहीं है कि 100 मीटर होने वाले निर्देशांक (स्नो.पंप) के बारे में मदद के बारे में 54 (और एक अनुवाद) के पैमाने के बारे में रेखा स्नोफाइल के यूके ग्रिड निर्देशांक में मैपिंग का सबसे अच्छा काम करती है (जो निश्चित रूप से हैं) मीटर)। फिर भी अंक बिल्कुल ओवरलैप नहीं होते हैं, कुछ अन्य रोटेशन / तिरछा स्पष्ट रूप से मौजूद है। चूंकि प्रत्येक डेटा सेट में संबंधित पंपों की पहचान करने और उन लोगों के लिए पारी / अनुवाद की गणना करने के लिए इसके संभव पंप कम हैं।
स्पेल्डमैन

मुझे लगता है कि आपने HistData / inst / doc / Snow_deaths-duplicates.html को देखा है और इसे अप्राप्य पाया है?
बैरीकेटर

मेरे साथ यह भी हुआ कि मैं अपनी Snow.*फ़ाइलों में निर्देशांक के रैखिक परिवर्तन को जीआईएस-आधारित मानचित्र में दो पंपों के स्थानों के साथ प्राप्त कर सकता हूं , या सटीकता की जांच करने के लिए तीन। दुर्भाग्य से, SnowGISफ़ाइलों में पंपों के लिए कोई लेबल नहीं हैं , और मैंने उन्हें कैसे प्लॉट किया जाए, इसका उदाहरण नहीं देखा है ताकि मैं उनकी तुलना नेत्रहीन कर सकूं।
user101089

1
आपके शीर्षक को पढ़ने के बाद एक दूसरे के लिए, मुझे लगा कि आप वेस्टरोस में निर्देशांक को मैप करना चाहते हैं ।
user35594

जवाबों:


4

शायद http://donboyes.com/2011/10/14/john-snow-and-serendipity से आकार आकृति का मूल्यांकन करें, इसमें 578 अंक हैं।

मुझे नहीं लगता कि रॉबिन विल्सन (@robintw) संस्करण में हिस्टडाटा हिमपात से होने वाली मौतों को संबंधित करने का प्रयास किया जाएगा, क्योंकि आकृतिफाइल में एक ही पते पर एक से अधिक मौतों के लिए एक एकल बिंदु समन्वित होता है, इसके बजाय कई बिंदुओं के बजाय सड़क से पीछे की ओर खड़े होते हैं। नक्शा

रॉबिन का संस्करण निश्चित रूप से बहुत सारे अंक याद कर रहा है। एक त्वरित नज़र से, वहाँ काफी कुछ एकल मौतें याद आ रही हैं। एक अन्य समस्या मानचित्र के केंद्र के करीब है जहां इसे एक साथ रखे जाने पर इसे ठीक से किनारे नहीं किया गया था (यह विकिपीडिया मानचित्र में भी दिखाई देता है ) और यह कई बिंदुओं को अस्पष्ट करता है।

डाउनलोड में प्रदत्त मानचित्र का अर्क :

यहाँ छवि विवरण दर्ज करें

UCLA संस्करण से निकालें :

यहाँ छवि विवरण दर्ज करें


महान! सहमति के लिए, .shpफाइलों का लिंक donboyes.com/download/snow_shp.zip है
user101089

2

इस प्रश्न के उत्तर को पूरा करने के लिए, निम्न कोड मूल टॉबलर फाइलों ( HistData) में निर्देशांक के रेखीय परिवर्तन और डॉन बॉयज़ द्वारा समर्थित हैं।

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]

फिर, एक्स [, 1] और डी [, 2] पर एक्स [, 2] पर डी [, 1] को सहसंबंधित और पुन: प्राप्त करें। रेखीय परिवर्तन प्रतिगमन गुणांक द्वारा दिया जाता है।

> 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  
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.