oraclespatial数据无法在arcmap展示处理

遇到oracle spatail的面数据在 arcmap无法展示,可以通过属性定位图形看到高亮的选择集,清除高亮空白。

一般都是由于数据有错误导致的。数据库中验证下数据合法性

select sdo_geom.validate_geometry(t.geom,0.00001),t.afg_fid from AREA t;

可以看到部分数据返回错误码13356和13349.

对于13356是有重复点数据

update AREA t set t.geom = sdo_util.RECTIFY_GEOMETRY(t.geom,0.00001) where t.fid= 8348;

13349属于自相交的图形,修复后2003类型变为2007

update AREA t set t.geom = sdo_util.RECTIFY_GEOMETRY(t.geom,0.00001) where t.fid= 72946;

修复成功之后重新创建空间索引,报错其中有提示层的srid和几何形状srid不一致

select * from user_sdo_index_info t where t.table_name = 'AREA';
select * from user_sdo_geom_metadata  t where t.table_name = 'AREA';

create index sidx_area on area(geom) indextype is mdsys.spatial_index;

查看user_sdo_geom_metadata元数据srid为自定义的值比如99,但是area表中存在有srid为空的数据

先删除索引,然后更新数据的空间索引

declare 
  -- Local variables here
  geo sdo_geometry;
  cursor pointer is select t.geom,t.fid from area t; 
  p pointer%rowtype;
begin
  -- Test statements here
  for p in pointer loop
    geo:= p.geom;
    if geo.SDO_SRID is null then
      geo.SDO_SRID := 99;
      update area t set t.geom = geo where  t.fid = p.fid;
    end if;      
  end loop;  
end;

执行成功后再创建空间索引,然后在arcmap查看数据可以预览成功。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值