2013-12-11 8 views
6

में स्थानिक लाइन्स में निर्देशांक मुझे लगता है कि इस तरह दिखना शुरू और समाप्त निर्देशांक का एक सेट है:Convert शुरू और अंत आर

begin.coord <- data.frame(lon=c(-85.76,-85.46,-85.89), lat=c(38.34,38.76,38.31)) 
end.coord <- data.frame(lon=c(-85.72,-85.42,-85.85), lat=c(38.38,38.76,38.32)) 

मैं प्रत्येक को जोड़ने के द्वारा 3 लाइन क्षेत्रों के सेट बनाने के लिए कोशिश कर रहा हूँ शुरू बिंदु इसके इसी अंत बिंदु पर। मैं अंतिम उत्पाद ऑब्जेक्ट होना चाहता हूं ताकि मैं sp पैकेज में over फ़ंक्शन के साथ इसका उपयोग कर सकूं।

## raw list to store Lines objects 
l <- vector("list", nrow(begin.coord)) 
library(sp) 
for (i in seq_along(l)) { 
    l[[i]] <- Lines(list(Line(rbind(begin.coord[i, ], end.coord[i,]))), as.character(i)) 
} 

SpatialLines(l) 

यह एक अलग लाइन्स आपत्ति प्रत्येक जोड़ी के लिए (एक अनन्य आईडी से प्रत्येक), आप अन्यथा एक वस्तु चाहते हो सकता है बनाता है:

उत्तर

10

यहाँ एक तरीका है?

और सिर्फ मनोरंजन के लिए, पहले एक spatstat PSP वस्तु के रूप में निर्माण और उसके बाद maptools में तरीकों के साथ विवश:

library(spatstat) 
p <- psp(begin.coord[,1], begin.coord[,2], end.coord[,1], end.coord[,2],  owin(range(c(begin.coord[,1], end.coord[,1])), range(c(begin.coord[,2], end.coord[,2])))) 

library(maptools) 
as(p, "SpatialLines") 
1

एक भी sf package इस्तेमाल कर सकते हैं sfc वर्ग की सूची बनाने और फिर इसे कन्वर्ट करने के लिए वस्तु:

# the given data 
begin.coord <- data.frame(lon=c(-85.76,-85.46,-85.89), lat=c(38.34,38.76,38.31)) 
end.coord <- data.frame(lon=c(-85.72,-85.42,-85.85), lat=c(38.38,38.76,38.32)) 

library(sf) 

# Create list of simple feature geometries (linestrings) 
l_sf <- vector("list", nrow(begin.coord)) 
for (i in seq_along(l_sf)){ 
    l_sf[[i]] <- st_linestring(as.matrix(rbind(begin.coord[i, ], end.coord[i,]))) 
} 
# Create simple feature geometry list column 
l_sfc <- st_sfc(l_sf, crs = "+proj=longlat +datum=WGS84") 

# Convert to `sp` object if needed 
lines_sp <- as(l_sfc, "Spatial") 

अतिरिक्त/वैकल्पिक:

# - create a sf object from the `sfc` list of linestrings 
lines_sf = st_sf(id = 1:3, geometry = l_sfc) 
# - visualize the `sfc` list of linestrings 
plot(l_sfc) 
library(mapview) 
mapview(l_sfc, lwd = 5) 
# or mapview(lines_sp, lwd = 5) 
# or mapview(lines_sf, lwd = 5) 

enter image description here

संबंधित मुद्दे