作者:姜正心
链接:https://www.zhihu.com/question/27918946/answer/80577745
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
真相只有一个,让我来说一下吧。你一定很困惑,空间数据在关系型数据库中是如何存储的吧?当年oracle和ESRI共同开发了一个扩展,也就是今天的oracle spatial,空间数据的存储问题本质上是空间数据的组织和解释,ora spatial就是对关系型的一个扩展,也就是说将地理对象作为一个字段,类型是geometry(可以看一下对象关系型数据库),与一般sql的char的表达的型的思想概念都是一样的(数据库中术语叫做啥来着?值域?)反正就是一个型的概念。那么剩下的问题就是一个型到底提供什么功能?空间中的矢量分为点,线,面,多线多面等等基本的一些类型。将这些类型对应的数据转换为字符串,写入数据库的一个字段中,比方说一个点数据,就是一个字符串1,30000,40000。这个1就表示这是一个点,30000,40000就是实际的坐标。同时,空间数据库提供一个底层支持,负责对其作出解释,并给用户提供一个api,例如存储过程和函数。当需要取数据的时候,就用SQL语录从表中将数据取出来,前面讲的数据库提供的api负责作出解释和计算。ArcSDE扮演的角色就是不断的对数据库进行存取和取出。你可以找数据试试,在arcgis中存到oracle中,然后用sql developer打开看一下,也可以看一下这个geometry类型提供的各种存储过程和函数,用起来太特么的爽了。总之,数据库扮演的角色就是存取数据和对存取的数据作出司法解释的过程。…………………………………………………………………………………………………………………………………………………………………………………………………………………………不说了,我去做饭了…………………………………………饭前更……………………………………………………………………………网络的本质就是传输数据; 网络的本质就是传输数据; 网络的本质就是传输数据;重要的事情说三遍。至于通过网络传输的数据是什么内容,怎么解释那就由客户端和服务端说了算了。简单地来讲就是借助于网络底层支持,各个软件产品来制定自己的游戏规则。
记得好像看过早期的空间数据在数据库中采用直接存文件或者用关系表来存储坐标啥的,我没有用过,就不班门弄斧了。在oracle 官网的帮助文档中有专门对spatial模块,强烈推荐感兴趣的翻一翻,绝对是详细到哭啊。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3155630/
,如需转载,请注明出处,否则将追究法律责任。