Django,Python:坐标正在从 db 自动转换

Django, Python: coordinates are getting converted automatically from db

早上好,

在我的 django 应用程序中,我有第二个数据库(我只能从中读取,而不是我自己的),它内置于我的 settings.py.

其中一列的点坐标类似于...

POINT (390002.1610814564 6001433.406049595)

从数据库中选择数据时...

try:
    with connections['db_second'].cursor() as cursor:
        cursor.execute("SELECT * from ...")
        row = cursor.fetchall()
except Exception as e:
    cursor.close()

...此数据已转换为...

0101000020E964000022936245FEDA1741A4A29D5E0DE85641

有谁知道如何停止这种(自动)转换?或者我是否必须手动将这些数据转换回所需的坐标系?如果是这样:有谁知道这种转换类型是如何调用的?

注:

数据来自postgres-db。

感谢您的帮助,祝您今天愉快!

与您预期的 Well-Known Text (WKT) 相比,这是 Well-Known Binary (WKB) 格式。 Postgis(管理空间数据的 Postgresql 扩展)能够将一种格式转换为另一种格式,因此您可以这样编写查询:

SELECT ST_AsText(geometry) as geometry_wkt
FROM ...

我不知道在 django 中有任何自动执行此操作的方法,但是使用关键字您可以自己找到它。

另请注意,您不必手动编写 SQL 查询,使用 Geo-Django 您可以将 PointField 添加到您的模型并进行类似 django 的查询。看: https://docs.djangoproject.com/en/3.1/ref/contrib/gis/tutorial/