- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 R 中的多个点创建平滑 map ,但我在这里没有找到完美的解决方案。
library(mapchina)
library(sf)
library(dplyr)
library(ggplot2)
# Create some sample data
sf_beijing = china %>%
filter(Code_Province == '11') %>%
st_transform(4326)
sf_points = data.frame(
lat = c(39.523, 39.623, 40.032, 40.002, 39.933, 39.943, 40.126, 40.548),
lon = c(116.322, 116, 116.422, 116.402, 116.412, 116.408, 116.592, 116.565)
) %>%
st_as_sf(coords = c("lon", "lat"), crs = 4326)
# Plot the boundary for Beijing and the points
ggplot() +
geom_sf(data = sf_beijing, fill = NA) +
geom_sf(data = sf_points, color = 'red') +
theme_test()
另外,我发现this solution为 sf
点创建平滑 map 。该方案的问题是平滑后的 map 没有完全填满北京边界,并且有些平滑部分超出了边界。
ggplot() +
stat_density_2d(data = sf_points,
mapping = aes(x = purrr::map_dbl(geometry, ~.[1]),
y = purrr::map_dbl(geometry, ~.[2]),
fill = stat(density)),
geom = 'tile',
contour = FALSE,
alpha = 0.8) +
geom_sf(data = sf_beijing, fill = NA) +
geom_sf(data = sf_points, color = 'red') +
scale_fill_viridis_c(option = 'magma', direction = -1) +
theme_test()
ggsave('p1.png', width = 7, height = 8)
我的问题是:有没有办法为这些点创建平滑 map ,并且平滑 map 完美填充外部边界(没有空白,也没有“侵入”)?
最佳答案
我想提出以下方法。它相当复杂,可能有更有效的解决方案,但我认为它有效。
加载包
library(mapchina)
library(sf)
#> Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(spatstat)
#> Loading required package: spatstat.data
#> Loading required package: spatstat.geom
#> spatstat.geom 2.2-2
#> Loading required package: spatstat.core
#> Loading required package: nlme
#> Loading required package: rpart
#> spatstat.core 2.3-0
#> Loading required package: spatstat.linnet
#> spatstat.linnet 2.3-0
#>
#> spatstat 2.2-0 (nickname: 'That's not important right now')
#> For an introduction to spatstat, type 'beginner'
library(ggplot2)
创建一个多边形和一些示例数据。请注意,我设置了预计的 CRS,因为 spatstat
包需要它(见下文)。
sf_beijing = china %>%
dplyr::filter(Code_Province == '11') %>%
st_transform(32650)
sf_points = data.frame(
lat = c(39.523, 39.623, 40.032, 40.002, 39.933, 39.943, 40.126, 40.548),
lon = c(116.322, 116, 116.422, 116.402, 116.412, 116.408, 116.592, 116.565)
) %>%
st_as_sf(coords = c("lon", "lat"), crs = 4326) %>%
st_transform(32650)
将点转换为 ppp
对象。检查 ?ppp
和其中的引用资料以获取更多详细信息。
ppp_points <- as.ppp(sf_points)
将sf_beijing
转换为owin
+将窗口添加到ppp_points
。检查 ?Window
了解更多详细信息。
Window(ppp_points) <- as.owin(sf_beijing)
情节
par(mar = rep(0, 4))
plot(ppp_points, main = "")
平滑点
density_spatstat <- density(ppp_points, dimyx = 256)
将密度_spatstat
转换为星星对象。检查https://r-spatial.github.io/stars/index.html了解更多详情。
density_stars <- stars::st_as_stars(density_spatstat)
#> Registered S3 methods overwritten by 'stars':
#> method from
#> st_crs.SpatRaster sf
#> st_crs.SpatVector sf
将密度星
转换为sf
对象
density_sf <- st_as_sf(density_stars) %>%
st_set_crs(32650)
情节
ggplot() +
geom_sf(data = density_sf, aes(fill = v), col = NA) +
scale_fill_viridis_c() +
geom_sf(data = st_boundary(sf_beijing)) +
geom_sf(data = sf_points, size = 2, col = "black")
由 reprex package 于 2021 年 8 月 4 日创建(v2.0.0)
平滑值是使用 spatstat
包估计的,并且它们非常适合原始边界。如果您确实需要填补微小的间隙,请增加 dimyx
的值。检查?密度.ppp
和其中的引用资料以获取更多详细信息。
关于r - 在 R 中给定边界内使用 sf 的点的平滑密度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68643517/
我是 C++ 的新手,所以请放轻松。 我正在尝试使用 sfml 创建 RenderWindow。然后,在创建播放器时,该播放器关联的“窗口”对象被设置为先前创建的 RenderWindow。我的目的是
我有一个 sf 的列表我想行绑定(bind)以创建单个 sf 的对象目的。我正在寻找类似于 data.table::rbindlist 的函数,这将以有效的方式堆叠各个对象。 可重现示例的数据: my
我正在尝试在 R 中使用 sf 创建一个 95% 的最小凸多边形。只要我只将数据分组到 1 个变量上,我的代码就可以正常工作,但是当我分组到两个变量上时,输出将失去其 sf 类并且改为 grouped
我试图使用内连接或左连接连接两个 sf 数据帧。这些数据框内部都有几何列。我不断收到错误: check_join(x, y) 中的错误: y 应该是一个 data.frame;对于空间连接,使用 st
我对使用 SFML 图形库中的 sf::Shape 有疑问。在我的游戏中,我使用 sf::RectangleShapes。例如用户界面或播放器。这是一个和平的代码: std::unique_ptr r
我正在学习 C++ 中的 SFML 库。我一直在尝试通过制作一个包含两个独立的 std::map 的音乐类 (sf::Music) 和声音 (sf::Sound) 来实现一种在我的游戏中组织音频的有效
有没有一种简单的方法可以使 sf::Text 对象在 sf::RectangleShape 对象中居中? 文本具有可变长度,但在创建后不会改变。 我正在使用 SFML 2.4。 最佳答案 将一个对象置
在我的 SwiftUI 应用程序中,我的字符串名称是 SF 符号图像的名称,或存储在 Assets 目录中的图像。 我想创建一个 View ,首先尝试将图像显示为 SF 符号图像,如果不存在具有该名称
我一直在使用EhCache在我的项目中实现一些缓存。我已经将以下依赖项添加到我的pom.xml中 org.springframework spring-context 4.
我想创建一个数组,其中包含将绘制到窗口上的所有 Sprite 、文本和形状,我的问题是如何使这个数组同时具有 sf::Drawable 和 sf::Transformable? 最佳答案 您需要创建一
我得到了一个派生自 sf::Packet 的类,它在其构造函数中传递了一个引用 iots 类型的 Integer。现在在构造函数中,我尝试将 Integer 添加到 sf::Packet 的数据中,如
当我尝试编译以下代码时: SFMLSet.cpp: #include "SFMLSet.h" SFMLSet::SFMLSet(string texturePath) { if(!textur
我正在使用 sf::Clock 来控制循环。 我想知道是否允许我使用超过 1 个 sf::Clock,如果允许,是否所有“时钟”都将正常运行并按预期工作在所有操作系统上。 例如: sf::Clock
我将C++图形中的SFML libraby用于我的国际象棋游戏。 当您在游戏中移动棋子时,会发生鼠标左键事件。所以这是我最初的跟踪方式。 sf::Event e; if (e.type == sf::
我正在尝试使用 SFML 库制作简单的按钮。当我将鼠标放在按钮上时,该按钮应该会更改其文本颜色。 void Button::updateColor(sf::Vector2i MousePos) {
void update(bool moright, bool moleft) { Clock Clock(); if (moright == true){
我的 JSON 有问题。我的代码中的这一行抛出异常 String jsontxt = IOUtils.toString(new FileInputStream(Filename), "UTF-8");
代码如下: 引擎.h #include #include #include #include #include #include #include class Engine { publ
我意识到这可能是重复的,但我搜索了许多论坛和问题,知道是什么原因导致了问题,但无法在此处找到它。我正在使用 SFML 2.0,我已将错误追踪到: void GameObjectManager::Dra
我在 sf 类型的简单特征( POINT )中保存了多个轨迹.我想计算后续位置(即行)之间的欧几里得距离。到目前为止,我已经使用 Pythagorean formula for calculating
我是一名优秀的程序员,十分优秀!