R sf ऑब्जेक्ट को SpatialPolygonsDataFrame में वापस रूपांतरित करें


27

मैं एक sf वस्तु को SpatialPolygonsDataFrame में वापस कैसे परिवर्तित करूं?

मैं R 3.4.0 और sf संस्करण 0.4.1 चला रहा हूं। Sf प्रलेखन एक उल्लेख as_Spatialसमारोह, लेकिन यह मेरा (किसी कारण से) स्थापित में उपलब्ध नहीं है।


जब आप फ़ंक्शन को कॉल करने का प्रयास करते हैं, तो सह-विधि विधि sf 0.4-1 पर उपलब्ध होती है, क्या हैपन होता है?
जेफरी इवांस

2
as (sf, "स्थानिक")
mdsumner

@ जेफ्रे इवांस, नीचे काज़ुहितो का जवाब समस्या की प्रतिकृति देता है (और एक आंशिक समाधान प्रदान करता है)
साइमन

जवाबों:


38

मैंनें इस्तेमाल किया

 as(nc, 'Spatial')

एडगर पेबसेमा द्वारा संकेत के भाग 2 के रूप में संकेत दिया (पृष्ठ के नीचे स्क्रॉल करें)।


मैंने देखा। हालाँकि मुझे यह हाल ही में पता चला और मुझे लगा कि इस प्रश्न को देखते समय इसे उचित उत्तर में रखने का आग्रह किया गया था;)
andschar

और यह महत्वपूर्ण है कि स्वीकृत उत्तर भविष्य के पाठकों द्वारा अनदेखा नहीं किया जाएगा।
कज़ुहिटो

1
: इस सही मायने में एक SPDF की तरह काम करने के लिए के लिए, मैं की तरह कुछ करने के लिए की जरूरत tmp <-as(nc, 'Spatial')है, तो tmpid <- sapply(slot(tmp, "polygons"), function(x) slot(x, "ID"))उसके बादrow.names(tmp) <- tmpid
साइमन

1
'वास्तव में एक SPDF की तरह काम' का क्या मतलब है? मुझे रूपांतरण से कोई नुकसान नहीं हुआ।
andchchar

8

मुझे sf:::as_Spatial()वर्कअराउंड के रूप में उपयोग करना था ।

library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))

# sf -> sp
nc_sp <- as_Spatial(nc$geom)      # Error: could not find function "as_Spatial"

nc_sp <- sf:::as_Spatial(nc$geom) # This works

library(sp)
plot(nc_sp)

क्या डेटाफ़्रेम बरकरार रखने का कोई तरीका है?
सिमोन

as(sf, "Spatial")@Mdsumner द्वारा चल रहा है, मैं पुष्टि करता हूं कि यह SpatialPolygonsDataFrame का उत्पादन करता है, जो आपकी आवश्यकता के लिए बेहतर है। लगता as_Spatial()है sfc (यानी ज्योमेट्री) ही लेता है।
कज़ुहितो

1
यह फ़ंक्शन एक विधि है और इसे () के रूप में कॉल करने के लिए मानसिक है। इसे एक फ़ंक्शन ऑब्जेक्ट के रूप में निर्यात नहीं किया जाता है, यही कारण है कि, इसे सीधे कॉल करने के लिए, आपको ":::" की आवश्यकता होती है।
जेफरी इवांस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.