今天遇到一个问题:
org.postgresql.util.PSQLException:错误: Operation on mixed SRID geometries
通过pgAdminIII工具看到其他表的SRID为-1,唯独报错的 表的SRID为4326,所以在网上找了找PostgreGis设置表的SRID的文章,后来找到一篇不错的文章,这里借鉴一下:
连接为:http://blog.csdn.net/cnhome/article/details/6990060(以防文件被删除,这里将重要的文字拷贝一份)
因为倒入shp时没有指定相应的SRID,会造成入库数据中SRID取值为-1。当知道了空间对象的坐标系时,如何将空间几何体修改为新的坐标系ID呢。
首先,修改geometry_columns表中对应字段的SRID为新的坐标系ID;
其次,修改beijing_highway表的定义,将enforce_dims_the_geom的定义的(st_srid(the_geom) = (-1))删除(注:此处the_geom是空间字段);
然后,更新数据内容 update table_name set the_geom = st_geomfromtext(ST_AsText(the_geom),4326)(注:此处4326为数据的坐标系ID);
最后,将enforce_dims_the_geom的定义(st_srid(the_geom) = (4326))加回去就可以变更SRID了。
如果是从一个坐标系向另外一个坐标系调整,就需要进行坐标系的变换了。这时候你可能会意识到,字段是只能增加,也就是插入。
此处可以参考别人的一篇博文,http://hi.baidu.com/jrc520/blog/item/d070d84385987c0072f05daf.html
采用postgis函数将墨卡托投影变成4326并插入空间数据库
QuanGuo=# insert into test values(1,'hahaha',st_transform(st_geomfromtext('POINT
(10070507.650288 4282901.6281314)',900913),4326));
INSERT 0 1
按着文章的步骤最后问题解决了。在这个过程中我还学到了一些东西,通过PGAdminIII工具可以看到PostgreGis库中的每一个表的Geometry字段的SRID的值也可以改变该值(表geometry_columns),但是只是改变这一个值是不起作用的,还有根据上面的步骤操作才可以。
上面的操作涉及到的sql语句为:
第一步:
通过PGAdminIII工具可以看到PostgreGis库中的每一个表的Geometry字段的SRID的值也可以改变该值(表geometry_columns),但是只是改变这一个值是不起作用的,还有根据上面的步骤操作才可以。
第二步:
alter table guanxian drop CONSTRAINT enforce_srid_the_geom
第三步:
update guanxian set the_geom = st_geomfromtext(ST_AsText(the_geom),-1)
分享到:
相关推荐
PostGIS 是一个强大的开源扩展,它为 PostgreSQL 数据库系统提供了空间和地理对象的支持。这个“postgis-3.2.2dev.tar.gz”文件是一个压缩包,包含了 PostGIS 3.2.2 开发版本的源代码。在 Linux 环境下,你可以通过...
PostGIS是 PostgreSQL 数据库系统的一个扩展,它为地理对象提供了全面的存储、查询和分析功能。这个"postgis-2.5.5.tar.gz"压缩包包含的是PostGIS 2.5.5版本的源代码,适用于那些希望在Linux环境下安装和自定义...
PostGIS 是一个开源的扩展程序,它为 PostgreSQL 数据库管理系统添加了空间数据处理能力,使其成为一个功能强大的地理信息系统(GIS)后端。标题中的 "postgis-3.1.2dev.tar.gz" 指的是 PostGIS 的 3.1.2 开发版本的...
PostGIS是一种开源的空间数据库扩展,它为 PostgreSQL 数据库系统提供了强大的地理对象支持。这个"postgis jar包"指的是PostGIS的Java数据库连接器(JDBC)驱动程序,它允许Java应用程序通过JDBC接口与PostGIS数据库...
PostGIS是PostgreSQL数据库系统的一个扩展,专门用于处理地理空间数据。PostGIS 3.0.3是这个扩展的特定版本,它提供了丰富的空间数据管理和分析功能,使得PostgreSQL能够支持地理信息系统(GIS)的应用场景。这个`....
PostgreSQL 12是 PostgreSQL 数据库管理系统的一个重要版本,它带来了许多性能提升和新特性,旨在提供更高效、更安全的数据库服务。PostgreSQL 是一个开源的关系型数据库系统,以其强大的事务处理能力、ACID(原子性...
PostGIS 是一个开源的空间数据库扩展,它为 PostgreSQL 数据库系统添加了对地理对象的支持。PostGIS 1.2.1 版本是该扩展的一个早期版本,提供了基础的空间查询和分析功能,适合初学者和历史研究。在这个版本中,用户...
文件夹中包含postgresql9,6和postGIS这两个开源软件,下载解压后,先安装postgresql,之后将postGIS安装在同一路径下,因为两个软件都是.exe文件,所以直接运行并且一直点击“下一步”就可以了
PostgreSQL 10 和 PostGIS 3.0.1 的整合包(postgresql10-12+postGIS3-0-1.rar)是一个针对 Windows 环境的数据库软件套装,它包含了 PostgreSQL 10 的最新稳定版本(10.12)和 PostGIS 3.0.1 的扩展模块,旨在提供...
PostGIS是 PostgreSQL 数据库的一个扩展,它为地理数据提供了强大的支持。PostGIS 2.2.3 是这个扩展的一个特定版本,提供了丰富的空间操作、分析和几何类型。在这个"postgis-2.2.3.tar.gz"压缩包中,包含了在Linux...
PostgreSql+PostGis 创建空间数据库 PostgreSql 是一个功能强大且开源的关系数据库管理系统,它提供了一个强大的平台来存储和管理数据。PostGis 是一个基于PostgreSql 的空间数据库扩展,它提供了对空间数据的支持...
1. "Linux离线安装postgresql和postgis.docx" - 这可能是一个详细步骤的文档,你应该先阅读这个文档,了解整体流程。 2. "postgresql" - 这可能是PostgreSQL的安装包,包括二进制文件、库和其他依赖项。 3. "postgis...
PostGIS是基于开源数据库系统PostgreSQL的一个扩展,它为地理数据提供了全面的存储、查询和分析功能。在本文中,我们将深入探讨PostGIS 2.5.4版本,这是一个广泛使用的版本,为地理信息系统(GIS)专业人士提供了...
PostGIS是基于PostgreSQL的一个空间数据库扩展,它为PostgreSQL添加了对地理对象的支持,允许用户存储、查询和操作地理空间信息。PostGIS 3.0.1是这个扩展的最新版本,提供了更丰富的地理空间函数库,支持更多的空间...
PostgreSQL 14 和 PostGIS 3.2 是两个在地理信息系统(GIS)领域中非常重要的开源组件。PostgreSQL 是一款强大的对象关系型数据库管理系统,而 PostGIS 是在其基础上扩展的,提供了空间数据类型和相关的操作功能,...
PostGIS则为PostgreSQL提供了空间和地理数据支持,使PostgreSQL能够处理地理信息系统的数据。 首先,确保你的CentOS系统已经更新到最新版本,并安装了必要的编译工具和依赖项。运行以下命令: ```bash sudo yum ...
PostgreSQL与PostGIS的安装和空间数据导入 PostgreSQL是一个功能强大且开源的关系数据库管理系统,而PostGIS则是一个基于PostgreSQL的空间数据库扩展,提供了对空间数据的支持。在本文中,我们将介绍如何安装...
接下来,PostGIS 3.0.11 是一个与PostgreSQL紧密集成的扩展,它为数据库添加了支持地理对象和空间查询的能力。PostGIS允许存储、查询和分析地理信息,如经纬度坐标、行政区划和地理形状。在3.0.11版本中,PostGIS...
PostGIS 是一个强大的开源扩展,它为 PostgreSQL 数据库系统提供了空间和地理对象的支持。这个“postgis25.zip”文件包含的是 PostGIS 2.5 版本的安装组件,适用于 PostgreSQL 12。PostGIS 的主要功能是将地理位置...
PostGIS是 PostgreSQL 数据库管理系统的一个扩展,它为数据库增加了地理空间和几何对象的支持。这个“postgis-2.2.2.tar.gz”压缩包包含了PostGIS的2.2.2版本,这是一个稳定且广泛使用的版本,它在GIS(地理信息系统...