在 rgdal R 中使用 spTransform 重新投影空间点时出错

2023-12-26

G'day,
我在 CRS 澳大利亚大地基准 66/84(为了简洁起见,AGD66)中有大量经/纬度坐标。我想将这些坐标从 AGD66 更改为 WGS84,因为它们之间大约有 200m 的差异,而且我在 WGS84 中有其他坐标和图层。我尝试通过以下方式做到这一点:

lon        lat
147.1428   -43.49083

library(rgdal)
pts<-read.table(file.choose(),header=TRUE,sep=',')  
# I first project the pts in their original CRS
pts66<-project(cbind(pts$lon,pts$lat), "+init=epsg:4202")
# Then to transform it to WGS84
pts84 = spTransform(pts66,CRS("+init=epsg:3033"))

Error in function (classes, fdef, mtable)  : 
unable to find an inherited method for function "spTransform", for signature "matrix", "CRS"

有谁知道为什么我会收到此错误,或者对如何将这些坐标从 AGD66 更改为 WGS84 有任何建议吗?提前感谢您的帮助。

Cheers,
Adam


我删除了部分错误答案.

函数 project() 无法进行数据转换,因此您可能会遇到问题,我认为您的情况是错误的。

问题是您只能在 WGS84 上从/到 longlat 投影(),因此您对项目的第一次使用是不正确的。如果我猜对了,那么您的坐标是 AGD66 格式的,因此您必须首先分配该投影,然后才能进行变换。您不能使用project() 进行数据转换,但spTransform() 可以。

我想你需要这个:

pts = read.table(text = "lon        lat
147.1428   -43.49083", header = TRUE)

## assign original coordinate system
pts66 = SpatialPoints(cbind(pts$lon,pts$lat), CRS("+init=epsg:4202"))

## Then to transform it to WGS84
pts84 = spTransform(pts66, CRS("+init=epsg:3033"))


pts66
SpatialPoints:
     coords.x1 coords.x2
[1,]  147.1428 -43.49083
Coordinate Reference System (CRS) arguments: +init=epsg:4202 +proj=longlat +ellps=aust_SA
+no_defs 

pts84
SpatialPoints:
     coords.x1 coords.x2
[1,]  11126605   2971806
Coordinate Reference System (CRS) arguments: +init=epsg:3033 +proj=lcc +lat_1=-68.5     +lat_2=-74.5
+lat_0=-50 +lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
+towgs84=0,0,0 

这意味着 pts66 的原始值不会发生变化,但它们具有正确的元数据,可用于将它们转换为您的目标(顺便说一句,即兰伯特等角圆锥)。您可能需要进行更多调查才能弄清楚需要什么。

CRS("+init=epsg:4202")
CRS arguments:
+init=epsg:4202 +proj=longlat +ellps=aust_SA +no_defs 

CRS("+init=epsg:3033")

CRS arguments:
+init=epsg:3033 +proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50
+lon_0=70 +x_0=6000000 +y_0=6000000 +ellps=WGS84 +datum=WGS84 +units=m
+no_defs +towgs84=0,0,0 

您原来的 project() 错误地尝试从 WGS84 上的 longlat 转换为 AGD66 上的 longlat,但该函数无法做到这一点,因此它只会增加混合中的混乱。基准不是投影,它是投影定义的关键部分,从这个意义上说,“AGD66 上的 longlat”是一个投影,就像“WGS84 上的兰伯特等角圆锥曲线”一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 rgdal R 中使用 spTransform 重新投影空间点时出错 的相关文章

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

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • 如何按用户定义(例如非字母顺序)对数据框进行排序[重复]

    这个问题在这里已经有答案了 给定一个数据框dna gt dna chrom start chr2 39482 chr1 203918 chr1 198282 chrX 7839028 chr17 3874 以下代码重新排序dna by ch
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • 更新 R6 对象实例中的方法定义

    如何更新 R6 类实例的方法定义 正如我所期望的 S3 使用当前的方法定义 对于 R5 参考类 我可以使用 myInstance myInstance copy 在 R6 中 我尝试了 myInstance myInstance clone
  • sapply - 保留列名称

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

    我在编译这个简单的程序时遇到一些麻烦c 代码使用Rcpp和RcppArmadillo包裹 采用以下简单示例 将矩阵的每一列乘以数值标量 code lt arma mat out Rcpp as
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • R在Windows平台Rstudio上打印data.frames中的UTF-8代码

    当数据框中存在UTF 8字符时 将无法正常显示 例如 以下内容是正确的 gt U6731 1 朱 但是当我将其放入数据框中并打印出来时 它是 gt data frame x U6731 x 1
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • R 中 SVG 图形的最佳设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想从 R 导出 SVG 图形 似乎有两种选择 RSvgDevice 和 Cairo 有人可以对这些包发表评论吗 是默认的还是明显比另一个
  • 自定义轴缩放后 ggplot2 缺少标签

    我正在尝试使用我的 x 轴应用自定义缩放ggplot2 and scales trans new 但是 当我这样做时 一些轴标签丢失了 有人可以帮我弄清楚为什么吗 Setup library tidyverse the data ds lt
  • 获取包含矩阵行内最大值的列名称,该矩阵在数组内包含单独的最大值

    例如给出 dim1 lt c P PO C T dim2 lt c LL RR R Y dim3 lt c Jerry1 Jerry2 Jerry3 Q lt array 1 48 c 4 4 3 dimnames list dim1 di
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 使用“assign()”为列表项分配值

    首先了解一些背景 我写了一个中缀函数 本质上取代了这个习惯用法 x length x 1 lt y 或者简单地说x lt append x y 对于向量 这里是 lt function x y xcall lt substitute x x
  • 更改绘图区域背景颜色

    我想使用我们公司的颜色在 R 中制作一个图表 这意味着所有图表的背景应为浅蓝色 但绘图区域应为白色 我正在寻找答案 发现绘制一个矩形就可以完成这项工作 几乎 然而 绘图区域现在是白色的 并且图形不再可见 这可能吗 getSymbols SP
  • 更改ggplot2中的字体

    曾几何时 我改变了我的ggplot2字体使用windowsFonts Times windowsFont TT Times New Roman 现在 我无法摆脱这一切 在尝试设置family in ggplot2 theme 当我用不同的字
  • 斯皮尔曼相关性和联系

    我正在一小组配对排名上计算斯皮尔曼的 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

随机推荐

  • Smalltalk 如何操作调用堆栈帧(thisContext)?

    Smalltalk 对象thisContext看起来奇怪又奇妙 我不明白它是什么以及它是如何工作的 甚至它如何实现延续 对于 C 的调用堆栈 我可以轻松想象它是如何实现和工作的 但对于这个 我不能 请帮助我理解它 我认为这不是一个简单的问题
  • GDB 中的 x86 标签和 LEA

    我正在学习用 x86 汇编 目前为 32 位 进行编码 并且正在努力完全理解内存模型 特别令人困惑的是标签的语义 LEA 指令以及可执行文件的布局 我编写了这个示例程序 以便我可以检查它在 gdb 中的运行情况 mem s SECTION
  • c# 检查文件是否打开

    我需要验证特定文件是否打开以防止复制该文件 我尝试了很多例子 但没有一个起作用 例如 我尝试这样做 protected virtual bool IsFileLocked FileInfo file FileStream stream nu
  • 如何在 Flutter 中像 Hamilton flutter 应用程序一样制作自定义 AppBar?

    像这样 https drive google com file d 1gbs1LAmEfD5NvPlUYlGrh2j9ZLv8ZFQu view usp sharing 我的方法 没有 AppBar 和 body 的脚手架 Stack gt
  • NodeJS 获取remoteAddress 使用的IP

    我有 3 个简单的 NodeJS 服务器 使用 NET HTTP 和 UDP 每个服务器都侦听端口 X 但有多个 IP 地址 我想在客户端连接到服务器时检索服务器的实际IP地址 客户端连接的IP 客户端必须写入才能连接到服务器的IP var
  • Facebook 登录后重定向活动

    我正在使用 Android Facebook SDK 4 01 通过 Facebook 登录我的应用程序 我的 MainActivity 的 facebook 登录成功 然后我使用 Intent 继续下一个活动 那部分有效 之后 在我的新活
  • valarrays 出现奇怪的 C++ 编译错误

    我在 C 中使用 valarrays 时遇到奇怪的编译错误 这是我的代码的精简版本 include
  • Spring MVC 既不是 BindingResult 也不是普通目标

    java lang IllegalStateException BindingResult 和 bean 名称 user 的普通目标对象都不能作为请求属性 所以当我尝试运行此网页时出现此错误 但我不知道为什么 我看到并阅读了很多有关此错误的
  • 检测是否有其他应用程序正在请求麦克风

    我在 SO 上看到了多个问题 这些问题说不可能看到另一个应用程序何时想要使用麦克风 当其他应用程序在 Android 中使用麦克风时 无法访问麦克风 https stackoverflow com questions 24170124 un
  • 如何修复 Android 上 Spongy Castle 的错误:找不到类 java.awt.datatransfer.DataFlavor

    我使用 lib Spongy Castle 在 Android 上对邮件进行签名和加密这个例子 https github com rtyley spongycastle blob spongy master scmail jdk15on s
  • 当多个用户从 asp 会员身份登录时,如何将用户名放入 sql 触发器中

    我正在尝试记录对数据库的所有更改 但无法找到将当前用户名获取到触发器的方法 我有triggerData存储用户信息的表 guid userid data username logintime 这些是在用户登录时插入的 这是触发器 decla
  • Apache HttpClient 添加字节范围标头?

    有谁知道如何在 HTTP 请求中请求字节范围 我希望通过请求下载停止位置的字节范围并从 getContent 读取其 InputStream 来促进应用程序中下载的恢复 我尝试迭代标题 但它们为空 来源如下 import java io I
  • 如何引用现有GeoJSON leaflet对象的数据?

    我们有一个 Leaflet Map 我们正在尝试使用 GeoJSON 构建它 我们的数据来自实时流 因此我们首先使用空数据初始化 GeoJSON var myLayer L geoJson style function feature va
  • 在 Aurelia 中,槽可以用于重复绑定吗?

    我想创建一个循环遍历数组并将其应用于数组中的每个项目的自定义元素 例如 自定义元素的视图模板将包含类似以下内容的内容 div div div div
  • 在 SSL 证书主题字段中添加 ID

    我想知道是否有一种简单的方法可以在创建 SSL 证书时自动生成 全局 唯一 ID 并将其添加到主题字段中 查看 OpenSSL bash 命令 示例将会很有帮助 something along the lines of this 首先 主题
  • 在 Jersey 1.18.1 请求过滤器中获取资源注释

    我正在实现一个用户授权模块 该模块将使用 新 注释应用于资源方法 为此 我创建了一个 Jersey 请求 过滤器 我需要在其中获取注释以允许 禁止资源操作 我正在使用 Dropwizard 0 7 1 和 Jersey 1 18 1 资源类
  • 如何在 UNIX 中创建新的环境变量......?

    如何在unix中创建新的环境变量并在程序中使用它 你可以知道你正在运行什么 shellps o comm p 我认为这或多或少是普遍的 所以 在 bash 和某些类似的 shell 中 如果您想为一次特定运行创建变量 您可以这样做 MYVA
  • 如何构建我的 Express 应用程序,只需要打开 mongodb 连接一次?

    注意 请在回答之前阅读这篇文章的编辑部分 它可能会节省您的时间并回答我的问题之一 我遇到的问题非常简单 但我对整体来说还很陌生 并且在弄清楚如何在节点 express 应用程序中正确实现 mongodb 数据库连接时遇到问题 我正在使用 E
  • 管道缓冲区保留直到处理完成

    我正在研究使用管道处理来自网络的二进制消息的可能性 我将处理的二进制消息带有有效负载 并且希望将有效负载保持为二进制形式 这个想法是读出整个消息并创建一个消息片及其有效负载 一旦消息被完全读取 它将被传递到通道链进行处理 处理不会是即时的
  • 在 rgdal R 中使用 spTransform 重新投影空间点时出错

    G day 我在 CRS 澳大利亚大地基准 66 84 为了简洁起见 AGD66 中有大量经 纬度坐标 我想将这些坐标从 AGD66 更改为 WGS84 因为它们之间大约有 200m 的差异 而且我在 WGS84 中有其他坐标和图层 我尝试