今天遇到一个问题:
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.4版本,这是一个广泛使用的版本,为地理信息系统(GIS)专业人士提供了...
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 开发版本的...
org.geotools.data.postgis.attributeio org.geotools.data.postgis.collection org.geotools.data.postgis.fidmapper org.geotools.data.postgis.referencing org.geotools.data.property org.geotools.data....
PostGIS是一种开源的空间数据库扩展,它为 PostgreSQL 数据库系统提供了强大的地理对象支持。这个"postgis jar包"指的是PostGIS的Java数据库连接器(JDBC)驱动程序,它允许Java应用程序通过JDBC接口与PostGIS数据库...
PostgreSQL 12是 PostgreSQL 数据库管理系统的一个重要版本,它带来了许多性能提升和新特性,旨在提供更高效、更安全的数据库服务。PostgreSQL 是一个开源的关系型数据库系统,以其强大的事务处理能力、ACID(原子性...
PostGIS是PostgreSQL数据库系统的一个扩展,专门用于处理地理空间数据。PostGIS 3.0.3是这个扩展的特定版本,它提供了丰富的空间数据管理和分析功能,使得PostgreSQL能够支持地理信息系统(GIS)的应用场景。这个`....
PostGIS 是一个开源的空间数据库扩展,它为 PostgreSQL 数据库系统添加了对地理对象的支持。PostGIS 1.2.1 版本是该扩展的一个早期版本,提供了基础的空间查询和分析功能,适合初学者和历史研究。在这个版本中,用户...
kartoza-docker-postgis,带postgis的postgresql13版本的docker镜像。 可直接通过docker导入镜像命令导入。 一个简单的 Docker 容器,用于运行 PostGIS 访问Docker Hub 的页面:...
文件夹中包含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...
PostGIS则为PostgreSQL提供了空间和地理数据支持,使PostgreSQL能够处理地理信息系统的数据。 首先,确保你的CentOS系统已经更新到最新版本,并安装了必要的编译工具和依赖项。运行以下命令: ```bash sudo yum ...
**PostgreSQL 10.11-1与PostGIS 3.0.0-2在Windows x64环境下的安装指南** **一、PostgreSQL 10.11-1介绍** PostgreSQL是一款开源的对象关系型数据库管理系统(ORDBMS),以其强大的功能、稳定性和可靠性而闻名。...
PostgreSql+PostGis 创建空间数据库 PostgreSql 是一个功能强大且开源的关系数据库管理系统,它提供了一个强大的平台来存储和管理数据。PostGis 是一个基于PostgreSql 的空间数据库扩展,它提供了对空间数据的支持...
1. "Linux离线安装postgresql和postgis.docx" - 这可能是一个详细步骤的文档,你应该先阅读这个文档,了解整体流程。 2. "postgresql" - 这可能是PostgreSQL的安装包,包括二进制文件、库和其他依赖项。 3. "postgis...
PostGIS是基于PostgreSQL的一个空间数据库扩展,它为PostgreSQL添加了对地理对象的支持,允许用户存储、查询和操作地理空间信息。PostGIS 3.0.1是这个扩展的最新版本,提供了更丰富的地理空间函数库,支持更多的空间...
PostgreSQL与PostGIS的安装和空间数据导入 PostgreSQL是一个功能强大且开源的关系数据库管理系统,而PostGIS则是一个基于PostgreSQL的空间数据库扩展,提供了对空间数据的支持。在本文中,我们将介绍如何安装...
接下来,PostGIS 3.0.11 是一个与PostgreSQL紧密集成的扩展,它为数据库添加了支持地理对象和空间查询的能力。PostGIS允许存储、查询和分析地理信息,如经纬度坐标、行政区划和地理形状。在3.0.11版本中,PostGIS...