首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:如何读取oracle空间数据库?

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

Stack Overflow用户
提问于 2018-07-30 20:36:47
回答 1查看 863关注 0票数 0

我想从R读取一个MDSYS.SDO_ORDINATE_ARRAY(655081,618975579,6861651,4067522,0,655083,444176393,6861649,74471328,0,655094,644962858,6861639,54520924,0,655109,121754127,6861626,36255537,0,655115,951718724,6861620,09729273,0)空间数据库。该数据库包含一个具有geometry的列: geometry1 : oracle

我有权访问数据库,但无法读取此列

代码语言:javascript
复制
library(tidyverse)
library(DBI)
library(odbc)

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

这是可行的:

代码语言:javascript
复制
data <- dbGetQuery(con, "SELECT ID
               FROM TABLE_1") %>% 
as_tibble()

但这并不意味着:

代码语言:javascript
复制
data <- dbGetQuery(con, "SELECT ID, geometry1
               FROM TABLE_1") %>% 
as_tibble()

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-09-19 04:36:18

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

您可以做的一件事是在查询中附加Get_WKT()方法,以将几何图形转换为“熟知文本”,如下所示:

代码语言:javascript
复制
data <- dbGetQuery(con, "SELECT ID, geometry1.Get_WKT() FROM TABLE1")

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

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

编辑:这是一个指向Oracle的SDO_GEOMETRY方法的链接- https://docs.oracle.com/database/121/SPATL/sdo_geometry-methods.htm#SPATL498

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51594135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档