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

Oracle中基于SRID的地理或投影数据

郎玮
2023-03-14

背景:我的应用程序需要显示存储在Oracle中的空间数据(几何图形)的MBR。为此,我目前正在使用Oracle的SDO_AGGR_MBR()函数,但速度非常慢。稍加研究,我发现了一个函数SDO_TUNE。EXTENT_OF(),它也计算MBR,比SDO_AGGR_MBR快得多。但它有两个问题。它仅适用于投影坐标中的二维数据。为了充分利用EXTENT_ of的性能优势,我决定将其用于预测数据,并回退到SDO_AGGR_MBR用于地理数据。

问题:我一开始假设SRID在4000到5000之间的所有数据都是地理的,但这并不完全正确。我找到了一个名为MDSYS.CS的表/视图_SRS它存储坐标系信息。

我计划使用查询找到SRID:

select a.COLUMN_NAME.SDO_SRID from TABLE_NAME a where rownum = 1;

然后使用此 SRID 查询 MDSYS.CS_SRS,以确定数据是地理数据还是投影数据。它具有名为 WKTEXT 的列,其行以 PROJCS 或 GEOGCS 开头。

我可以对此进行原型设计,它似乎有效,但完全相信这是正确的方法。上面的查询提取数据第一行的 SRID。我不知道SRID是否可以在单个列中有所不同。我所做的另一个假设是WKTEXT列中的文本。如果它不是在所有情况下都是PROJCS / GEOGCS,并且如果Oracle的不同版本之间的值发生变化,我将遇到很多麻烦。事实上,现在,我只是假设PROJCS意味着投影CS,GEOGCS意味着地理CS,我不确定它是否正确。

我想知道是否有更简单的方法来确定Oracle数据库中的空间数据是投影数据还是地理数据。

共有1个答案

米修平
2023-03-14

您没有说明正在查看的数据库版本。我假设是10gR2或更高版本。

最简单的方法是检查表SDO_COORD_REF_SYS:

SQL> select srid, coord_ref_sys_kind from sdo_coord_ref_sys where srid in (4326, 4327, 27700, 7405);

      SRID COORD_REF_SYS_KIND
---------- --------------------
      4326 GEOGRAPHIC2D
      4327 GEOGRAPHIC3D
      7405 COMPOUND
     27700 PROJECTED

4 rows selected.
 类似资料:
  • D3默认包括了一些常见投影,如下所示。众多的(不太常用的)投影在扩展地理投影插件和多面体投影插件中是可用的。 由D3提供的大多数投影都是通过d3.geo.projection来创建并配置的,你可以旋转这个地球,缩放或转换画布等。除非你正在执行一个新的原始投影,否则你可能不会用D3.geo.projection来构造,但是你有可能使用这个配置方法。 d3.geo.projection(raw) 从指

  • 如果数据源包含许多数据或字段,你可能会发现将数据或字段限制为仅所需的内容会更为容易,从而可以简化数据选择。 筛选数据 筛选窗格让你可以方便地创建和应用为数据指定的筛选条件。在工具栏点击 “筛选”来启用筛选窗格。 若要添加一个新的条件到准则,只需简单地点击 。如果你需要在括号内添加条件,点击 。 【提示】若要在现有的条件添加括号,只需简单地右击已选择的条件并选择“使用括号分组”。若要移除括号,请右击

  • 如果数据源包含许多数据或字段,你可能会发现将数据或字段限制为仅所需的内容会更为容易,从而可以简化数据选择。 筛选数据 若要添加一个新的条件到准则,只需简单地点击 来启用筛选窗格。 若要添加一个新的条件到准则,只需简单地点击 。如果你需要在括号内添加条件,点击 。 【提示】若要在现有的条件添加括号,只需简单地按住 Control 键并点按已选择的条件,然后选择“使用括号分组”。若要移除括号,请按住

  • 如果数据源包含许多数据或字段,你可能会发现将数据或字段限制为仅所需的内容会更为容易,从而可以简化数据选择。 筛选数据 筛选窗格让你可以方便地创建和应用为数据指定的筛选条件。在工具栏点击 “筛选”来启用筛选窗格。 若要添加一个新的条件到准则,只需简单地点击 。如果你需要在括号内添加条件,点击 。 【提示】若要在现有的条件添加括号,只需简单地右击已选择的条件并选择“使用括号分组”。若要移除括号,请右击

  • 我需要有一个自定义查询的spring数据仓库方法,并希望使用基于类的投影。 看这个https://docs . spring . io/spring-data/JPA/docs/current/reference/html/# projections findDistinct运行良好。 findDistinctQuery和FindDitinctNativeQuery抛出 找不到能够从类型[org.

  • 我有Oracle分配了81989的SRID的空间数据。我想将其更改为27700——它们都是相同的坐标系,只是Oracle使用自己的SRID;所以不需要重新投影(例如不起作用,因为它实际上也改变了坐标,这是我不想要的))。 我已经很容易地更新了,但是包含数据本身的也有SRID,我不知道如何更改它。 例如,我当前的数据如下所示: 我需要把它改成: 对于表中的所有行。但是我不知道如何自动改变SDO_GE