zoukankan      html  css  js  c++  java
  • sdo_geometry 转 st_geometry

    CREATE OR REPLACE FUNCTION sdo2sde(geo SDO_GEOMETRY)
    RETURN st_geometry
    IS
      lx number;   --类型 (点、线、面)
      coord varchar2(1000);   --坐标序列
      num number; 
      i number; 
      st st_geometry;   
     
    BEGIN   
      lx := geo.SDO_GTYPE;
      coord := '';
      i := 1;
      if lx = 2001 then   --点
        coord := geo.SDO_POINT.X || ' ' || geo.SDO_POINT.Y;
        st := sde.ST_PointFromText('point( '|| coord ||' )',0);
        
      elsif lx = 2002 then   --线
        num := geo.SDO_ORDINATES.COUNT();
        while i<= num loop
          if mod(i, 2)=1 then     --奇数
            coord := coord || geo.SDO_ORDINATES(i) || ' '; 
          elsif mod(i, 2)=0 then   --偶数
            coord := coord || geo.SDO_ORDINATES(i) || ','; 
          end if;
          i := i+1;
        end loop;
        coord := substr(coord, 1, length(coord)-1);    --去除最后一个逗号
        st := sde.ST_LineFromText('linestring( '|| coord ||' )', 0);
    
           
      elsif lx = 2003 then    --面
        num := geo.SDO_ORDINATES.COUNT();
        while i<= num loop
          if mod(i, 2)=1 then     --奇数
            coord := coord || geo.SDO_ORDINATES(i) || ' '; 
          elsif mod(i, 2)=0 then   --偶数
            coord := coord || geo.SDO_ORDINATES(i) || ','; 
          end if;
          i := i+1;
        end loop; 
        coord := substr(coord, 1, length(coord)-1);    --去除最后一个逗号
        st := sde.ST_PolyFromText('polygon(( '|| coord ||' ))', 0);
      
      end if;
      
      RETURN st;
    END;
    
  • 相关阅读:
    求欧拉回路 UOJ117
    POJ2749 Building road
    POJ3678 Katu Puzzle
    快速修改和上传网站图片技巧
    phpstudy易犯的错误
    关于网站端口的认识
    金融互助后台验证码显示不出来。
    全局搜索数据库
    MySQL命令行导出数据库
    MySQL导入大sql 文件大小限制问题的解决
  • 原文地址:https://www.cnblogs.com/hamfy/p/3239918.html
Copyright © 2011-2022 走看看