কীভাবে আর প্যাকেজ এসএফ থেকে এসএফসি অবজেক্ট একত্রিত করবেন


12

আর প্যাকেজটি ব্যবহার করে sf, কেউ কীভাবে sfcবস্তুগুলিকে একত্রিত করে? উদাহরণস্বরূপ, প্রদত্ত নিম্নলিখিত কোড, কিভাবে এক একটি একক তৈরি করবে sfcবস্তুর sfc12উভয় থেকে জ্যামিতি অন্তর্ভুক্ত sfc1এবং sfc2? ( length(sfc12)2 হওয়া উচিত)

library(sf)
pt1 = st_point(c(0,1))
pt2 = st_point(c(1,1))
sfc1 = st_sfc(pt1) # An sfc object
sfc2 = st_sfc(pt2) # Another sfc object
# sfc12 = ?

কিছু পন্থা যা কাজ করে না:

sf_sfc(sfc1, sfc2) 
# Error in vapply(lst, class, rep("", 3)) : values must be length 3,
# but FUN(X[[1]]) result is length 2

sfc1 + sfc2 # Seems to add the points coordinate-wise.
# Geometry set for 1 feature 
# geometry type:  POINT
# dimension:      XY
# bbox:           xmin: 1 ymin: 2 xmax: 1 ymax: 2
# epsg (SRID):    NA
# proj4string:    NA
# POINT(1 2)

rbind(sfc1, sfc2)
# [,1]     
# sfc1 Numeric,2
# sfc2 Numeric,2

উত্তর:


11

কেবল cএটির মতো একটি ভেক্টর ব্যবহার করুন :

> (sfc12 = c(sfc1, sfc2))
Geometry set for 2 features 
geometry type:  POINT
dimension:      XY
bbox:           xmin: 0 ymin: 1 xmax: 1 ymax: 1
epsg (SRID):    NA
proj4string:    NA
POINT(0 1)
POINT(1 1)

এবং দৈর্ঘ্য 2:

> length(sfc12)
[1] 2

1
এবং এসএফসি অবজেক্টের একটি তালিকা থেকে আপনি কীভাবে অসংখ্য এসএফসি অবজেক্টগুলিকে একত্রিত করবেন?
বারেন্ড ভি।

আপনি কি এটি সমাধান করেছেন? এটি করার কোনও সুবিধাজনক উপায়ও আমি খুঁজে পাচ্ছি না।
মার্কো

@ মারকো যদি এটি আপনার এবং বারেন্ডের সমস্যা হয় তবে একটি পুনরায় উত্পাদনযোগ্য উদাহরণ দিয়ে একটি নতুন প্রশ্ন শুরু করুন।
স্পেসডম্যান

6
@ মার্কো do.call(c, list(sfc1, sfc2))আমার পক্ষে কাজ করেছেন।
জোহনেস

1
sfcব্যবহার করে অবজেক্টের একটি তালিকা Reduce(c, sfcs)বা একত্রিত করুনpurrr::reduce(sfcs , c)
লুক 1018

3

@ টিমসালাবিমের উত্তর থেকে অঙ্কন , যদি আপনার sfcবিষয়গুলি একই সিআরএসে থাকে তবে আপনি ব্যবহার করতে পারেন

do.call(rbind, list(sfc1, sfc2))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.