Lon-Lat - Basit Özellikler (sfg ve sfc) R


21

Lon-lat noktalarını basit özelliklere (sfg) dönüştürebilir ve sonra bunları basit bir özellik koleksiyonuna (sfc) nasıl koyabilirim?

İşte işe yaramayan ama en yakın aldığım bir 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)

Basit Özellikler (bu yüzden kütüphane sp kullanmak istemiyorum) öğrenmeye çalışıyorum ve daha sonra sfc üzerinde st_buffer çalıştırmak gerekir.

Nokta başına sfg olmadan doğrudan sfc oluşturmak daha iyi olabilir?

Hız nedenlerinden ötürü data.table kullanıyorum (coğrafi yönler olmadan da analiz edilen 10.000 binlerce nokta).

Sanırım bir MULTIPOINT-sfg değil, bir sfg-noktalarına ihtiyacım var.


Benzer soru SO üzerinde istendi: stackoverflow.com/questions/29736577/…
andschar

Yanıtlar:


32

Nesneyi (sp, dataframe, ...) sf nesnesine dönüştüren st_as_sf () yöntemini denediniz mi?

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)

[Güncelleme] Cengel tarafından yorumlandığı gibi, bu paketin hızlı bir şekilde gelişmesine ayak uydurmak önemlidir.


2
Bu kodu çalıştırmak bana bir hata veriyor:Error in st_sf(x, ..., agr = agr) : no simple features geometry column present
cengel

2
@cengel Bunu işaret ettiğiniz için teşekkür ederiz. Bu cevabı gönderdiğimde (Ocak 2017) sf paketinin sürümü 0.2-7 idi, hangi relation_to_geometry argümanını kullandı . En son sf'nin (0.3-4: Mar 2017) yorumunuzdaki hatayı geri gönderdiğini onaylıyorum . Şimdi argüman agr olmalıdır (@ jeffrey-evans tarafından yorumlandığı gibi).
Kazuhito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.