当前位置: 首页 > 知识库问答 >
问题:

R:如何读取oracle空间数据库?

欧阳英彦
2023-03-14

我想从r中读取一个oracle spatial数据库。该数据库包含一个geometry : geometry1 : MDSYS列。SDO _纵坐标_数组(655081,618975579,6861651,4067522,0,655083,444176393,6861649,74471328,0,655094,644962858,6861639,54520924,0,6555109,121755

我可以访问数据库,但无法读取此列

library(tidyverse)
library(DBI)
library(odbc)

con <- dbConnect(odbc::odbc(), database ="Database_oracle", UID="id", PWD="pw")

这项工作:

data <- dbGetQuery(con, "SELECT ID
               FROM TABLE_1") %>% 
as_tibble()

但事实并非如此:

data <- dbGetQuery(con, "SELECT ID, geometry1
               FROM TABLE_1") %>% 
as_tibble()

ORA-01024:OCI调用中的数据类型无效

有没有办法用sf::st_read读取坐标?我是否必须在SQL查询中使用一些“SDO_GEOMETRY()”函数来提取坐标?

共有1个答案

司马飞鸿
2023-03-14

据我所知,sf 包仅支持 Postgres 数据库直接检索几何列。

您可以在查询中附加< code>Get_WKT()方法,将几何图形转换为“已知文本”,如下所示:

data <- dbGetQuery(con, "SELECT ID, geometry1.Get_WKT() FROM TABLE1")

# Then
st_as_sf(data, wkt = 2)  # set `wkt` parameter to column index

请注意,投影信息在这里丢失了,您需要在以后添加它。希望这有所帮助!

编辑:这里是OracleSDO_GEOMETRY方法的链接-https://docs.oracle.com/database/121/SPATL/sdo_geometry-methods.htm#SPATL498

 类似资料:
  • 我需要将GPS坐标保存在一个没有安装spatial extension的Oracle数据库中。有一个软件pl/sql模拟Oracle Spatial的主要功能(显然没有使用它的数据类型),以同样的方式对Oracle 11的JSON功能进行“包装”。github:https://github.com/pljson/pljson上有这个项目

  • 问题内容: 我有一个数据库,其中列中没有值(所以是),但是我无法在vb.net中处理它。我尝试使用以下代码: 以及: 与: 但是显然这是行不通的,因为在此方法无法获取值之后,我在语句上出现了异常。我想您会通过阅读代码本身来弄清楚我对程序的要求。 问题答案: 定义了DbDataReader基础对象的IsDBNull方法来处理这种情况。 当然,如果reader.Read()返回false(意味着没有更

  • 本文向大家介绍Python如何读取MySQL数据库表数据,包括了Python如何读取MySQL数据库表数据的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 代码: 结果如图: 以上就是本文的全部内容,希望对大

  • 我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据

  • 本文向大家介绍如何从R数据框中删除空行?,包括了如何从R数据框中删除空行?的使用技巧和注意事项,需要的朋友参考一下 在调查或任何其他数据收集媒介期间,无法从所有单位获取所有信息。有时我们得到部分信息,有时什么也没有。因此,数据中的某些行可能完全为空白,而某些行可能具有部分数据。可以删除空白行,并使用有助于处理缺失信息的方法填充其他空值。 示例 考虑下面的数据框,它缺少一些行和一些值- 在这里,我们

  • 问题内容: 嗨,我习惯了SQL,但是我需要从HBase表读取数据。任何帮助都会很棒。一本书,或者只是一些示例代码,可以从表中读取。有人说使用扫描仪可以解决问题,但我不知道如何使用。 问题答案: 从网站: