- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个世界国家数据集,想在本初子午线上拆分它,并将数据重新集中在太平洋上。
我正在尝试使用简单功能 (sf) 来执行此操作,但遇到了一个我无法解决的对象类型问题。
为了拆分数据,我尝试了以下操作:
st_wg84 <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
# world country layer
sfpolys <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
%>% st_sfc(crs = st_wg84 )
# shift central/prime meridian towards west
shift <- 152
# create "split line" to split worldmap (split at Prime Meridian)
split.line <- st_linestring(
x = cbind(matrix(shift-180, 181, 1), matrix(-90:90,181,1))
) %>%
st_sfc(crs=st_wg84)
# split country polygons along prime meridian
sfpolys.split <- lwgeom::st_split(sfpolys, split.line)
哪个有效,导致
GEOMETRYCOLLECTION
对象,沿所需的线分割,包含与传入
MULTIPOLYGON
相同数量的特征.
countries <- data.table(map_data(as(sfpolys.split, "Spatial")))
# Shift coordinates to fall correctly on shifted map
countries$long.shift <- countries$long + shift
countries$long.shift <- ifelse(countries$long.shift > 180,
countries$long.shift - 360, countries$long.shift)
# plot shifted map
ggplot() +
geom_polygon(data=countries,
aes(x=long.shift, y=lat, group=group),
colour="black", fill="gray80", size = 0.25) +
coord_equal()
但是,此转换不适用于
GEOMETRYCOLLECTION
,但它确实与
MULTIPOLYGON
.
MULTIPOLYGON
我首先尝试了以下方法:
sfpolys.split <- sfpolys.split %>% st_cast("MULTIPOLYGON")
但这会导致以下错误:“m[1, ] 中的错误:维数不正确”
sfpolys.split <- sfpolys.split %>% st_collection_extract(type="POLYGON")
但这给出了
POLYGON
对象,我不知道如何正确分组到
MULTIPOLYGON
.
GEOMETRYCOLLECTION
获得的简单方法吗?到
MULTIPOLYGON
?
最佳答案
GEOMETRYCOLLECTION 是一个几何体列表,因此我们可以提取单个几何体。
幸运的是,您的每个 GEOMETRYCOLLECTION 几何图形都是 POLYGONS,因此我们可以很好地将它们包装成 MULTIPOLYGONS
geoms <- lapply( sfpolys.split$geometry, `[` )
mp <- lapply( geoms, function(x) sf::st_multipolygon( x = x ) )
sfc_mp <- sf::st_sfc( mp )
sfpolys.split$mp <- sfc_mp
sfpolys.split <- sf::st_set_geometry( sfpolys.split, sfc_mp )
library(mapdeck)
sf_line <- sf::st_sf( geometry = split.line )
mapdeck() %>%
add_path(
data = sf_line
) %>%
add_polygon(
data = sfpolys.split
, fill_colour = "name_pl"
, stroke_colour = "#FFFFFF"
, stroke_width = 50000
)
关于r - sf:如何从 GEOMETRYCOLLECTION 回到 MULTIPOLYGON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57677412/
如何将点作为单个要素添加到多边形?根据 GeoJson 规范,这被称为“GeometryCollection”。 Example of a 'GeometryCollection': { "type"
我有一个世界国家数据集,想在本初子午线上拆分它,并将数据重新集中在太平洋上。 我正在尝试使用简单功能 (sf) 来执行此操作,但遇到了一个我无法解决的对象类型问题。 为了拆分数据,我尝试了以下操作:
我正在从不同来源收集位置信息并将所有内容存储在 MongoDb 集合中。除了具有单一纬度/经度坐标的点位置外,我还存储区域。 现在,一个数据给我的位置信息为 GeometryCollection,但所
我正在尝试使用 JTS 库,但在序列化具有 Point 属性的类时遇到了一个奇怪的问题。 import java.io.IOException; import java.io.Serializable
我正在使用 Leaflet 和一些 GeoJSON 数据制作交互式 map ,显示城市的铁路运输历史。我的 GeoJSON 数据如下所示: var lines = [ { "t
MYSQL 版本 5.7 要求: 我在 MYSQL 表中有一堆 POINT 几何图形,我必须找到 GEOMETRYCOLLECTION 对象 5 公里距离/半径内的所有 POINT 几何图形。 GEO
我有很多多边形需要手动绘制然后获取地理坐标。我需要以 GeoJSON 格式获取绘制的多边形的坐标。 采用这种格式: "{"type":"MultiPolygon","coordinates":[[[[
我是 boost::geometry 的新手,在文档或此处找不到任何示例。我有一个文本文件,每行都有 wkt GEOMETRYCOLLECTION。每个集合都包含一个或多个 MULTIPOINTS。解
我想计算几何图形的面积,其中一些几何图形可以是几何图形集合。但我不能这样做,因为 shapely 不会从 geojson 创建几何集合。 示例代码如下: import sys import shape
我在 BigQuery 函数 ST_SIMPLIFY 中发现一个问题。 我正在查询大几何图形和它们的一些统计数据。如果我需要可视化它们,例如在 Kepler 中这是不可能的,因为 Kepler 不消耗
我在 BigQuery 函数 ST_SIMPLIFY 中发现一个问题。 我正在查询大几何图形和它们的一些统计数据。如果我需要可视化它们,例如在 Kepler 中这是不可能的,因为 Kepler 不消耗
我的要求是存储从 java 服务器 上的移动网络服务获取的纬度和经度坐标(Double 数据类型值),并将其存储在 mySQL 数据库中作为 Geometry 或几何集合数据类型。我使用以下查询之一创
我是一名优秀的程序员,十分优秀!