新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   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高手看过来,从GML到SVG,我这么做怎么不对? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 8719 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: SVG高手看过来,从GML到SVG,我这么做怎么不对? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yuelongming 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:24
      积分:202
      门派:XML.ORG.CN
      注册:2005/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuelongming发送一个短消息 把yuelongming加入好友 查看yuelongming的个人资料 搜索yuelongming在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yuelongming的博客楼主
    发贴心情 SVG高手看过来,从GML到SVG,我这么做怎么不对?

    各位:
       我要把GML转为SVG,通过编写一个XSLT完成,我的GML文件很简单,就是一个点,但总是不对,帮帮忙找下我错在哪里了.谢谢你们!!!
    GML文件:
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>

    <ex:Layer xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ex="http://www.opengis.net/examples"  xsi:schemaLocation="http://www.opengis.net/examples e:\masterpaper\base\dp.xsd">
     <gml:boundedBy>
      <gml:Envelope srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
       <gml:pos>32.560001373291016 15.361444473266602</gml:pos>
       <gml:pos>54.61927032470703 38.08097839355469</gml:pos>
      </gml:Envelope>
     </gml:boundedBy>
     <ex:EntityMember>
      <ex:Property>
       <ex:PropertyName>building1</ex:PropertyName>
       <ex:value dataType="C">school</ex:value>
      </ex:Property>
      <gml:Point>
       <gml:coord>
                           <gml:X>46.29011917114258</gml:X>
                           <gml:Y>38.08097839355469</gml:Y>
                        </gml:coord>
      </gml:Point>
     </ex:EntityMember>
    </ex:Layer>


    XSL文件如下:
    <?xml version="1.0"?  encoding="ISO-8859-1">
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:gml="http://www.opengis.net/gml"
                    version=="1.0">

    <xsl:output method="xml" indent="yes" standalone="no" media-type="image/svg+xml"
    " doctype-public="-//W3C//DTD SVG 20000303 Stylable//EN"/>

    <xsl:template match="/">
      <svg xmlns:svg="http://www.w3.org/2000/svg">
       <xsl:for-each select="ex:Layer/ex:EntityMember/gml:Point">
                              <xsl:variable name="x0">
                                 <xsl:value-of  select="/ex:Layer/ex:EntityMember/gml:Point/gml:coord/gml:X"/>
                              </xsl:variable>
                              <xsl:variable name="y0">
                                 <xsl:value-of select="/ex:Layer/ex:EntityMember/gml:Point/gml:coord/gml:Y"/>
                              </xsl:varible>
                              <circle cx="$x0" cy="$y0" r="5"  fill="red" stroke="black" />
       </xsl:for-each>
      </svg>
    </xsl:template>
    </xsl:stylesheet>


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/1 23:04:00
     
     yuelongming 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:24
      积分:202
      门派:XML.ORG.CN
      注册:2005/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuelongming发送一个短消息 把yuelongming加入好友 查看yuelongming的个人资料 搜索yuelongming在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yuelongming的博客2
    发贴心情 
    自己顶一下,问题解决了,正确的如下:
    <?xml version="1.0"  encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                    xmlns:gml="http://www.opengis.net/gml"
                    xmlns:ex="http://www.opengis.net/examples">

    <xsl:output method="xml" indent="yes" standalone="no" media-type="image/svg+xml"
         doctype-public="-//W3C//DTD SVG 20000303 Stylable//EN"/>

    <xsl:template match="/">
      <svg xmlns:svg="http://www.w3.org/2000/svg">
       <xsl:for-each select="ex:Layer/ex:EntityMember/gml:Point">
                              <xsl:variable name="x0">
                                 <xsl:value-of  select="/ex:Layer/ex:EntityMember/gml:Point/gml:coord/gml:X"/>
                              </xsl:variable>
                              <xsl:variable name="y0">
                                 <xsl:value-of select="/ex:Layer/ex:EntityMember/gml:Point/gml:coord/gml:Y"/>
                              </xsl:variable>
                              <circle cx="{$x0}" cy="{$y0}" r="5"  fill="red" stroke="black" />
       </xsl:for-each>
      </svg>
    </xsl:template>
    </xsl:stylesheet>

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/2 9:30:00
     
     yuelongming 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:24
      积分:202
      门派:XML.ORG.CN
      注册:2005/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuelongming发送一个短消息 把yuelongming加入好友 查看yuelongming的个人资料 搜索yuelongming在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yuelongming的博客3
    发贴心情 
    但新的问题产生了,我想问的是,在GML中,一个图层的最大边界盒:
    <gml:boundedBy>
      <gml:Envelope srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
       <gml:pos>31.672675647391934 14.856775591394925</gml:pos>
       <gml:pos>56.98753633499146 38.45801494014156</gml:pos>
      </gml:Envelope>
     </gml:boundedBy>
    其中存储的是地理坐标,我的问题是,如何根据它得到SVG中的viewbox,而且得到viewbox后,对GML中其他的地理坐标如何变换才能得到SVG中的屏幕坐标???很急,向高手请教,跟新手探讨,谢谢回帖!!!!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/2 9:40:00
     
     fangxu1979 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:8
      积分:117
      门派:XML.ORG.CN
      注册:2006/2/27

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fangxu1979发送一个短消息 把fangxu1979加入好友 查看fangxu1979的个人资料 搜索fangxu1979在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fangxu1979的博客4
    发贴心情 
    我是新手,也在做这方面的东西。
    我做的恰恰相反,就是在gml转化成svg后如果维持它的地理坐标。
    下面是zhou_gong在他的帖子,我转发给你,里面说的很详细。

    大地坐标系与SVG DOM屏幕坐标之间的变换
    在SVG DOM里,显示给用户是的真实世界的坐标系,视图的放大、缩小、平移及对空间对象的创建、操作都是基于真实世界的坐标系。这要求设计出一套真实坐标与屏幕坐标之间变换。
    在本 选项题中使用的大地坐标系是X轴向北,Y轴向东,称为(realX,realY),单位m,而SVG DOM有两套坐标系,一为屏幕坐标系,X轴向东(右),Y轴向南(下),下称为(clientX,clientY),单位px,原点(0,0)在SVG DOM视窗的左上角, 屏幕坐标系的位置是固定的。另一套坐标为用户坐标系,下称为(userX,userY),初始时, 用户坐标系与屏幕坐标系重叠一致(图12)。在SVG DOM 我们使用的是用户坐标系,通过对用户坐标系旋转、平移、缩放以到达能在SVG DOM的矩形视窗范围内显示用户关心的图象。

    图 12    各种坐标系关系
    可以看出,用户坐标系逆时针旋转90度后与大地坐标系一致,因此设定大地坐标系与用户坐标为1:1对应关系,现在要解决的是用户坐标系与屏幕坐标系之间的变换关系就行了。要在SVG DOM中显示大地坐标系中比例系数为s(px/m,1真实坐标单位m等于s个屏幕坐标单位px),左上角的大地坐标为(realX0,realY0),则用户坐标系必须做如下顺序变换(图 5-2):(1)平移(-realX0,-realY0);(2)放大S倍;(3)旋转(-90)度。参看图13所示。

    图 13   大地坐标系与SVG DOM屏幕坐标系转换
    在SVG的规范中,此变换由属性transform描述定义这种坐标变换:
    transform=”rotate(-90) scale(S) translate(-realX0,-realY0)”
    三种坐标的关系为:
      realX = userX = realX0 - clientY/S;
      realY = userY = realY0 + clientX/S;
    几何解释为:SVG DOM当前呈现视图,左上角的位置是大地坐标(realX0,realY0),S个像素(px)相当于一个大地坐标单位(m)。 每次放大、缩小、平移视窗,都必须重新计算设置realX0,realY0及比例S,可动态维持大地坐标系与屏幕坐标系之间的映射对应关系。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/2 10:09:00
     
     yuelongming 美女呀,离线,快来找我吧!
      
      
      等级:大一(猛啃高等数学)
      文章:24
      积分:202
      门派:XML.ORG.CN
      注册:2005/4/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuelongming发送一个短消息 把yuelongming加入好友 查看yuelongming的个人资料 搜索yuelongming在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yuelongming的博客5
    发贴心情 
    谢谢回帖,看得似懂非懂,但相信我,我会弄明白的!!!你也多多加油!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/6/2 13:21:00
     
     yaowei666 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:78
      门派:XML.ORG.CN
      注册:2006/9/24

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yaowei666发送一个短消息 把yaowei666加入好友 查看yaowei666的个人资料 搜索yaowei666在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yaowei666的博客6
    发贴心情 
    我也是GML新手,请问能把你编写的dp.xsd的代码发给我吗?非常感谢!!!
    我的邮箱:yaowei666@163.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/10/31 20:55: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的博客7
    发贴心情 
    我也很关注这个问题,怎么没人出来说个明白呢?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/1 10:16:00
     
     msnow 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:9
      积分:108
      门派:XML.ORG.CN
      注册:2006/11/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给msnow发送一个短消息 把msnow加入好友 查看msnow的个人资料 搜索msnow在『 SVG/GML/VRML/X3D/XAML 』的所有贴子 引用回复这个贴子 回复这个贴子 查看msnow的博客8
    发贴心情 
    大侠,我是个SVG的初学者,能不能把你的“大地坐标系与SVG DOM屏幕坐标之间的变换“的详细资料(含图示说明)给我发一份,谢谢!我的E-mail:  hswmxr@tom.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/12/8 14:33: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/6/6 13:22:14

    本主题贴数8,分页: [1]

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