Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql PostGIS地理查询返回一个字符串值_Postgresql_Postgis - Fatal编程技术网

Postgresql PostGIS地理查询返回一个字符串值

Postgresql PostGIS地理查询返回一个字符串值,postgresql,postgis,Postgresql,Postgis,我有一个奇怪的问题。我的应用程序上的lonlat列在开发服务器上运行良好–它的输出是POINTX Y格式的。但是当我将数据移动到生产服务器时,输出是奇怪的 ActionView::Template::错误未定义0101000020E61000541B9C887E7A52C02920ED7F80614440的方法“lon”:字符串: lonlat值(使用SRID:4326编码)将作为字符串读取。我几乎可以肯定,在将数据从开发迁移到生产过程中,数据存在损坏,因为在迁移之前,这不是一个问题 有人知道数

我有一个奇怪的问题。我的应用程序上的lonlat列在开发服务器上运行良好–它的输出是POINTX Y格式的。但是当我将数据移动到生产服务器时,输出是奇怪的

ActionView::Template::错误未定义0101000020E61000541B9C887E7A52C02920ED7F80614440的方法“lon”:字符串:

lonlat值(使用SRID:4326编码)将作为字符串读取。我几乎可以肯定,在将数据从开发迁移到生产过程中,数据存在损坏,因为在迁移之前,这不是一个问题


有人知道数据库架构或列可能导致此问题吗?

几何体字段将其数据存储为WKB。要查看WKT表示,您需要将查询更改为

select ST_Astext(the_geom) as geometry from table
然而,我不知道为什么在您的开发中,在WKB二进制数据和WKT字符串之间有某种隐式转换。?您使用的是什么版本的postgres和postgis

你的应用服务器中有什么语言


你正在使用的是ActiveRecord吗?

我建议你试试类似的东西

float ST_X(geometry a_point);
确保您能够正确读取数据,并确定问题是在数据字段还是其他地方

如果确定问题出在geometry列上,我也会尝试一步完成pg_转储

您可以将pg_dump与选项一起使用

--exclude-table-data=reg_expresion_ _tablename_  
--exclude-table-data=schema.reg_expresion_ _tablename_

这将带来所有架构定义,但不包括表数据,只从表中带来所需的数据。

结果表明,当我终止与服务器的连接以迁移数据时,Rails没有设置架构搜索路径,这意味着在重新连接时没有发现postgis扩展。我必须重新启动服务器才能解决此问题。

是的,它是ActiveRecord。我在我的应用服务器上使用RubyonRails。它被部署到Heroku。难道postgis没有添加到搜索路径中?因为这是我注意到的唯一问题,尽管我不知道为什么我的数据迁移脚本不会导出搜索路径……PostGIS版本是2.1.2。Postgresql版本是9.3。如何在服务器之间移动数据?在新服务器中,列仍然是几何体?在你的应用程序中,你如何阅读专栏?我分两步移动数据。首先,我转储数据库pg_dump-schema only-C-C的模式,并使用psql在远程服务器中恢复该模式。其次,我使用pg_dump-data only-C转储数据,并执行与上面相同的操作来恢复数据。远程服务器上的lonlat列仍然键入geometryPoint,4326。我只记得我做了另一件事。在移动数据之前,我关闭了与服务器的所有其他连接,包括Rails应用程序的连接。不确定这是否造成了我的问题。我的感觉是模式搜索路径与此有关。如果重新建立连接时postgis不在搜索路径中,应用程序将无法使用postgis功能,对吗?但在本地,当我终止连接时,应用程序似乎可以正常运行。所以…我仍然不确定发生了什么。将Postgis函数安装到template1中是一个好主意,这样可以确保任何新的dbs在默认情况下都会有这些函数,并且可以避免您在搜索路径中看到的一些问题。@JohnBarç一个好主意!非常感谢。