भौगोलिक समन्वय प्रणाली को आर में परिवर्तित करना


14

मेरे पास भौगोलिक समन्वय प्रणाली में अंक हैं और मैं उन्हें स्विस ग्रिड (CH1903 +) में बदलना चाहता था।

नमूना डेटा:

 id       lon      lat
  2 7.173500 45.86880
  3 7.172540 45.86887
  4 7.171636 45.86924
  5 7.180180 45.87158
  6 7.178070 45.87014
  7 7.177229 45.86923  
  8 7.175240 45.86808
  9 7.181409 45.87177
  10 7.179299 45.87020

सम्मानित परिणाम:

id       E              N      
2     2579408.2431  1079721.1499
3     2579333.7158  1079729.1852
4     2579263.6502  1079770.1125
5     2579928.0358  1080028.4605
6     2579763.6471  1079868.9218
7     2579698.0756  1079767.9762
8     2579543.1019  1079640.6512
9     2580023.6226  1080049.2672
10    2579859.1889  1079875.2740 

3
@ ऐरन, मैं वही आदमी हूं। मुझे वहां उचित जवाब नहीं मिला। तुम मेरी मदद कर सकते हैं? मैं वास्तव में अचंभित हूं कि आप कितने योग्य हैं।
Topdombili

1
@ यह पिकिंग नहीं है, यह StackExchange नीति है। क्रॉस-पोस्टिंग से सभी प्रकार की विसंगतियां और समस्याएं पैदा होती हैं। (आपने यह भी देखा होगा कि गलत फोरम में पोस्ट करने से उपयोगी उत्तर भी कम मिल सकते हैं।) कृपया अपने द्वारा पोस्ट किए गए SO संस्करण को हटा दें।
whuber

@ टॉडडॉम्बली, मैं केवल यह बताना चाहता था कि व्हिबर के उत्तर के अनुसार, इनपुट मान WGS84 पर हैं और एक डेटा परिवर्तन के साथ-साथ CH1903 + / LV95 ग्रिड के लिए एक प्रक्षेपण से गुजर रहे हैं।
mkennedy 21

@mkennedy उस अवलोकन के लिए धन्यवाद। मुझे यह समझाने में कोई दिक्कत नहीं थी कि मैंने मूल (लाट, लोन) निर्देशांक डब्ल्यूजीएस 84 माना है (यह धारणा कोड में एक टिप्पणी में दफन है)। यदि वे नहीं हैं, तो proj4string(d)तदनुसार मूल्य बदलें । मेरा ध्यान मुख्य रूप से झूठी ईस्टिंग और नॉर्थिंग मापदंडों पर आकर्षित किया गया था, x0और y0, क्योंकि वेब पर कुछ लोकप्रिय संदर्भ (जैसे कोड में पहली टिप्पणी) ने अपने सबसे महत्वपूर्ण अंकों को गिरा दिया है, जिससे सभी बिंदुओं को कुछ हज़ार किलोमीटर तक विस्थापित कर दिया गया है :-)।
whuber

1
@whuber, ouch re: संदर्भ! मैंने WGS 84 के इनपुट सेट के बारे में आपकी टिप्पणी देखी, लेकिन यह सुनिश्चित करना चाहता था कि टॉपडॉम्बिली ने इसे देखा।
mkennedy

जवाबों:


18

RGDAL पैकेज का उपयोग करें । सीआरएस का उपयोग करने के लिए एक मुद्दा है; RGDAL EPSG कोड को नहीं पहचानता है। आपको मापदंडों को स्पष्ट रूप से प्रदान करना होगा, जैसा कि यहां दिखाया गया है। (जाहिरा तौर पर ये अंदाजे-बयां हैं , लेकिन वे बहुत अच्छे माने जा रहे हैं। वे अभीष्ट मानों के लगभग 0.1 मीटर के भीतर हैं।)

# References:
# http://lists.maptools.org/pipermail/proj/2001-September/000248.html (has typos)
# http://www.remotesensing.org/geotiff/proj_list/swiss_oblique_cylindrical.html
#
# Input coordinates.
#
x <- c(7.173500, 7.172540, 7.171636, 7.180180, 7.178070, 7.177229, 7.175240, 7.181409, 7.179299)
y <- c(45.86880, 45.86887, 45.86924, 45.87158, 45.87014, 45.86923, 45.86808, 45.87177, 45.87020)
#
# Define the coordinate systems.
#
library(rgdal)
d <- data.frame(lon=x, lat=y)
coordinates(d) <- c("lon", "lat")
proj4string(d) <- CRS("+init=epsg:4326") # WGS 84
CRS.new <- CRS("+proj=somerc +lat_0=46.9524056 +lon_0=7.43958333 +ellps=bessel +x_0=2600000 +y_0=1200000 +towgs84=674.374,15.056,405.346 +units=m +k_0=1 +no_defs")
# (@mdsumner points out that
#    CRS.new <- CRS("+init=epsg:2056")
# will work, and indeed it does. See http://spatialreference.org/ref/epsg/2056/proj4/.)
d.ch1903 <- spTransform(d, CRS.new)
#
# Plot the results.
#
par(mfrow=c(1,3))
plot.default(x,y, main="Raw data", cex.axis=.95)
plot(d, axes=TRUE, main="Original lat-lon", cex.axis=.95)
plot(d.ch1903, axes=TRUE, main="Projected", cex.axis=.95)
unclass(d.ch1903)

भूखंड

        lon        lat  

[1] 2,579,408.24 1,079,721.15
[2,] 2,579,333.69 1,079,729.18
[3] 2,579,263.65 1,079,770.55
[4,] 2,579,928.04 1,080,028.46
[5,] 2,579,763.65 1,079,868.92
[6,] 2,579,698.00 1,079,767.97
[7,] 2,579,543.10 1,079,640.65
[8,] 2,580,023.55 1,080,049.26
[9 , 2579859.11 1079875.27


मैं पूछना चाहता था कि दशमलव सटीकता के बिना रूपांतरण सटीकता का परिणाम कम हो सकता है, जबकि सम्मानित परिणामों में उपलब्ध निर्देशांक निकटतम 10 डिग्री में हैं, मेरा मतलब 2 अंकों का दशमलव है।
21:39 पर Topdombili

1
मैं आपकी टिप्पणी नहीं समझता। क्या आप इस बारे में पूछ रहे हैं कि जब अनुमानित (सटीक, लोन) मान सीमित सटीकता के साथ निर्दिष्ट किए जाते हैं तो अनुमानित निर्देशांक कितने सटीक होते हैं? यदि हां, तो आपको यह उत्तर उपयोगी लग सकता है।
whuber

1
rgdal EPSG: 2056, FWIW
mdsumner

@md धन्यवाद! मुझे एक संदर्भ मिला था जिसमें कहा गया है कि यह EPSG: 9814 है, लेकिन RGDAL ने इसे मान्यता नहीं दी है।
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.