POSTGIS的版本都有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POSTGIS的版本都有哪些?相关的知识,希望对你有一定的参考价值。

参考技术A PostGIS发展历程

  PostGIS是由Refractions Research
Inc开发的,Refractions是一家GIS和数据库咨询公司,Refraction公司最初是在PostgreSQL的基础上研究空间数据库的实现,由于PostgreSQL所提供的空间数据类型和功能远远不能满足GIS的需求,研究工作经常陷入到进退维谷的境地,最终的结果往往是耗费了大量的人力物力,而产品却极其复杂并且性能低下。这些原因直接或间接促成PostGIS项目的实施。

  PostGIS的实施也不是一帆风顺,直到PostgreSQL
7.1发布之后,PostGIS的实现才变为可能,主要原因是7.1版本之前PostgreSQL支持的记录大小最大为8Kb,从7.1之后,PostgreSQL将这一限制摈弃。即使采用二进制方式存储,空间数据对象也往往会经常超过8Kb,如果这个限制存在的话,空间数据的存储就无从谈起。

  伴随着这一限制的消除,PostGIS的研究和开发也随即在2001年的4月展开,并于2001年的5月发布了PostGIS的第一版(PostGIS
V0.1)。在PostGIS的第一版中,主要包括空间数据库、采用标准表示方式的空间数据对象、支持快速查询的空间索引和一些简单的分析函数(如area和length等)。PostGIS
V0.1中支持的空间数据对象类型包括:点、线、多边形、几何对象类型,以及多点、多线、多多边形的几何对象类型。

  2001年5月发布的PostGIS
V0.2增加了对于Windows平台下二进制表示的支持,同时为新用户提供帮助文档。不过,用户反馈PostGIS的函数命名没有遵循OpenGIS规范。

  2001年7月PostGIS
V0.5发布,PostGIS增加了OpenGIS现有的所有功能性函数并在函数的命名上与其保持一致。增加了24个OpenGIS存取函数,同时删除了与这些函数功能等价的不标准的原有函数。

  伴随着来自不列颠哥伦比亚省政府的资金支持,对于在球体表面的长度运算支持也加入到0.5版中。同期,Refractions公司将British
Columbia省的数字道路地图集移植到PostGIS中,同时使用数据库的模式和数据转换功能为地图集客户提供支持(急救车派遣、紧急事物响应,以及其他市政事物等)。

  PostGIS
V0.5之所以重要,还有一个原因就是Minnesota大学的Mapserver的发布。Minnesota大学的Mapserver是一个开源的互联网地图发布引擎,就像ESRI公司的ArcIMS系统,Mapserver同时增加了对于PostGIS的支持。

  在Mapserver中,提供了一个Web驱动的接口,这个接口用于检查数据库中数据的空间特征。在PostGIS中,PostGIS为了使得Mapserver能够更好的提供服务,提供了一个易于读写的数据源,这个数据源将会在网络事务繁忙的时候发挥其效用。比如,如果用标准的GIS文件作为数据源,如果有两个用户并发的对同一文件进行写入操作,这样将会不可避免的导致操作冲突,而利用PostGIS就能够很好的解决这个缺陷,同时确保数据的完整性。

  2001年9月,PostGIS V0.6发布,PostGIS
V0.6提供了完整的OpenGIS支持,加入了标准的元数据表,并且提供了对于空间参照系统标识的支持。另外还加入了OpenGIS支持的12个功能函数,同时对于Mapserver的支持得到了进一步的增强。

  2002年2月,PostgreSQL
V7.2发布,在7.2版中,GIST索引的API函数作了一点改进。由于这些API函数同样应用于PostGIS中,这给PostGIS
V0.6的应用带来了麻烦,促使PostGIS必须作出改进适应PostgreSQL的变化。2002年PostGIS
V0.7发布,在0.7版中,提供了新的对于GIST的API函数支持,同时在这一版中,提供了对于坐标变换的支持。

  从2002年到现在,PostGIS又陆续发布了一系列的新版本,这些PostGIS产品在继承PostGIS产品原有优点的同时,又针对PostGIS本身存在的问题和不足进行了进一步的改进。到现在为止,PostGIS的最新版本是PostGIS
V1.1.4。PostGIS V1.1.4主要改进的地方包括:⑴提供了对于将要发布的PostgreSQL
V8.2的支持;⑵修复了函数collect中存在的bug;⑶在MakeBox2d和MakeBox3d中增加了对SRID的匹配检查;⑷提高了pgsql2shp的运行并发性;⑸进一步改进了对于Java的支持。追问

如果安装postgis1.5.2需要先安装哪个版本的postgreSQL

参考资料:http://baike.baidu.com/view/1871110.htm

Postgis / Geodjango:无法确定数据库的 PostGIS 版本

【中文标题】Postgis / Geodjango:无法确定数据库的 PostGIS 版本【英文标题】:Postgis / Geodjango: Cannot determine PostGIS version for database 【发布时间】:2011-11-21 10:49:38 【问题描述】:

我正在尝试启动 GeoDjango 应用程序。我已经在 Lion 上使用 brew 安装了 Postgres 和 PostGIS。我使用 template_postgis 创建了一个数据库:createdb -T template_postgis test

当我运行python manage.py syncdb 时,我收到以下错误:

django.core.exceptions.ImproperlyConfigured:无法确定 用于数据库“测试”的 PostGIS 版本。 GeoDjango 至少需要 PostGIS 1.3 版。数据库是从空间数据库创建的 模板?

如何追踪错误的来源?我已经检查了用户并传入配置是否可以访问数据库等。

【问题讨论】:

【参考方案1】:

只需在您的 settings.py 中添加您正确的 postgis 版本:

POSTGIS_VERSION = (2, 0, 3)

【讨论】:

这样就解决了。我仍然想了解为什么 geodjango 无法自行解决...【参考方案2】:

作为调试的第一步:尝试手动检查 postgis 模板版本,例如在命令行上使用psql test 连接到您的数据库,并使用select postgis_lib_version(); 进行查询。这个函数应该在 template_postgis 中定义并返回一些数字。示例输出:

$ psql test
psql (9.0.4)
Type "help" for help.

test=# select postgis_lib_version();

 postgis_lib_version
---------------------
 1.5.2
(1 row)

如果发生错误,您就知道错误在数据库中。

【讨论】:

嗨 Sandeep,你的输出状态是什么? 抱歉..我搞定了..我必须关注docs.djangoproject.com/en/dev/ref/contrib/gis/install/postgis/… 差不多:CREATE EXTENSION postgis; 在你的数据库的 shell 中运行 当 Postgres 没有运行时,这是同样的错误。所以只要运行 Postgres 就可以了。【参考方案3】:

我的解决方案是在 postgres 终端中运行以下命令:

psql database_name

database_name=# CREATE EXTENSION postgis;

如果你得到ERROR: relation "spatial_ref_sys" already exists,在CREATE EXTENSION postgis之前运行以下命令:

 drop table spatial_ref_sys;
 drop table geometry_columns;

【讨论】:

【参考方案4】:

如果先前的选择返回错误,则可能是该数据库上安装了一个特定版本的 PostGIS,您将 Postgres.app 更新为较新版本,捆绑了较新版本的 PostGIS。例如,在最近从 Postgis 2.0 更新到 2.1 之后

在这种情况下,您可以在复制回一些库后进行迁移,如this ticket 中所述

【讨论】:

【参考方案5】:

如果您使用的是django_debug_toolbar,请尝试将其删除或注释掉debug_toolbar/utils/tracking/db.py 第152 行,如https://github.com/django-debug-toolbar/django-debug-toolbar/issues/442 所建议的那样

【讨论】:

以上是关于POSTGIS的版本都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

postgis版本升级

postgis版本升级

postgis版本升级

获取 PostGIS 版本

postgresql与postgis结合示例

Linux 安装 postgis