gpt4 book ai didi

postgresql - 3D 点到 2D 点的转换 - Postgresql

转载 作者:行者123 更新时间:2023-11-29 13:26:05 42 4
gpt4 key购买 nike

我正在为地理空间应用程序构建后端。它涉及纬度、经度和高度的存储(可选)。

表中的列 Location 类型为 - Location geography(POINtZ,4326)

插入语句"INSERT INTO someTable (Location) VALUES(ST_GeographyFromText('SRID=4326;POINT(?)');

我在插入 3d 点(字符串格式)代替“?”时没有问题,但是如果我只有经度和纬度,我该如何处理?出于显而易见的原因,我不想操纵位置字符串以将第三个值(高度)设置为零。

我希望有人能帮我解决这个问题。

提前致谢。

最佳答案

您的列是 3d 点类型 (POINTZ)。这就是为什么您必须为其提供 3d 点。我认为有两种方法可以解决您的问题:

1.使用以下方法将您的列转换为geometry(point, 4326)(二维点)类型:

alter table someTable
alter Location type geometry(point, 4326)
using st_force2d(Location);

然后你就可以插入二维点了。

2.像这样修改你的插入查询:

INSERT INTO someTable (Location)
VALUES(st_force3d(ST_GeographyFromText('SRID=4326;POINT(?)'));.

在这种情况下,您将 2d 点传递给它,查询将使用零作为第三维将其转换为 3d 点。

如果 z 维度的零值不是一个选项,那么您可以在表格中有一列来显示几何的维度。例如:

alter table someTable add geomdim int;

然后在插入时用当前尺寸填充它。例如:

with geom_t as (
select st_geomfromtext('POINT(?)', 4326) as geom
)
insert into someTable(Location, geomdim)
select st_force3d(geom)::geography, st_coorddim(geom) from geom_t;

关于postgresql - 3D 点到 2D 点的转换 - Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33602232/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com