8

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

现在,我需要更新位置列,并且我知道我可以使用给定位置的正确文本表示来使用 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)

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

提前致谢!

4

1 回答 1

12

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

位置 = 'SRID=4326;POINT(-118.0488106 33.9346343)'

这将正确更新 geometry(point,4326) 列,当您在表中进行选择时,该列的值是预期的值:

“0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040”

多谢你们!

于 2013-03-07T18:40:08.080 回答