लो-लैट टू सिंपल फीचर्स (sfg और sfc) R में


21

मैं लून-लाट पॉइंट्स को साधारण फीचर्स (sfg) में कैसे बदल सकता हूं, और फिर उन्हें सिंपल फीचर कलेक्शन (sfc) में डाल सकता हूं?

यहाँ एक MWE है जो काम नहीं करता है, लेकिन सबसे करीब है जिसे मैंने प्राप्त कर लिया है।

library(data.table)
library(sf)
# The DT data.table is the data I have (but 10,000s of rows, each row is a point)
DT <- data.table(
    place=c("Finland", "Canada", "Tanzania", "Bolivia", "France"),
    longitude=c(27.472918, -90.476303, 34.679950, -65.691146, 4.533465),
    latitude=c(63.293001, 54.239631, -2.855123, -13.795272, 48.603949),
    crs="+proj=longlat +datum=WGS84")
DT[, rowid:=1:.N]
# The following two rows do not work
DT[, place.sfg:=st_point(x=c(longitude, latitude), dim="XY"), by=rowid]
places.sfc <- st_sfc(DT[, place.sfg], crs=DT[, crs])
# This should result in five points, which it doesn't
plot(places.sfc)

मैं सिंपल फीचर्स सीखने की कोशिश कर रहा हूं (यही वजह है कि मैं लाइब्रेरी स्प का इस्तेमाल नहीं करना चाहता), और बाद में sfc पर st_buffer चलाने की जरूरत है।

शायद sfc प्रति बिंदु sfg के बिना सीधे sfc बनाने के लिए बेहतर है?

मैं स्पीड-कारणों के लिए डेटाटेबल का उपयोग करता हूं (10,000 अंकों के हजारों जो भौगोलिक पहलुओं के बिना भी विश्लेषण किए जाते हैं)।

मुझे लगता है कि मुझे sfg-sfc की आवश्यकता है, और MULTIPOINT-sfg की नहीं।


इसी तरह का सवाल SO: stackoverflow.com/questions/29736577/…
andschar

जवाबों:


32

क्या आपने st_as_sf () की कोशिश की है जो ऑब्जेक्ट (sp, dataframe, ...) को sf ऑब्जेक्ट में कनवर्ट करता है ?

library(data.table)
library(sf)
# your data (removed crs column)
DT <- data.table(
                 place=c("Finland", "Canada", "Tanzania", "Bolivia", "France"),
                 longitude=c(27.472918, -90.476303, 34.679950, -65.691146, 4.533465),
                 latitude=c(63.293001, 54.239631, -2.855123, -13.795272, 48.603949))
# st_as_sf() ######
# sf version 0.2-7
DT_sf = st_as_sf(DT, coords = c("longitude", "latitude"), 
                 crs = 4326, relation_to_geometry = "field")
# sf version 0.3-4, 0.4-0
DT_sf = st_as_sf(DT, coords = c("longitude", "latitude"), 
                 crs = 4326, agr = "constant")
plot(DT_sf)

[अपडेट] सेंगेल द्वारा टिप्पणी के रूप में, इस पैकेज के तेजी से विकास के साथ रखना महत्वपूर्ण होगा।


2
इस कोड को चलाने से मुझे एक त्रुटि Error in st_sf(x, ..., agr = agr) : no simple features geometry column present
मिलती है

2
@cengel यह इंगित करते हुए धन्यवाद। जब मैंने यह उत्तर (जनवरी 2017) पोस्ट किया था, तो sf पैकेज का संस्करण 0.2-7 था, जो relation_to_geometry तर्क का उपयोग करता था । मैं नवीनतम sf (0.3-4: Mar 2017) की पुष्टि करता हूं कि आपकी टिप्पणी में त्रुटि है। अब तर्क को सहमत होना है (जैसा कि @ jeffrey-evans द्वारा टिप्पणी की गई है)।
कज़ुहिटो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.