Jak przekonwertować punkty lon-lat na proste funkcje (sfg), a następnie umieścić je w prostej kolekcji funkcji (sfc)?
Oto MWE, które nie działa, ale jest najbliższe, na jakie się natknąłem.
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)
Próbuję nauczyć się prostych funkcji (dlatego nie chcę korzystać z biblioteki sp), a później muszę uruchomić st_buffer na sfc.
Może lepiej stworzyć SFFC bezpośrednio, bez SFF za punkt?
Używam data.table ze względu na szybkość (10 000 tysięcy punktów, które są również analizowane bez aspektów geograficznych).
Myślę, że potrzebuję sfc punktów sfg, a nie MULTIPOINT-sfg.
Odpowiedzi:
Czy próbowałeś już st_as_sf (), która konwertuje obiekt (sp, dataframe, ...) na obiekt sf ?
[Aktualizacja] Jak skomentował cengel, ważne jest, aby nadążyć za szybkim rozwojem tego pakietu.
źródło
Error in st_sf(x, ..., agr = agr) : no simple features geometry column present