- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取两个 shapefile(位于某些大都市区边界内的人口普查区)的交集。我能够成功获得相交特征,但是当我尝试将 sf_intersect 的输出转换为 SpatialPolygonsDataframe 时,出现错误:
"Error in as_Spatial(from) : conversion from feature type sfc_GEOMETRY to sp is not supported"
这是我的代码:
library(sf)
library(dplyr)
library(tigris)
library(sp)
#download shapefiles corresponding to metro areas
metro_shapefiles<-core_based_statistical_areas(cb = FALSE, year = 2016)
#convert to sf and filter
metro_shapefiles<-st_as_sf(metro_shapefiles)%>%filter(GEOID==31080 )
#Data for California
census_tracts_california<-tracts(state="CA",year=2016)
census_tracts_california<-st_as_sf(census_tracts_california)
#INTERSECT AND CONVERT BACK TO SP
census_tracts_intersected1<-st_intersection(census_tracts_california,
metro_shapefiles)
#back to spatial
census_tracts_intersected1<-as(census_tracts_intersected1,"Spatial")
最佳答案
错误消息告诉您不能将 sfc_GEOMETRY
转换为 Spatial
对象。没有 sp
等效对象。
在您的交集结果中,您混合了多种几何图形(因此,您将返回一个 sfc_GEOMETRY
作为您的“几何图形”)。您可以在此处查看所有几何图形:
types <- vapply(sf::st_geometry(census_tracts_intersected1), function(x) {
class(x)[2]
}, "")
unique(types)
# [1] "POLYGON" "MULTILINESTRING" "MULTIPOLYGON"
如果需要,您可以提取每种类型的几何图形,并将它们分别转换为 SP:
lines <- census_tracts_intersected1[ grepl("*LINE", types), ]
polys <- census_tracts_intersected1[ grepl("*POLYGON", types), ]
spLines <- as(lines, "Spatial")
spPolys <- as(polys, "Spatial")
我在评论中提到您可以使用 st_join
。但是,这可能不会给您想要的结果。 sf
库中有几何二元谓词,例如 ?st_intersects
,以及几何运算,例如 ?st_intersection
谓词返回一个稀疏(默认)或密集矩阵,告诉您 x 的每个几何图形与 y 的哪个几何图形相交。如果您在 st_join
中使用它,它将返回相交的(原始)几何图形,而不是稀疏矩阵。
而操作(例如 st_intersection
)将计算交点,并返回新的几何图形。
谓词 (st_intersects
) 可以在 st_join
中使用,它们将返回“相交”的原始几何图形
sf_join <- sf::st_join(census_tracts_california, metro_shapefiles, join = st_intersects)
在这种情况下,这给出了一个单一的type
对象
types <- vapply(sf::st_geometry(sf_join), function(x) {
class(x)[2]
}, "")
unique(types)
# [1] "MULTIPOLYGON"
## so you can convert to a Spatial object
spPoly <- as(sf_join, "Spatial")
但是您需要确定 st_intersect
的结果是否是您所追求的结果,或者您是否需要 st_intersection
给出的新几何图形。
感谢用户@lbussett 对 st_intersect
和 st_intersection
之间差异的描述
关于r - st_intersection 到 spatialpolygon 数据框不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48796828/
我是 postgis 的新手,所以,如果这是一个愚蠢的问题,我很抱歉。 我在表格中有一个多边形列表,我想找到所有多边形之间的交点。我可以做一个 ST_Union 而不会出现这样的问题: 从 mytab
我正在使用奇妙的新 sf 包运行两个多边形或其他 sf 对象的相交。与此类似: a pol ## POLYGON((5.5 0, 7 0, 7 -0.5, 6 -0.5, 5.5 0)) 编辑:如果
这两个查询有什么区别: select a.gid, sum(length(b.the_geom)) from polygons as a , roads as b where st_i
我遇到了一个特殊的情况,我试图找到(部分)位于多边形中的任何地理空间对象。当我申请 ST_Intersect使用 在两个几何图形上函数WGS84 SRID 多边形和多边形明显以北的点的交集返回 FAL
我尝试测试是否在距某点一定距离处遇到一条线。 St_distance 给了我我想要的东西。但是,我对 st_intersects + st_buffer 很好奇: $ mysql --version
我在 postgres 中有两个多边形表,一个是自由形式,一个是网格。我想计算所有网格多边形,它们与每个自由多边形的自由多边形相交。我可以做一个自由形式: select count (*) from
我有以下查询:- SELECT ST_Overlaps(a,b) AS a_overlap_b FROM (SELECT ST_GeomFromText ('LINESTRING(-1
我有一个 LineString 特征表,我想确定哪些线相交。ST_Intersects(geom1, geom2) 需要来自两个不同表的两个几何图形。现在我正在为同一张表创建两个不同的引用,这似乎不是
我有一张郊区表,每个郊区都有一个几何值,代表它在 map 上的多面体。还有另一个房屋表,其中每个房屋都有其在 map 上的点的几何值。 两个 geom 列都使用 gist 进行了索引,suburber
我想创建一个数据集,其中包含不相交的多边形及其属性,以及两个/所有多边形相交时的属性。 为了演示问题,我创建了一些虚构的数据 set.seed(131) library(sf) #create exa
我正在尝试获取两个 shapefile(位于某些大都市区边界内的人口普查区)的交集。我能够成功获得相交特征,但是当我尝试将 sf_intersect 的输出转换为 SpatialPolygonsDat
我正在尝试获取两个 shapefile(位于某些大都市区边界内的人口普查区)的交集。我能够成功获得相交特征,但是当我尝试将 sf_intersect 的输出转换为 SpatialPolygonsDat
我有一个名为 p_1、p_2、...、p_n 的多边形(和多边形)列表。我想获得它们相交的区域。由于 st_intersection() 不接受列表作为参数,我尝试了以下三种方法。它们都没有提供令人满
我正在尝试设置一个值 isInside ,就好像用户地理位置位于表内的任何形状之一内,我正在执行此查询 function getNearMe( $lat = 0 , $lng = 0 , $with
这是一条从“波特兰到釜山”的航运路线,我想根据 land_polygons 检查这条路线,比如一条穿过陆地的路线走了多远。问题是在检查陆地交叉点时,它认为好像这条路线正在经过北美、欧洲等,但实际上并未
我目前使用 PostGIS 作为我在 python 脚本中执行的许多空间函数的主干。特别是获取几个 shapefile 几何形状并查看它们是否相交,然后将它们分类到单独的目录中。我使用 shp2pgs
我正在尝试在两个表之间运行空间查询。表一(prism_ppt_monthly - 详情见下文)是每月降水量数据。表二(usgs_basin_boundary - 详情见下文)是水文盆地边界的多边形。
我正在使用 postgresql 版本:“x86_64-unknown-linux-gnu 上的 PostgreSQL 9.3.1,由 gcc (GCC) 4.6.3 20120306 (Red Ha
我正在尝试在两个表之间进行空间连接: 表 1:397265 个特征(在 geom 字段上有 gist 索引) 表 2:73 个特征(在 geom 字段上有 gist 索引) 表 1 和表 2 具有相同
我正在尝试在两个表之间进行空间连接: 表 1:397265 个特征(在 geom 字段上有 gist 索引) 表 2:73 个特征(在 geom 字段上有 gist 索引) 表 1 和表 2 具有相同
我是一名优秀的程序员,十分优秀!