R 中使用 sf 和 sp 的投影差异

2024-01-01

我有一个已从 GeoTIFF 转换为 shapefile 的网格。我想将 shapefile 转换并导出为 GeoPackage 并更改投影,以便在 GIS 中打开时使用英国国家网格作为地理坐标系。然而,这似乎只能使用sp并不是sf(似乎没有保留数据等方面)。

这是一个问题,因为我想导出包含多个图层的 GeoPackages,而您目前只能在其中执行此操作sf并不是sp。难道我做错了什么?

library(rgdal)
library(sf)

download.file("https://drive.google.com/uc?id=1URbux7Sw25KFTySqRFKXk53DV2UK4lsA&export=download" , destfile="Grid_Shapefile.zip")
unzip("Grid_Shapefile.zip")
Grid_sp <- readOGR(".", "Grid_Shapefile")
Grid_sf <- st_as_sf(Grid_sp)

BNG_Grid_sp <- spTransform(Grid_sp, CRS("+init=epsg:27700"))
BNG_Grid_sf_v1 <- st_transform(Grid_sf, crs=27700)
BNG_Grid_sf_v2 <- st_transform(Grid_sf, crs="+init=epsg:27700 +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894")

BNG_Grid_sf_v1_geom <- st_geometry(BNG_Grid_sf_v1)
BNG_Grid_sf_v2_geom <- st_geometry(BNG_Grid_sf_v2)

proj4string(BNG_Grid_sp)
attributes(BNG_Grid_sf_v1_geom)
attributes(BNG_Grid_sf_v2_geom)

writeOGR(BNG_Grid_sp, dsn = "BNG_Grid_sp.gpkg", layer = "Grid_sp", driver = "GPKG")
st_write(BNG_Grid_sf_v1, "BNG_Grid_sf_v1.gpkg", "Grid_sf_v1")
st_write(BNG_Grid_sf_v2, "BNG_Grid_sf_v2.gpkg", "Grid_sf_v2")

解决方案(感谢罗杰发布的内容)here https://github.com/r-spatial/sf/issues/810)正在使用lwgeomRoger 在 sf GitHub 上发布的帖子提供了更多详细信息。

library(rgdal)
library(sf)

download.file("https://drive.google.com/uc?id=1URbux7Sw25KFTySqRFKXk53DV2UK4lsA&export=download" , destfile="Grid_Shapefile.zip")
unzip("Grid_Shapefile.zip")
Grid_sp <- readOGR(".", "Grid_Shapefile")
Grid_sf <- st_as_sf(Grid_sp)

library(lwgeom)
BNG_Grid_sf_v4 <- st_transform_proj(Grid_sf, crs="+init=epsg:27700 +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894")
st_crs(BNG_Grid_sf_v4)
st_write(BNG_Grid_sf_v4, "BNG_Grid_sf_v4.gpkg", "Grid_sf_v4")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 中使用 sf 和 sp 的投影差异 的相关文章

  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • 如何在 R 中执行近似(模糊)名称匹配

    我有一个专门用于生物学期刊的大型数据集 该数据集是由不同的人长时间编写的 因此 数据不采用单一格式 例如 在 作者 栏中我可以找到John Smith Smith John Smith J等 但它们是同一个人 我连最简单的动作都做不了 例如
  • sapply - 保留列名称

    我试图总结数据集中许多不同列 变量 的平均值 标准差等 我已经编写了自己的汇总函数 以准确返回我需要和正在使用的内容sapply立即将此函数应用于所有变量 它工作正常 但是返回的数据帧没有列名 我似乎甚至无法使用列号引用重命名它们 也就是说
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • 当将遗传算法与 lme4 一起使用时,glmulti 无限期运行

    我在 R 中使用 glmulti 进行模型平均 我的模型中有大约 10 个变量 使得详尽的筛选不切实际 因此我需要使用遗传算法 GA 调用 method g 我需要包含随机效应 因此我使用 glmulti 作为 lme4 的包装器 此处提供
  • ggplot:如何限制条形图中的输出,以便仅显示最频繁出现的情况?

    我几个小时以来一直在寻找这个简单的东西 但没有结果 我有一个数据框 其中一列为变量 国家 地区 我想要两件事以下 绘制最常见的国家 地区 最常见的位于顶部 找到部分解决方案EDIT找到完整的解决方案 gt gt 重点问题是根据频率限制条形图
  • 如何在Rstudio中快速给几个单词加上引号?

    如何将 MI ID FL 转换为 MI ID FL 而无需键入每个双引号 Hmisc 包有一个函数 Cs 它将评估逗号分隔的文本是否带有引号 Cs MI ID FL becomes MI ID FL
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • 自定义轴缩放后 ggplot2 缺少标签

    我正在尝试使用我的 x 轴应用自定义缩放ggplot2 and scales trans new 但是 当我这样做时 一些轴标签丢失了 有人可以帮我弄清楚为什么吗 Setup library tidyverse the data ds lt
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • R 中的数据框操作 - 将单元格向左移动并删除 NA

    我有一个数据框 其列由随机分布的值和 NA 组成 如下所示 a lt c S E NA S NA b lt c A NA M G K c lt c I NA NA NA L meh lt dataframe a b c 1 2 3 4 5
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 rho 斯皮尔曼因处理领带不当而闻名 例如 取2组8个排名 即使两组中有6个是平局 相关性仍然很高 gt cor test c 1 2 3 4 5 6 7 8 c 0 0 0 0 0 0 7 8 met

随机推荐

  • 指定容器类型的迭代器类型的部分特化

    我有一个模板结构 它接受模板参数的迭代器类型 现在我需要将该类专门用于不同容器的迭代器 我尝试过 std vector template
  • 创建上下文失败 0x3005

    我有 Windows 8 适用于 Windows 32 位的 Eclipse IDE for Java Developers JUNO 以及更新和安装的适用于 Windows 的 Android SDK 4 1 2 我已经解压了适用于 Wi
  • 使用 JavaScript 的 AJAX 和客户端-服务器架构

    我必须对网站进行编程 但我不喜欢静态 HTML 性质 我更喜欢客户端 服务器架构 现在我发现 使用 XMLhttp 您基本上可以动态更新页面并向服务器发送 请求信息 操作 所以这基本上涵盖了客户区域 但为了完成客户端 服务器架构 服务器也需
  • 我在将 python .pack() 转换为 .grid() 时遇到问题

    我对下面的代码有问题 我在一位讲师完成的 udemy 课程上看到了这段代码 他使用以下命令在 tkinter 窗口中定义了小分区 pack method 问题是我需要使用 grid 后来 由于这两种方法不能在同一个程序中使用 我需要将 pa
  • 使用python的看门狗从linux监控afp共享文件夹

    我希望Linux机器 Raspberry pi 通过AFP Apple文件协议 macbook是主机 监视共享文件夹 我可以通过mount afp挂载共享文件夹 并安装看门狗python库来监视共享文件夹 问题是看门狗只能监视 Linux
  • 是否可以像读取 RFID 标签一样读取 iPhone 的 NFC 芯片?

    我知道 iPhone 6 不可能读取 RFID 标签 而且 iPhone API 只允许使用 NFC 进行 Apple Pay 但是是否可以像读取 RFID 标签一样读取 iPhone 的 NFC 芯片呢 也就是说 通过将 RFID 读取器
  • 活分支数量的最佳范围是多少? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何设置MenuItem的图标颜色?

    我定义了一个具有 ShareActionProvider 和共享白色图标的菜单项 如下所示
  • NoClassDefFoundError:org.apache.commons.lang.StringUtils

    Caused by java lang NoClassDefFoundError org apache commons lang StringUtils at org apache maven wagon providers file Fi
  • MVC 路由中控制器的类别? (不同命名空间中的重复控制器名称)

    我正在寻找以下场景的一些路由示例或示例 一般做事的例子是 controller action id 因此 在对商店进行产品搜索的情况下 您将拥有 public class ProductsController Controller publ
  • Python Selenium Chrome 禁用弹出窗口阻止程序

    由于某种原因 我无法弄清楚如何禁用弹出窗口阻止程序 以允许弹出窗口工作 这个有用 所以我猜测它与新版本的 Chrome Chromedriver 有关 下面是一些示例代码 我知道它可以工作 但是现在当弹出窗口发生时 我什至看不到右上角的图标
  • 饼图图例 - Chart.js

    我需要帮助将饼图的编号放入图例中 图表图像 https i stack imgur com grBpc png 如果我用鼠标悬停图表 我可以看到相对于每个项目的数字 我想将它显示在图例中 到目前为止的重要代码 var tempData la
  • 从 R 中的 ftable 对象创建乳胶表

    在提出问题之前 让我先创建一些数据 my data lt data frame A sample seq 1 100 by 5 10 replace TRUE W rnorm 10 X sample 1 10 Y sample c yes
  • 无法将 Jenkins 代理连接到控制器

    我在一台Windows 7 64位PC上设置了Jenkins 并在另一台Win7 64位PC上安装了Jenkins代理服务 控制器 PC 出现此错误 Connection was broken java net SocketExceptio
  • JQuery.Validate 检查 ul 是否至少有一个 li 项的干净方法

    在我的网页中 我有一个 AddProduct 表单 它具有产品属性 名称 价格等 字段 我使用 FineUploader 来添加图像 上传的图像将作为隐藏字段添加到表单列表的 li 元素中 基本上我的 html 看起来像
  • java.sql.SQLException: ORA-06550: 第 1 行,第 13 列:授予用户 EXECUTE 包权限后

    我花了几个月的时间开发一个带有 Oracle 数据库后端的 JAVA 应用程序 我使用 Netbeans 作为我的 IDE 并在笔记本电脑上使用 Oracle 12c 作为我的数据库 所有 PL SQL 均已编译 没有错误 经过广泛的测试
  • Win API:挂钩每个窗口显示或进程执行

    我们计划在我们的应用程序中构建某种单点登录功能 我很清楚 我必须使用 Windows API 来实现对遗留应用程序控件的读写 但据我搜索和测试 这并不是这项工作中最难的部分 然而 有一点我直到现在才弄清楚如何继续 如何 挂钩 系统 以便每次
  • 如何按类别区分搜索结果? MySQL+PHP

    Hi 我没有得到任何有效的代码 当然 我可能会错误地使用 then 因为我是初学者 有人告诉我使用 MySQL 子查询 其他人告诉我使用 PHP foreach 来实现它 我想要的是显示按类别组分隔的关键字的搜索结果 如下所示 为 寻找结果
  • 使用 Java 8 Lambda 选取列表中的元素,直到满足条件

    我正在尝试转变思维方式 以函数式方式进行思考 最近遇到了一种情况 我需要从列表中选取元素 直到满足条件 但我找不到一种简单 自然的方法来实现这一目标 显然我还在学习 假设我有这个清单 List
  • R 中使用 sf 和 sp 的投影差异

    我有一个已从 GeoTIFF 转换为 shapefile 的网格 我想将 shapefile 转换并导出为 GeoPackage 并更改投影 以便在 GIS 中打开时使用英国国家网格作为地理坐标系 然而 这似乎只能使用sp并不是sf 似乎没