如何从Oracle DB 中读取MDSYS 格式的几何数据并转换为shapely 格式或GeoJson?

How to read out geometric data from Oracle DB in MDSYS format and convert to shapely format or GeoJson?

我正在读出一个带有地理空间几何图形的 Oracle 数据库,我将其保存在 pandas 数据框中,比如说 df 在名为 <cx_Oracle.Object MDSYS.SDO_GEOMETRY at 0x7f28 的列中有一个格式为 <cx_Oracle.Object MDSYS.SDO_GEOMETRY at 0x7f28 的几何对象=52=]。让我们将其存储为:

g = df.geometry[0]

我想做的事情:

转换存储的数据 g 以将其作为 PolyLine 从 shapely 呈现在 folium 地图上。我知道它由一堆代表线对象的点组成。

我能做什么:

  1. 我可以读出SDO_GTYPE,即g.SDO_GTYPE给出2002

  2. 我可以读出SDO_ORDINATES,但是不会显示坐标,说:<cx_Oracle.Object MDSYS.SDO_ORDINATE_ARRAY at 0x7f287848e4f0>.

我不能做什么:

  1. 用 shapely 和 asShape 转换几何信息:
from shapely.geometry import asShape
shape = asShape(g)

给出错误:'Context does not provide geo interface'.

  1. 使用 Get_WKT() 或 SQL-Statements
  2. 中的任何其他函数

有同事用GIS工具读取数据,即为什么我怀疑数据已损坏。我很乐意就此问题提出任何建议。

非常感谢。

没有任何使用 Oracle DB 的经验,但是这个 SO question 似乎与您的相似。

这篇sample可能对你有帮助。