PostGIS的历史发展

自从 GIS 软件开发以来,ShapeFile等格式被广泛用于存储空间数据,但这些文件格式文件需要特殊的软件才能读取和写入,并发用户可能会导致数据损坏和速度变慢,并且复杂的问题需要复杂的软件来处理。 因此,对多用户的支持、复杂的临时查询以及在大型数据集上的高性能是使空间数据库与基于文件的系统有所区别的关键因素。

2001 年 5 月,Refractions Research 发布了 PostGIS 的第一版。PostGIS 0.1 拥有对象、索引和一些趁手的函数。那时,它只是适合存储数据和检索数据,并不适合分析数据。随着函数数量的增加,对组织原则的需求变得明显。开放地理空间联盟(Open Geospatial Consortium)的"Simple Features for SQL"(简称 SFSQL)规范提供了参考,其中包括函数命名和要求的指南。

随着PostGIS对简单分析和空间连接的支持,Mapserver 成为第一个外部应用程序,为数据库中的数据提供可视化展示。

在接下来的几年里,PostGIS功能的数量不断增长,但其功能仍然有限。许多最有趣的函数,例如ST_Intersects()、ST_Buffer()、ST_Union()都很难编码,从头开始编写它们开展了多年的工作。

幸运的是,第二个项目——“Geometry Engine, Open Source” 或 GEOS,也随之出现。GEOS库提供了实现 SFSQL 规范所需的算法。通过引入GEOS,PostGIS在版本0.8中为 SFSQL 提供了完整的支持。

随着PostGIS数据容量的增长,出现了另一个问题:用于存储几何信息的表示方式相对低效。对于小型对象,如点和线,公示中的元数据可能会有高达300%的额外开销。出于性能原因,有必要对表示进行精简。通过缩小元数据头和所需的维度,额外开销大大减少。在PostGIS 1.0中,这种新的、更快速、轻量级的表示方式成为了默认选项。

最新版本的 PostGIS 继续添加功能和性能改进,以及对 PostgreSQL 核心系统中新功能的支持。

那么为什么当时选用 PostgreSQL,不在 MySQL 上构建 PostGIS呢?这是因为PostgreSQL提供了一种非常简单的开发路径来添加新的空间类型,其具有如下特点:

  • 默认具备经过验证的可靠性和事务完整性(ACID)
  • 对 SQL 标准的精心支持(完整的 SQL92)
  • 插拔式扩展和功能扩展
  • 以社区为导向的发展模式
  • 对列大小(“TOAST”支持元组)没有限制,以支持大型 GIS 对象
  • 通用索引结构 (GiST) 允许 R 树索引
  • 易于添加自定义功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/62119.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【目标跟踪】AntiUAV600数据集详细介绍

AntiUAV600数据集的提出是为了适应真实场景,即无人机可能会随时随地出现和消失。目前提出的Anti-UAV任务都只是将其看做与跟踪其他目标一样的任务,没有结合现实情况考虑。 论文链接:https://arxiv.org/pdf/2306.15767https://arxiv.org/pdf/…

“原批教育家”原批之星鲁健的杰作——原批俱乐部

伟大的原批教育家——原批之星,名为鲁健,是一位在南京邮电大学智能科学与技术专业中崭露头角的杰出人物。他不仅以其卓越的黑客技术和对网络正义的执着而闻名,更是“远古四神”之一,以其对原批之力的深刻理解和不同见解&#xff0…

IS-IS三

目录 点到点邻接关系建立 ISIS修改链路类型 isis ppp-negotiation 3-way only 仅才用三次握手建立邻居 不向下兼容两次握手 两次握手 自身发送的(Hello报文)IIH 不携带 p2p adj TLV 不处理点到点邻接状态TLV 三次握手 …

Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署

文章目录 前言一、Zookeeper单机部署(手动部署)1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…

Spring的三层架构实现原理

Spring三层架构实现 三层架构 controller: 控制层,接受前端发送的请求,对请求进行处理并相应数据;service: 业务逻辑层,处理具体的业务逻辑;dao: 数据访问层(Data Access Object) 持久层,负责数据访问操作,包括数据的增、删、改、查。controller 层: @RestContro…

《Java核心技术I》volatile字段

volatile字段 有多处理器的计算机能够暂时在寄存器或本地内存缓存中保存内存值,其结果是,运行在不同处理器上的线程可能看到同一个内存位置上有不同的值。编译器可以改变指令执行的顺序以使吞吐量更大化,编译器不会选择可能改变代码语义的顺…

基于springboot+vue的车辆违章信息管理系统(全套)

一、系统架构 前端:vue | element-ui | html 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-注册 03. web端-登录 04. web端-公告 05. web端-留言…

利用断开的域管理员RDP会话提权

前言 当域内管理员登录过攻击者可控的域内普通机器运维或者排查结束后,退出3389时没有退出账号而是直接关掉了远程桌面,那么会产生哪些风险呢?有些读者第一个想到的肯定就是抓密码,但是如果抓不到明文密码又或者无法pth呢&#x…

【Unity 动画】设置跟运动(Apply Root)模型跟着动画产生位移

一、导入的动画本身必须有跟随动画产生位移或者旋转的效果 二、导入Unity后 在Unity中,根运动(Root Motion)是指动画中角色根节点的移动和旋转。根节点通常是角色的根骨骼(Root Bone),它决定了角色的整体…

轻松上手使用Vuex

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式和库。它主要用于管理应用程序中的全局状态,提供一个集中式存储库,并且以可预测的方式来更新这些状态。以下是 Vuex 的基本用法和一些关键概念: 1.安装 Vuex 首先,需要在 Vue…

【设计模式】装饰器模式 在java中的应用

文章目录 1. 引言装饰器模式的定义与设计目的装饰器模式与其他设计模式的比较 2. 装饰器模式的结构组件接口(Component)具体组件(ConcreteComponent)装饰角色(Decorator)具体装饰类(ConcreteDec…

vue npm install出现问题

报错如下: ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: web-ifc-viewer1.0.218 npm ERR! Found: three0.149.0 npm ERR! node_modules/three npm ERR! peer three">0.126.1" from camera-controls…

爬虫项目练手

python抓取优美图库小姐姐图片 整体功能概述 这段 Python 代码定义了一个名为 ImageDownloader 的类,其主要目的是从指定网站(https://www.umei.cc)上按照不同的图片分类,爬取图片并保存到本地相应的文件夹中。不过需要注意&…

对比json数据是否变化

在 JavaScript 中,你可以使用多种方法来对比两个 JSON 数据是否发生变化。以下是几种常见的方式: 1. 使用 JSON.stringify 最简单的方法是将两个 JSON 对象序列化为字符串,并比较这些字符串。但需要注意的是,这种方法对于对象属…

C++设计模式:代理模式(Proxy)(附案例代码)

什么是代理模式? 代理模式是一种结构型设计模式,主要用于为某个对象提供一个代理,以便在不直接访问对象的情况下控制对其的访问。代理可以在客户端和目标对象之间起到一个中介的作用,添加一些额外的操作,例如权限控制…

【笔记】软技能

硬技能:操控世界的能力,处理对象为【物】。软技能:影响他人的能力,处理对象为【人】。软技能包括一个人的情商、个性、社交礼仪、沟通、语言、个人习惯,还有解决问题的能力、领导能力、时间管理能力等一切非技术能力。…

uni-app简洁的移动端登录注册界面

非常简洁的登录、注册界面模板&#xff0c;使用uni-app编写&#xff0c;直接复制粘贴即可&#xff0c;无任何引用&#xff0c;全部公开。 废话不多说&#xff0c;代码如下&#xff1a; login.vue文件 <template><view class"content"><view class&quo…

单台服务器上创建多个端口MySQL服务

单台服务器上创建多个端口MySQL服务 直接拷贝已经运行的数据库文件: # ll /data/mysql/ 总用量 204 drwxr-x--- 2 mysql mysql 4096 9月 15 2023 bin -rw-r--r-- 1 mysql mysql

【开源免费】基于SpringBoot+Vue.JS购物推荐网站(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 073 &#xff0c;文末自助获取源码 \color{red}{T073&#xff0c;文末自助获取源码} T073&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

AI在SEO中的应用与关键词优化探讨

内容概要 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术为搜索引擎优化&#xff08;SEO&#xff09;带来了革命性的改变。传统的SEO主要依赖于人为的经验和判断&#xff0c;而AI则通过算法分析海量数据&#xff0c;提供更加精准和高效的方式优化关键词…