如何按纬度过滤 sf 对象?
How to filter a sf object by latitude?
数据
我有一个安大略省边界的 shapefile,读作如下:
library(sf)
library(here)
ontario <- sf::st_read(here::here("data", "messy_data", "Ontario.shp"), quiet = TRUE) %>%
st_transform(4326)
可以画成这样:
问题
我只想为 latitude < 51
保留 ontario
数据。但是因为它是一个 sf
对象,所以 dplyr::filter(latitude < 51)
不起作用。我知道我可以用 st_coordinates()
提取坐标,但我怎样才能将它们连接回数据以过滤掉更高的海拔高度?
或者,sf
中是否有我可以用来进行过滤的函数?我查看了帮助,但到目前为止找不到任何相关内容。
让我们从 GADM 数据中获取加拿大:
library(raster)
library(sf)
cdn = getData("GADM",country="can",level=1)
这应该是安大略省:
ont = cdn[9,]
ont$NAME_1
转换为 sf
对象:
ont = st_as_sf(ont)
开始营业 - 向北 51 度作物:
ont_south = st_crop(ont, xmin=-180, xmax=180, ymin=-90, ymax=51)
plot(ont_south$geometry)
数据
我有一个安大略省边界的 shapefile,读作如下:
library(sf)
library(here)
ontario <- sf::st_read(here::here("data", "messy_data", "Ontario.shp"), quiet = TRUE) %>%
st_transform(4326)
可以画成这样:
问题
我只想为 latitude < 51
保留 ontario
数据。但是因为它是一个 sf
对象,所以 dplyr::filter(latitude < 51)
不起作用。我知道我可以用 st_coordinates()
提取坐标,但我怎样才能将它们连接回数据以过滤掉更高的海拔高度?
或者,sf
中是否有我可以用来进行过滤的函数?我查看了帮助,但到目前为止找不到任何相关内容。
让我们从 GADM 数据中获取加拿大:
library(raster)
library(sf)
cdn = getData("GADM",country="can",level=1)
这应该是安大略省:
ont = cdn[9,]
ont$NAME_1
转换为 sf
对象:
ont = st_as_sf(ont)
开始营业 - 向北 51 度作物:
ont_south = st_crop(ont, xmin=-180, xmax=180, ymin=-90, ymax=51)
plot(ont_south$geometry)