新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论SVG, GML, X3D, VRML, VML, XAML, AVALON, Batik等基于XML的图形技术,以及有关GIS的应用。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 SVG/GML/VRML/X3D/XAML 』 → [分享]基于SVG+XMLHTTP+ORACLE SPATIAL的WEBGIS基础平台实例 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 151596 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [分享]基于SVG+XMLHTTP+ORACLE SPATIAL的WEBGIS基础平台实例 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     bin 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:19
      积分:138
      门派:XML.ORG.CN
      注册:2005/5/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bin发送一个短消息 把bin加入好友 查看bin的个人资料 搜索bin在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bin的博客21
    发贴心情 

    给我也留一份,谢谢  ybzzhp@163.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/5 22:04:00
     
     gao1012 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:3
      积分:70
      门派:XML.ORG.CN
      注册:2006/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gao1012发送一个短消息 把gao1012加入好友 查看gao1012的个人资料 搜索gao1012在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gao1012的博客22
    发贴心情 
    能不能把原理和代码也给我发一份啊?谢谢!
    gao1012@126.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/12 11:21:00
     
     wuping0206 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:66
      门派:XML.ORG.CN
      注册:2006/9/18

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wuping0206发送一个短消息 把wuping0206加入好友 查看wuping0206的个人资料 搜索wuping0206在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wuping0206的博客23
    发贴心情 
    给我也发一份原理和代码吧!多谢多谢!   wuping_cb@yahoo.com.cn
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/25 15:44:00
     
     huangwanfu 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:83
      门派:XML.ORG.CN
      注册:2006/8/7

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给huangwanfu发送一个短消息 把huangwanfu加入好友 查看huangwanfu的个人资料 搜索huangwanfu在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看huangwanfu的博客24
    发贴心情 
    谢谢了
    我也想要一份
    fiv_521@163.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/25 21:16:00
     
     baiyun_xu 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:68
      门派:XML.ORG.CN
      注册:2004/8/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给baiyun_xu发送一个短消息 把baiyun_xu加入好友 查看baiyun_xu的个人资料 搜索baiyun_xu在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看baiyun_xu的博客25
    发贴心情 
    能发一份代码给我吗学习学习 baiyun_xu@hotmail.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/29 20:44:00
     
     huangwanfu 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:83
      门派:XML.ORG.CN
      注册:2006/8/7

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给huangwanfu发送一个短消息 把huangwanfu加入好友 查看huangwanfu的个人资料 搜索huangwanfu在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看huangwanfu的博客26
    发贴心情 
    fiv_521@163.com我也想要一份
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/9/30 9:42:00
     
     gao1012 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:3
      积分:70
      门派:XML.ORG.CN
      注册:2006/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gao1012发送一个短消息 把gao1012加入好友 查看gao1012的个人资料 搜索gao1012在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看gao1012的博客27
    发贴心情 
    能发我一份吗?谢谢!
    gao1012@126.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/21 21:31:00
     
     rab63 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:60
      门派:XML.ORG.CN
      注册:2006/10/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rab63发送一个短消息 把rab63加入好友 查看rab63的个人资料 搜索rab63在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rab63的博客28
    发贴心情 
    SVG Fans!My God!

    密切关注中!
    qq:641978896
    email:sxtone@163.com

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/26 10:51:00
     
     zhou_gong 帅哥哟,离线,有人找我吗?
      
      等级:大二期末(汇编考了97分!)
      文章:36
      积分:373
      门派:XML.ORG.CN
      注册:2005/8/23

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zhou_gong发送一个短消息 把zhou_gong加入好友 查看zhou_gong的个人资料 搜索zhou_gong在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看zhou_gong的博客29
    发贴心情 
    谢谢大家的关注,一直没有时间重新开发WEB服务器,真是不好意思了.给你们一份SVG转换到GEOM的PL/SQL代码,主要是实现了面(包括复杂面的转换,修改一下也可以转换线了):
    FUNCTION svgpath_to_geom(v_path  CLOB) RETURN SDO_GEOMETRY
    AS
      v_geom        SDO_GEOMETRY;
      v_geom1       SDO_GEOMETRY;
      v_geom2       SDO_GEOMETRY;
      v_elem_info   SDO_ELEM_INFO_ARRAY;     
      v_ordinates   SDO_ORDINATE_ARRAY;
      v_xy_count    binary_integer;
      v_path_len    binary_integer;
      i             binary_integer;
      j             binary_integer;
      v_count1      binary_integer := 0;
      v_count2      binary_integer := 0;
      v_str         VARCHAR2(100);
      v_command     char(1);
      v_data_count  binary_integer;
      x1            NUMBER;  --弧的起点;
      y1            NUMBER;
      x2            NUMBER;  --弧上点;
      y2            NUMBER;
      x3            NUMBER;  --弧的终点;
      y3            NUMBER;
      s             NUMBER;  --弧弦长度;
      h             NUMBER;  --弧高度;
      r             NUMBER;  --弧半径;
      large_arc     NUMBER;  --大弧标志=1;
      sweep_flag    NUMBER;  --顺时针方向=1;
      m             binary_integer := precision;
       
       
       
    BEGIN
      IF v_path IS NULL THEN
        RETURN NULL;
      END IF;
      v_path_len := LENGTH(v_path);
      IF v_path_len < 10 THEN
         RETURN NULL;
      END IF;
      i     := 1;
      IF get_svgdata(v_path,i) <> 'M' THEN
        RETURN NULL;
      END IF;
      i := 1;
      LOOP
        v_str := get_svgdata(v_path,i);  
        EXIT WHEN v_str IS NULL;
        IF v_str ='M' THEN  
          v_command := 'M';
          IF v_elem_info IS NOT NULL THEN
            v_geom := SDO_GEOM.SDO_XOR(v_geom,reform_geom(v_elem_info,v_ordinates),tolerance);
          END IF;
          v_elem_info := SDO_ELEM_INFO_ARRAY(1,0,1,1,2,1);
          v_ordinates := SDO_ORDINATE_ARRAY();
          v_xy_count  := 0;
        ELSIF v_str = 'A' THEN
          IF v_xy_count = 2 THEN
            v_elem_info(v_elem_info(3)*3 + 3) := 2;
          ELSIF v_xy_count <2 THEN
            RETURN NULL;
          ELSE  
            IF v_elem_info(v_elem_info(3)*3 + 3) = 1 THEN
              v_elem_info(3) := v_elem_info(3) + 1;
              v_elem_info.EXTEND(3);
              v_elem_info(v_elem_info(3)*3 + 1) := v_xy_count - 1;
              v_elem_info(v_elem_info(3)*3 + 2) := 2;
              v_elem_info(v_elem_info(3)*3 + 3) := 2;     
            END IF;
          END IF;
          v_command := 'A';
        ELSIF v_str = 'L' THEN
          IF v_xy_count <2 THEN
            RETURN NULL;
          ELSE  
            IF v_elem_info(v_elem_info(3)*3 + 3) = 2 THEN
              v_elem_info(3) := v_elem_info(3) + 1;
              v_elem_info.EXTEND(3);
              v_elem_info(v_elem_info(3)*3 + 1) := v_xy_count - 1;
              v_elem_info(v_elem_info(3)*3 + 2) := 2;
              v_elem_info(v_elem_info(3)*3 + 3) := 1;     
            END IF;
          END IF;
          v_command := 'L';
        ELSIF v_str = 'Z' THEN
          IF v_xy_count <2 THEN
            RETURN NULL;
          END IF;
          IF    v_ordinates(1) <> v_ordinates(v_xy_count - 1)  
             OR v_ordinates(2) <> v_ordinates(v_xy_count )    THEN
            IF v_elem_info(v_elem_info(3)*3 + 3) = 2 THEN
              v_elem_info(3) := v_elem_info(3) + 1;
              v_elem_info.EXTEND(3);
              v_elem_info(v_elem_info(3)*3 + 1) := v_xy_count - 1;
              v_elem_info(v_elem_info(3)*3 + 2) := 2;
              v_elem_info(v_elem_info(3)*3 + 3) := 1;     
            END IF;
            v_ordinates.EXTEND(2);
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) :=  v_ordinates(1);
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) :=  v_ordinates(2);         
          END IF;
          v_command := 'Z';
        ELSE
          IF v_command = 'M' OR  v_command ='L' THEN
            v_ordinates.EXTEND(2);
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) := TO_NUMBER(v_str);
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) := TO_NUMBER(get_svgdata(v_path,i));
           -- DBMS_OUTPUT.PUT_LINE('M:' || x || ',' || y || 'len:' ||  v_ordinates.COUNT);
          ELSIF v_command = 'A' THEN
            x1 :=  v_ordinates(v_xy_count - 1);
            y1 :=  v_ordinates(v_xy_count );     
            r          := TO_NUMBER(v_str);
            v_str      := get_svgdata(v_path,i);
            v_str      := get_svgdata(v_path,i);
            large_arc  := TO_NUMBER(get_svgdata(v_path,i));  
            sweep_flag := TO_NUMBER(get_svgdata(v_path,i));
            x3         := TO_NUMBER(get_svgdata(v_path,i));
            y3         := TO_NUMBER(get_svgdata(v_path,i));
             
            s          := SQRT((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1));
            IF s > r*2 THEN
              r := s/2;
              h := r;
            ELSE
              h := r - SQRT(r*r - s*s/4);
              IF  large_arc = 1 THEN
                h := 2*r - h;
              END IF;
            END IF;
            IF sweep_flag = 1 THEN
              x2 := (x1 + X3)/2 + h*(y3 - y1)/s;
              y2 := (y1 + Y3)/2 - h*(x3 - x1)/s;
            ELSE
              x2 := (x1 + X3)/2 - h*(y3 - y1)/s;
              y2 := (y1 + Y3)/2 + h*(x3 - x1)/s;
            END IF;
            v_ordinates.EXTEND(4);
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) := x2;
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) := y2;
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) := x3;
            v_xy_count := v_xy_count + 1;
            v_ordinates(v_xy_count) := y3;
             
           -- DBMS_OUTPUT.PUT_LINE('A:' || r || ','|| x || ',' || y);
          ELSE
            RETURN NULL;
          END IF;
        END IF;  
      END LOOP;
      --DBMS_OUTPUT.PUT_LINE(v_ordinates.COUNT);
      v_geom := SDO_GEOM.SDO_XOR(v_geom,reform_geom(v_elem_info,v_ordinates),tolerance);
      RETURN v_geom;
    END;


    FUNCTION reform_geom(v_elem_info IN OUT NOCOPY SDO_ELEM_INFO_ARRAY,v_ordinates IN OUT NOCOPY  SDO_ORDINATE_ARRAY) RETURN SDO_GEOMETRY
    AS
      v_geom     SDO_GEOMETRY;
      v_xy_count binary_integer;
    BEGIN
          IF (v_elem_info IS NULL) OR (v_ordinates IS NULL) THEN
            RETURN NULL;
          ELSE
            v_geom := SDO_GEOMETRY(NULL,NULL,NULL,NULL,v_ordinates);
            v_xy_count := v_ordinates.COUNT;
            IF     v_ordinates(1) = v_ordinates(v_xy_count - 1)  
               AND v_ordinates(2) = v_ordinates(v_xy_count )    THEN
              v_geom.SDO_GTYPE := 2003;
            ELSE  
              v_geom.SDO_GTYPE := 2002;
            END IF;
            IF v_elem_info(3)>1 THEN
              IF v_geom.SDO_GTYPE = 2002 THEN
                 v_elem_info(2) := 4;
              ELSE
                 v_elem_info(2) := 1005;
              END IF;
            ELSE
              IF v_geom.SDO_GTYPE = 2002 THEN
                v_elem_info(2) := 2;
                v_elem_info(3) := v_elem_info(6);
              ELSE
                v_elem_info(2) := 1003;
                v_elem_info(3) := v_elem_info(6);
              END IF;
              v_elem_info.TRIM(3);
            END IF;
            v_geom.SDO_ELEM_INFO := v_elem_info;
            v_geom := SDO_GEOM.SDO_INTERSECTION(v_geom,max_shape,tolerance);
            RETURN v_geom;
          END IF;
    END ;

    FUNCTION get_svgdata(v_path  CLOB,pos IN OUT binary_integer) RETURN VARCHAR2
    AS
      v_data VARCHAR2(100);
      j      binary_integer;
    BEGIN
      LOOP
        j := INSTR(v_path, ' ',pos,1);
        IF j = pos THEN
          pos := pos + 1;
        ELSE
          EXIT;
        END IF;
      END LOOP;
      IF j = 0 THEN
        j :=LENGTH(v_path) + 1;
      END IF;
      v_data := SUBSTR(v_path,pos,(j - pos));
      pos := j + 1;
      RETURN v_data;
    END;
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/26 22:31:00
     
     collar_lu 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:17
      积分:122
      门派:XML.ORG.CN
      注册:2004/9/30

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给collar_lu发送一个短消息 把collar_lu加入好友 查看collar_lu的个人资料 搜索collar_lu在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看collar_lu的博客30
    发贴心情 
    我也需要一份
    luzhihao@sf-auto.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/1 10:10:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/26 9:30:05

    本主题贴数52,分页: [1] [2] [3] [4] [5] [6]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    183.594ms