【问题标题】:Hibernate spatial index annotation休眠空间索引注释
【发布时间】:2015-10-25 14:34:27
【问题描述】:

我正在使用 jts geometry 对象将我的几何对象存储为 Oracle SDO_Geometry。但是,当我想使用 SDO_GEOM.RELATE 方法时它们无法正常工作,我意识到我需要创建一个 空间索引 但不知道如何处理 休眠。你知道这个问题的任何注释吗?

@Type(type="org.hibernate.spatial.GeometryType")
 private Geometry area;

【问题讨论】:

    标签: java hibernate annotations spatial-index oracle-spatial


    【解决方案1】:

    好吧,只需在存储这些几何图形的表上创建索引。为此使用 SQL。

    您还需要(在创建索引之前)添加正确的元数据,以便索引创建具有所需的正确信息(坐标系、边界、容差)。例如,假设您的几何图形位于 WGS84 坐标中:

    insert into user_sdo_geom_metadata (table_name, column_name, diminfo, srid)
    values (
      'US_CITIES', 
      'GEOMETRY',
      sdo_dim_array (
        sdo_dim_element('long', -180.0, 180.0, 0.5),
        sdo_dim_element('lat', -90.0, 90.0, 0.5)
      ),
      4326
    );
    commit;
    

    然后创建索引:

    create index us_cities_sx on us_cities (geometry)
      indextype is mdsys.spatial_index;
    

    【讨论】:

    • 好吧,当我尝试使用 SDO_GEOM.VALIDATE_GEOMETRY 验证我的几何时,我创建的索引仍然存在一些问题,我收到 13349 错误。
    • 首先使用 SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT()。然后错误 13349 表示您的形状(多边形)是“扭曲的”,即“自交叉”。您将无法用于任何实际处理(搜索、测量、缓冲、联合等)。我不知道你是如何构造你的对象的,或者你从哪里得到它们的,但那是错误的,你必须纠正它。
    猜你喜欢
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多