2015-08-03 84 views
10

我正在使用jts幾何體對象將我的幾何對象存儲爲Oracle SDO_Geometry。但是,當我想要使用SDO_GEOM.RELATE方法他們不能正常工作,我意識到我需要創建一個空間索引但不知道如何處理休眠。你知道這個問題的任何註釋。Hibernate空間索引註釋

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

回答

3

那麼,只需在您存儲這些幾何圖形的表格上創建索引即可。爲此使用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; 
+0

嗯,我創建的索引照你說的還是有一些問題,當我嘗試驗證我的SDO_GEOM幾何.VALIDATE_GEOMETRY我得到了13349錯誤。 –

+0

首先使用SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT()。那麼錯誤13349意味着你的形狀(一個多邊形)是「扭曲的」,即「自交」。您將無法使用任何實際處理(搜索,測量,緩衝,聯合等)。我不知道你是如何構建你的對象的,或者你從哪裏得到它們的,但那個是錯誤的,你必須糾正它。 –