首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 开一个帖子,分析sde表结构
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxfzcgh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2007-10-22 22:56:29 楼主
    Sde表结构分析

    今天开始想分析一下sde的表结构,希望能够弄明白sde一个要素类的每个Feature是如何存储的。

    弄ArcSDE的人都知道,ArcSDE内一个要素类在关系数据库(以MS SQL Server为例)中有一系列的表,

    每个表的作用不同。

    Sde的一个FeatureClass包含以下表:



    B表(与要素类名称同名,用来存储属性数据结构),表结构如下:

    字段名称
    类型
    说明

    GeometryID
    Int
    要素唯一ID

    SHAPE
    Int
    似乎与GeometryID值相同,备用字段?

    …..
    …..
    其他用户定义字段


    注:如果该要素类没有注册,B表有记录,如果该要素类已经注册,B表记录相应的转移到a表



    F表(f+LayerID,用来存储图形坐标、外边界矩形等图形信息)

    字段名称
    类型
    说明

    fid
    Int
    要素唯一ID

    numofpts
    Int
    坐标个数(岛、洞的坐标如何计数)

    entity
    smallInt
    要素类型代码(点、线、面)

    eminx
    Float
    边界矩形

    eminy
    Float
    边界矩形

    emaxx
    Float
    边界矩形

    emaxy
    Float
    边界矩形

    eminz
    Float
     

    emaxz
    Float
     

    min_measure
    Float
     

    max_measure
    Float
     

    area
    Float
    面积

    len
    Float
    长度

    points
    image
    坐标串(具体二进制内如何存储,如何提取)




    S表(s+LayerID,用来存储地物空间索引,Sde采用正方形网格索引)

    字段名称
    类型
    说明

    sp_fid
    Int
    要素唯一ID

    gx
    Int
    行号((网格左下点x坐标-图形区域最小x坐标)/网格大小)

    gy
     
    列号((网格左下点y坐标-图形区域最小y坐标)/网格大小)

    eminx
    Int
    从名字看上去是要素的边界矩形坐标。但是我添加一个要素进去后,却发现不是直接存储的地物边界矩形坐标,边界矩形的坐标在f表已经存储了,这里不知道干什么用?

    eminy
    Int

    emaxx
    Int

    emaxy
    Int








    A表(a+LayerID_Register,当要素类注册版本以后,该表存储原b表的数据,并记录数据状态)

    字段名称
    类型
    说明

    GeometryID
    Int
    要素唯一ID

    SHAPE
    Int
    似乎与GeometryID值相同,备用字段?

    SDE_STATE_ID
    Int
    要素状态ID(没有仔细研究,似乎每个操作就会+1)

    …..
    …..
    其他用户定义字段




    D表(d+LayerID_Register,仅当要素类注册版本之后,该表存在,并记录当前被删除的地物)

    字段名称
    类型
    说明

    SDE_STATE_ID
    Int
    删除要素的StateID

    SDE_DELETES_ROW_ID
    Int
    删除要素的id

    DELETED_AT
    Int
    删除操作的StateID?

    本来想自己先看一段时间再贴出来,后来觉得个人时间、精力、能力有限,或许可以一边学一边写,
    又或许有做过这项工作和对此有兴趣的同行愿意了解他,能够一起探讨
    要搞清楚ArcSDE的运行机制,除了要分析他的表结构之外,还要分析其坐标串如何存储、版本信息如何记录
    还有他本身自带的很多存储过程
    由于本人也刚开始了解,其中如果有错误之处请多包含,并请指正,勉我在以后的过程中走弯路,谢谢先

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fengyun925
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      4

    发表于:2007-10-23 10:55:351楼 得分:0
    楼主写的不错
    支持一下
    密切关注楼主的更新,学习SDE知识
    呵呵~
    比较关注SDE对空间信息存储的细节

    楼主加油
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxfzcgh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-23 22:13:462楼 得分:0
    关于f表points字段存储的问题下面这里有一个帖子,不过我似乎没有能看懂
    http://blog.csdn.net/Jans/archive/2005/08/07/447810.aspx

    其他地方暂时没有找到资料,待续...

    另:昨天发现一个问题,sde的s表(即用来存储空间索引的表)在要素被删除的时候不会自动删除s表对应的内容
    假如是这样的话,在频繁的写入、删除操作后,s表会有大量的无用记录,大大影响查询速度
    就这个问题问了esri的人,他告诉我可以用compress操作,不过我试了似乎无用,不知道有什么其他办法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fengyun925
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      4

    发表于:2007-10-25 14:16:363楼 得分:0
    压缩数据库,理论上是可以将所有临时表的记录都清空掉的
    我当时跟踪过一个lineage的表

    SDE中任何删除的要素都会放入D表吧,不会真正的删除掉
    直到你压缩数据库的时候,才把你所有做过的操作都归档到最终的表里面
    所以,刚删除的时候,S表中存在记录是正常的呀

    呵呵~
    SDE似乎需要定期压缩数据库的,否则也比较容易导致一些莫名其妙的错误的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xzhui
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-10-26 09:07:044楼 得分:0
    直接去找 sde的技术文档吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shshsh_0510
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-01 08:53:195楼 得分:0
    m
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wanghg08
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-12 15:20:326楼 得分:0
    hao !
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxufeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-12 16:14:207楼 得分:0
    说实话,sde表的设计可以称之为垃圾,搞那么多复杂的关系,速度慢得要死。
    我简单的分析了一下personal geodatabase,也就是access gis数据库的结构,得出了一个结论,
    那就是每条记录记录一下外接矩形,然后就是二进制字段存坐标。这个blob字段对应的是shape,“好像”(具体忘了)
    前八位表示的是要素的种类,用以区分点线面的,因为同一图层只有一种要素,所以这个八个字节一点用都没有;
    然后接下来的是每个点32位的坐标序列,点和线不用说了,多边形就是什么里边顺时钟外边逆时钟(我不知道是否说反了),
    也就是和shape文件一样的,也和windows gdi基本一致(尤其是多边形的坐标排列方式)。
    仅此而已,其他的那些表无非就是记录有几个图层,叫什么名字之类的。
    200来万,就买了这么一个经常死机、功能强大但没几个人用的软件,中国政府的钱啊。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rlj021
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-13 10:15:128楼 得分:0
    看看……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • giscn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-15 10:44:509楼 得分:0
    7楼说的有理,ArcSDE其实是个空壳,可惜懂行的人不多,没什么内容,速度慢,特别用过ArcSDE for Oracle 的人会深有体会,如果你保存大量的数据,会很久,单ArcSDE 现在一套是17万,还涨价了2万,至于数据格式,ArcSDE的资料上写得很详细,采用一般用WKB(Well known binary)格式保存
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxufeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-11-19 23:00:0110楼 得分:0
    sde据说不单卖了。
    gis这个行业啊,真是个有钱的行业!大部分干GIS的人大部分都是测量相关、土地、水利等相关行业的人,
    而真正搞计算机的人尤其是软件的人并不是主要的力量,所以目前的现状也是很有意思的。反倒是其他行业的软件开发倒都是
    计算机或数学毕业的为主流。
    同时这个行业的权威人士都以数据(格式)为中心对行业进行“指点”,项目的承办者大都为
    政府机关部门,所以出现了gis的开发大部分是以仅有那么几个所谓主流的平台进行重复性的、低水平的二次开发为主。也就
    出现了做gis的人觉得使用了ajax的webGIS简直就是一个伟大的革命,殊不知这种基于多层、分辨率不同(大小不同)图片的
    简单东西或许在某些做web应用的程序员开来只不过是小儿科。
    这就是中国gis行业的的通病,大公司实现了从大学甚至高中开始灌输他们gis平台,无良学者的助纣为虐,政府官员的无能无知,
    这个行业在中国永远将是外国人的天下。
    或许,gps的普及正在或已经改变这个现实。不过现实是这样的,如果你跑到一个所谓的gis泰斗面前说手机的gps或者51地图的
    什么技术时,大都会很郑重的告诉你,那能叫gis吗,你小伙子不懂gis,你去看看某某平台吧·······
    也许我是真得不懂gis,我也就知道,一个系统作出来后,大部分就是放大缩小几下,最多点击一下属性,然后关了,不用了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxfzcgh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-11 21:34:2411楼 得分:0
    很久没有去研究了,sorry
    sde 9.2以后就不单卖了,整合到 ArcGis Server 一起了
    ArcSDE添加、删除数据是比较慢的,因为要维护空间索引表
    但是感觉ArcEngine+ArcSDE查询速度还是飞快的,这种感觉尤其在我使用了SharpMap这一开源gis库以后愈发强烈
    几百万记录2秒钟不到可以完成查询,算非常快了
    Set pFeatureCursor = pFeatureLayer.Search(pSpatialFilter, True)
    这一句总是能够很快返回数据,按理说这里要进行很多的操作
    首先要根据属性字段过滤记录,然后要根据空间索引过滤数据,还要根据查询范围过滤数据
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • giscn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-20 18:52:4812楼 得分:0
    其实只是换了个名称,ArcGIS 9.2 Server Enterprise Basic就只有ArcSDE, 功能没什么变化还涨价了,
    ArcSDE的添加和删除不是一般地慢,每秒update记录数到不了100,
    至于查询速度,我感觉也没有优势,但没有用200这么大的表试过,如果记录数不多,2秒查处结果很正常,

    PS. 按照我的经验, 对于100万条数据级别的表,ArcSDE的速度相比没有任何优势
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • giscn
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-20 18:59:1613楼 得分:0
    说明一下,记录数不多的意思是指一次查出的结果集记录数不是很大。一般地,如果小于几千条,2秒不算快
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • byfq
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2007-12-21 13:10:1614楼 得分:0
    学习一下,
    sde好不好用,值不值那么多钱,关键看有没有好的能代替的东西出来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hujun614
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-02 14:16:2015楼 得分:0
    精贴当然要顶了.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Camper_beijing
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-02-18 16:06:1216楼 得分:0
    xue xi arcsde zhong
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • metaboy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-04-15 23:37:5917楼 得分:0
    学习一下,很有价值的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • numbo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-07 14:45:5918楼 得分:0
    GIS行业发展的慢,在中国也就20几年的时间,应用水平和国外比还是有差距。现在搞gis项目,很多时候就是一个恶人扛到底,不仅要会写程序,而且要懂业务,还要懂测绘和地理信息的专业知识。没有人在乎你的程序写的多么好,也没有人在乎你懂多么先进的技术,只要程序能够运行出正确的结果就行了。如果你学计算机,领导会说你不懂业务,没有gis知识,如果你学gis,领导说你不会写程序,不懂技术。除非你在某个具体行业中混了很多年,知道那个行业应用要做什么,否则你很难得到领导的赏识。总的一句话,就是要压低你的个人价值。所以在gis界写程序,很多人写了几年也没有什么进步,只是会写一些功能,程序结构、效率甚至系统架构一无所知。在gis界搞业务,要做什么虽然懂了,但是给人的感觉就是越来越虚了,慢慢的变得不会做事了,离开了这个行业就不行了。学计算机的人搞编程,学gis的搞业务,学gis的而计算机技术比较扎实(计算机毕竟容易学)的,慢慢从技术的角度上升到业务的层次。gis界一致对于什么技术为主都有争执,搞测绘的说以测绘技术为基础(武测为代表),搞计算机的(中地)说以计算机技术为依托。照我说都别争了,行业的发展要靠测绘(GIS),行业应用要靠计算机技术。计算机技术再牛,如果没有行业理论为基础,也做不了gis,gis只所以成为gis当然有其特定行业知识背景。测绘(GIS)理论再好,前景再广阔,上天入地说的很牛逼,如果没有计算机技术去实现,什么都是一场空。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cuit
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:36:0819楼 得分:0
    引用 18 楼 numbo 的回复:
    GIS行业发展的慢,在中国也就20几年的时间,应用水平和国外比还是有差距。现在搞gis项目,很多时候就是一个恶人扛到底,不仅要会写程序,而且要懂业务,还要懂测绘和地理信息的专业知识。没有人在乎你的程序写的多么好,也没有人在乎你懂多么先进的技术,只要程序能够运行出正确的结果就行了。如果你学计算机,领导会说你不懂业务,没有gis知识,如果你学gis,领导说你不会写程序,不懂技术。除非你在某个具体行业中混了很多年,…

    楼上是明白人...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cuit
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:37:2920楼 得分:0
    感觉GIS就一边缘行业
    是要用到GIS而用GIS
    而不是需要用GIS而GIS
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyunffu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-18 16:11:5821楼 得分:0
    大家说的都不错!向大家学习!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hznydx
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-08 16:42:5122楼 得分:0
    说得好,国内的GIS发展是不行,
    好多学校有这个专业,可到毕业学生都还
    不知学了什么,对这个行业也是迷惑不解.
    项目上,一是少,二是技术老.没有什么创新,
    有一点东西就可以发到国内的期刊杂志上,国外的不是很清楚,
    但愿GIS好起来!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxufeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-11 22:57:5523楼 得分:0
    说得好,国内的GIS发展是不行,
    好多学校有这个专业,可到毕业学生都还
    不知学了什么,对这个行业也是迷惑不解.
    项目上,一是少,二是技术老.没有什么创新,
    有一点东西就可以发到国内的期刊杂志上,国外的不是很清楚,
    但愿GIS好起来!


    最近因为工作的关系,需要搞点算法,查阅了不少核心期刊,
    发现一个比较有意思的现象:
    水平越高的杂志,水平越牛的人,如某某院士,某某著名教授,其文章大都是评论行业发展的,很有指导江山的意思。
    对于专题研究,关于算法那种,基本都是不实用的;大部分只是从数学上来探讨了其可行性和算法的复杂度,而在实际应用中我们要考虑cpu 内存 磁盘 网络等等很多情况,发现很多牛人写得牛东西根本就无法用,甚至个别算法根本就是错的。比如关于空间索引,一个比一个吹的玄乎,但是没有一个有用的,因为往往都是只有一方面(如查询)性能确实提高,在其他方面(如缓冲查询)根本就没法用;因此成熟的gis平台还都是最简单的格网索引(1公里画个格子)。
    而在不入流的杂志上往往出现些有参考价值的文章。
    当然,那些挣钱的真正的东西,一般还是从文章中找不到!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ajwyyan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-18 15:29:4224楼 得分:0
    arcgis比较复杂啊
    修改 删除 举报 引用 回复