问题标签 [sf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - ggplot and geom_sf and Error: length(rows) == 1 is not TRUE
我正在尝试使用ggplot2
新的(并且很棒的)简单功能映射包将几个地理数据集绘制在一起geom_sf
。当我试图强制线型特征的图例显示为一条线时,我对图例和错误代码Error: length(rows) == 1 is not TRUE
(似乎属于)感到困惑。ddply
这是我调用的生成下图的代码;一切都很好,除了图例,它的 Line1 显示了一个框/填充。
这是图表:
现在,如果我尝试使用show.legend
(= TRUE
或= "line"
)强制图例看起来像一条线,在下面
我得到错误Error: length(rows) == 1 is not TRUE
。如果我单独绘制任一实例,geom_sf
则不会出现错误,并且可以使用show.legend = "line"
.
注意:我没有包含一个最小的可复制示例,因为我无法通过易于共享的数据来复制它;请参阅使用 geom_sf 时向 ggplot2 添加多个图例。我已经尝试了几天来找到答案,但没有运气。
r - 在不规则网格上绘制数据的有效方法
我使用在不规则二维网格上组织的卫星数据,其尺寸是扫描线(沿轨道尺寸)和地面像素(跨轨道尺寸)。每个中心像素的经纬度信息存储在辅助坐标变量中,以及四个角坐标对(经纬度坐标在 WGS84 参考椭球上给出)。数据存储在 netCDF4 文件中。
我正在尝试做的是在投影地图上有效地绘制这些文件(可能还有文件的组合——下一步!)。
到目前为止,我的方法受到Jeremy Voisey对这个问题的回答的启发,一直是构建一个数据框,将我感兴趣的变量与像素边界联系起来,并ggplot2
用于geom_polygon
实际绘图。
让我说明一下我的工作流程,并为这种幼稚的方法提前道歉:我刚开始使用 R 编码一两周。
笔记
要完全重现问题:
1. 下载两个数据帧:so2df.Rda (22M) 和pixel_corners.Rda (26M)
2. 将它们加载到您的环境中,例如
- 跳转到“合并数据框”步骤。
最初设定
我要从我的文件中读取数据和纬度/经度边界。
因此,对于这个文件/通道,3244 条扫描线中的每一条都有 450 个地面像素。
创建数据框
在这里,我创建了两个数据框,一个用于值,进行了一些后处理,一个用于纬度/经度边界,然后合并这两个数据框。
我将此数据框保存为so2df.Rda
此处(22M)。
正如预期的那样,纬度/经度边界数据帧是值数据帧的四倍(每个像素/值四个点)。
我将此数据框保存为pixel_corners.Rda
此处(26M)。
合并数据框
然后我按 id 合并两个数据框:
如您所见,这是一个 CPU 密集型进程。我想知道如果我一次处理 15 个文件会发生什么(全球覆盖)。
绘制数据
现在我已经将像素角与像素值相关联,我可以轻松地绘制它们。通常,我对轨道的特定区域感兴趣,所以我制作了一个函数,在绘制输入数据帧之前对其进行子集化:
然后我在感兴趣的区域上调用我的函数,例如让我们看看夏威夷发生了什么:
它们在那里,我的像素,以及似乎是来自莫纳罗亚的 SO2 羽流。请暂时忽略负值。如您所见,像素的区域向着条带的边缘变化(不同的分箱方案)。
我尝试使用 ggmap 在谷歌地图上显示相同的情节:
这就是我得到的:
问题
- 有没有更有效的方法来解决这个问题?我正在阅读这个
sf
包,我想知道我是否可以定义一个点数据框(值 + 中心像素坐标),并sf
自动推断像素边界。这将使我不必依赖原始数据集中定义的纬度/经度边界,也不必将它们与我的值合并。我可以接受在朝向条带边缘的过渡区域的精度损失,否则网格非常规则,每个像素为 3.5x7 km^2 大。 - 将我的数据重新网格化到常规网格(如何?),可能通过聚合相邻像素来提高性能?我正在考虑使用该
raster
包,据我所知,它需要常规网格上的数据。这在全球范围内应该很有用(例如欧洲的地块),我不需要绘制单个像素——事实上,我什至看不到它们。 - 在谷歌地图上绘图时是否需要重新投影我的数据?
[奖金美容问题]
- 有没有更优雅的方法在由四个角点标识的区域上对我的数据框进行子集化?
- 如何更改色阶以使较高的值相对于较低的值突出?我经历过结果不佳的对数刻度。
r - 通过非 sf 列内连接两个 sf 对象
我正在尝试使用内连接或左连接来连接两个 sf 数据帧。这些数据框内部都有几何列。我不断收到错误:
check_join(x, y) 中的错误:y 应该是 data.frame;对于空间连接,使用 st_joinFALSE
下面的可重现示例:
我不想放弃几何,因为我认为这会在之后弄乱我的结果,但欢迎任何解决方案
r - 在不规则网格上绘制气候数据的正确方法
我已经将这个问题作为在不规则网格问题上绘制数据的有效方法的一部分,但一般反馈是将原始问题拆分为更易于管理的块。因此,这个新问题。
我使用在不规则二维网格上组织的卫星数据,其维度是扫描线(沿轨道维度,即 Y 轴)和地面像素(跨轨道维度,即 X 轴)。每个中心像素的经纬度信息存储在辅助坐标变量中,以及四个角坐标对(经纬度坐标在 WGS84 参考椭球上给出)。
让我们构建一个玩具数据集,包含一个 12x10 的潜在不规则网格和相关的表面温度测量值。
lon
和数据包含我正在使用的原始产品中提供的lat
中心像素坐标,存储为二维矩阵,其轴是 ground_pixel(X 轴)和扫描线(Y 轴)。data
相同尺寸的矩阵包含我的测量值。然后我将这三个矩阵展平并将它们存储在数据框中。
我想在地图上绘制地面像素(作为四边形),并相应地填充温度测量值。
使用瓷砖我得到:
但这不是我所追求的。我可以玩width
并height
让瓷砖相互“接触”,但当然这甚至不会接近我想要的目标,即在地图上绘制实际投影的地面像素。
例如,Python 的 xarray 可以根据像素中心坐标自动推断像素边界:
问题
有没有办法在 R 中实现相同的结果,即:从像素中心自动推断像素边界,并将像素绘制为地图上的填充多边形?也许使用sf
包?
我可以在这个问题的答案中看到它已经完成,但我对使用的答案sf
有点不清楚,因为它处理不同的投影和潜在的规则网格,而在我的情况下,我想我不必重新 -投影我的数据,此外,我的数据不在常规网格上。
如果这是不可能的,我想我可以在我的产品中使用像素边界信息,但如果这个问题被证明不容易解决,那么这可能是另一个问题的主题。
r - 什么是 R 中的“非活动开发者路径”?
我正在尝试更新 R 中的包 sf() 。每次尝试执行此操作时都会出现以下错误,有任何关于如何解决此问题的见解吗?:
安装包(“sf”)
有可用的二进制版本,但源版本更高: binary source needs_compilation sf 0.5-5 0.6-0 TRUE
你想从源代码安装需要编译的包吗?y/n: y 安装源包'sf'</p>
尝试 URL ' https://cran.rstudio.com/src/contrib/sf_0.6-0.tar.gz '
内容类型 'application/x-gzip' 长度 7399611 字节 (7.1 MB)
已下载 7.1 MB
- 安装源无效的活动开发者路径 (/Library/Developer/CommandLineTools),缺少 xcrun:/Library/Developer/CommandLineTools/usr/bin/xcrun xcrun:错误:无效的活动开发者路径 (/Library/Developer/CommandLineTools),缺少 xcrun: /Library/Developer/CommandLineTools/usr/bin/xcrun xcrun:错误:无效的活动开发者路径(/Library/Developer/CommandLineTools),缺少 xcrun:/Library/Developer/CommandLineTools/usr/bin/xcrun 配置:CC:配置: CXX: 检查 gdal-config... no no configure: error: gdal-config not found or not executable. 错误:包“sf”的配置失败</li> /Library/Developer/CommandLineTools/usr/bin/xcrun xcrun:错误:无效的活动开发者路径(/Library/Developer/CommandLineTools),缺少 xcrun:/Library/Developer/CommandLineTools/usr/bin/xcrun 配置:CC:配置: CXX: 检查 gdal-config... no no configure: error: gdal-config not found or not executable. 错误:包“sf”的配置失败</li> /Library/Developer/CommandLineTools/usr/bin/xcrun xcrun:错误:无效的活动开发者路径(/Library/Developer/CommandLineTools),缺少 xcrun:/Library/Developer/CommandLineTools/usr/bin/xcrun 配置:CC:配置: CXX: 检查 gdal-config... no no configure: error: gdal-config not found or not executable. 错误:包“sf”的配置失败</li>
- 删除 '/Library/Frameworks/R.framework/Versions/3.3/Resources/library/sf'</li>
- 恢复以前的 '/Library/Frameworks/R.framework/Versions/3.3/Resources/library/sf' install.packages 中的警告:安装包 'sf' 的退出状态非零
下载的源码包在'/private/var/folders/t8/3gj53jlj2pn4sl9h2xrh8vmw0000gn/T/RtmpnFWJIZ/downloaded_packages'</p>