Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:如何读取oracle空间数据库?_R_Oracle_Odbc_Sf - Fatal编程技术网

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

R:如何读取oracle空间数据库?,r,oracle,odbc,sf,R,Oracle,Odbc,Sf,我想从R中读取oracle spatial数据库。 此数据库包含一个具有几何图形的列: 几何1:MDSYS.SDO坐标阵列65508161897557968616514067522,06550834441763986164974471328,0655094644962858616395520924,0655109121754127686162565537,06551159517187246162009729273,0 我可以访问数据库,但无法读取此列 library(tidyverse) lib

我想从R中读取oracle spatial数据库。 此数据库包含一个具有几何图形的列: 几何1:MDSYS.SDO坐标阵列65508161897557968616514067522,06550834441763986164974471328,0655094644962858616395520924,0655109121754127686162565537,06551159517187246162009729273,0

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

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_几何函数来提取坐标?

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

可以做的一件事是在查询中附加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
请注意,投影信息在此处丢失,以后需要添加它。希望这有帮助


编辑:这里有一个指向Oracle SDO_GEOMETRY方法的链接-

当我使用Get.WKT=>几何体WKB/WKT生成不支持3D几何体我被缩写为使用dbGetQuerycon提取坐标,选择ID、SDO_util.to_gmlgeometrygeometry1作为表1的测试,并在该字符串中进行一些提取