千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:武汉千锋IT培训  >  技术干货  >  SQL/Oracle数据库是怎样与GIS的应用相联系起来的?

SQL/Oracle数据库是怎样与GIS的应用相联系起来的?

来源:千锋教育
发布人:xqq
时间: 2023-10-20 23:06:22

一、SQL/Oracle数据库是怎样与GIS的应用相联系起来的

当年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模块,强烈推荐感兴趣的翻一翻,绝对是详细到哭啊。

再说说应用的问题,假如有这么一个场景,某某市政是你的甲方爸爸,你要做一个城市管网信息管理系统,有各种各种的管线图,包括道路啊,路灯啊,杂七杂八的东西,这些数据就可以存储在数据库中,存储的部分解决了,剩下的就是一般的Web开发了,包括一般的GIS系统,WebGIS开发。其实做开发还是一件很有意思的事情,从事计算机的人大部分不会GIS开发,会GIS开发的一般也不会接触空间数据库,如果这三个都能用熟练运用,在GIS开发这个行业怎么的也属于上流社会的人吧,

延伸阅读:

二、空间数据引擎

关系型数据库无法存储、管理复杂的地理空间框架数据以支持空间关系运算和空间分析等GIS功能。因此,GIS软件厂商在纯关系数据库管理系统基础上,开发空间数据管理的引擎。空间数据引擎(Spatial Database Engine,简称SDE)是用来解决如何在关系数据库中存储空间数据,使空间数据实现真正的数据库方式管理,建立空间数据服务器的方法。空间数据引擎是用户和异种空间数据库之间一个开放的接口,它是一种处于应用程序和数据库管理系统之间的中间件技术。用户可通过空间数据引擎将不同形式的空间数据提交给数据库管理系统,由数据库管理系统统一管理,同样,用户也可以通过空间数据引擎从数据库管理系统中获取空间类型的数据满足客户端操作需求。目前GIS软件与大型商用关系型数据库管理系统(RDBMS)的集成大多采用空间数据引擎来实现。使用不同GIS厂商数据的客户可以通过空间数据引擎将自身的数据提交给大型关系型DBMS,由DBMS统一管理。同样,客户也可以通过空间数据引擎提供的用户和异构数据库之间的数据接口,从关系型DBMS中获取其它类型的GIS数据,并转化成客户可以使用的方式。空间数据引擎就成为各种格式的空间数据出入大型关系型DBMS的转换通道。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

常见的软件设计模式有哪些?

2023-10-20

LayoutInflater.inflate()方法两个参数和三个参数的区别?

2023-10-20

为什么GIL让多线程变得如此鸡肋?

2023-10-20

最新文章NEW

Mysql为什么只能支持2000w左右的数据量?

2023-10-20

Python中time和datetime的区别?

2023-10-20

必备linux命令有哪些?

2023-10-20

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>