0

次のコードは、座標ペアが特定のポリゴンに属しているかどうかを確認します。ループなどを使用して、より多くの座標データを確認する必要があります。

コードを呼び出すと、すべての値がチェックされますが、国外の座標が 1 つしかない場合、リストのすべてのポイントのステータスは「false」になります。

library(raster)
library(sp)
library(rgeos)

germany<- getData("GADM",country="Germany",level=0)
df1 <- data.frame(geolok)

ifgermany <-df1 %>% 
  rowwise() %>% 
  mutate(germany_area = gContains(germany,SpatialPoints(df1[,9:10],proj4string=CRS(proj4string(germany)))))
4

2 に答える 2

0

私はあなたのサンプルデータを持っていません。したがって、ここで提供する内容は、いくつかの点で役立ちます。正確な状況についてサポートが必要な場合は、次回からサンプル データを提供してください。これは、SO ユーザーが手を差し伸べるのに役立ちます。

サンプルのSFオブジェクトとしてオレゴン州を選びました。ポリゴン データは albersusa パッケージからのものです。次に、ランダムなポイントを作成しました。ggplot グラフィックを描画すると、ポイントがどこにあるかがわかります。st_intersects()各データポイントがどのポリゴンに属しているかを確認し、マトリックスを返します。この場合、各列は郡を表し、各行はデータ ポイントを表します。したがって、36 列と 20 行が表示されます。

library(sf)
library(albersusa)

mystate <- counties_sf() %>% 
            filter(state == "Oregon")

# This is a random data set
set.seed(111)
mysample <- st_sample(x = mystate, size = 20)

ggplot() +
geom_sf(data = mystate) +
geom_sf(data = mysample)

# Now I want to find data points in Washington states

check <-  st_intersects(x = mysample,
                        y = mystate,
                        sparse = FALSE)

colnames(check) <- mystate$name

マトリックスの一部をここに残しておきます。

     Deschutes Jefferson  Lake  Polk Wheeler Benton Clackamas  Coos Crook Gilliam Hood River Jackson Josephine
[1,]     FALSE     FALSE FALSE FALSE   FALSE  FALSE     FALSE FALSE FALSE   FALSE      FALSE   FALSE     FALSE
[2,]     FALSE      TRUE FALSE FALSE   FALSE  FALSE     FALSE FALSE FALSE   FALSE      FALSE   FALSE     FALSE
[3,]     FALSE     FALSE  TRUE FALSE   FALSE  FALSE     FALSE FALSE FALSE   FALSE      FALSE   FALSE     FALSE
[4,]     FALSE     FALSE FALSE FALSE   FALSE  FALSE     FALSE FALSE FALSE   FALSE       TRUE   FALSE     FALSE
[5,]     FALSE      TRUE FALSE FALSE   FALSE  FALSE     FALSE FALSE FALSE   FALSE      FALSE   FALSE     FALSE
[6,]     FALSE     FALSE FALSE FALSE   FALSE  FALSE     FALSE FALSE  TRUE   FALSE      FALSE   FALSE     FALSE
于 2020-05-12T13:50:28.430 に答える