在不查询数据库的情况下将lat-long转换为PostGIS几何体

时间:2013-03-07 16:15:29

标签: postgresql sqlalchemy postgis

我在postgresql中有一个带有PostGIS几何(point,4326)列(位置,使用SRID 4326)的表,我有一个使用SQL Alchemy更新表(其余列)的Python应用程序没有任何问题。

现在,我需要更新位置列,我知道我可以使用给定位置的正确文本表示来使用SQL Alchemy更新列而无需使用GEOAlchemy,例如我可以使用值更新列:'0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040'

对应lat:33.9346343 long:-118.0488106

问题是:有没有办法用Python计算这个'0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040'这个(33.9346343,-118.0488106)作为输入而不查询数据库?或使用适当的文本输入更新列的任何方法?

我知道我可以使用SQLAlchemy来执行此查询:

select st_setsrid(st_makepoint(-118.0488106, 33.9346343),4326)

并获取更新列的值,但我想避免这种情况。

提前致谢!

1 个答案:

答案 0 :(得分:11)

这个问题的解决方案比看起来容易。要使用文本和输入lat-long更新字段,我需要做的就是在文本赋值中定义SRID:

location =' SRID = 4326; POINT(-118.0488106 33.9346343)'

这将正确更新几何体(point,4326)列,当您在表格中执行select时,列的值是预期的值:

" 0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040"

谢谢你们!