gpt4 book ai didi

sql - 从两个数字构造几何类型

转载 作者:行者123 更新时间:2023-11-29 14:05:09 24 4
gpt4 key购买 nike

Similar question

我想从我现有的两个专栏中创建第三个专栏。假设我当前的表(坐标)如下所示:

(table: coords)
+----------------+------+
| x | y |
+----------------+------+
| 1 | 0 |
+----------------+------+
| 1 | 1 |
+----------------+------+

我想从其他两列创建几何类型的第三列(来自 PostGIS ),并将此列添加到该表中。决赛 table 应该是这样的:

(table: pointsT)
+-----+----------+------+----+-----
| x | y | coord |
+----------------+------+----------
| 1 | 0 | (1, 0) |
+----------------+------+----------
| 1 | 1 | (1, 1) |
+----------------+------+----------

我想从中创建一个表。像这样的东西:

CREATE TABLE pointsT(x text, y text, point geometry);

INSERT INTO points(x, y, point)
SELECT CO.x, CO.y, CO.'POINT(CO.x CO.y)' AS p FROM coords AS CO;

编辑:来自埃德温斯的回答使用 Edwins 的回答,这将是完整的命令:

CREATE TABLE pointsT(x text, y text, point geometry);

INSERT INTO points(x, y, point)
SELECT CO.x, CO.y, ST_AsText(ST_SetSRID(ST_Point(CO.x CO.y), 4326) AS wgs84long_la FROM coords AS CO;

最佳答案

  • 没有“Postgre GIS”这样的东西,你是说PostGis .

  • point是标准 PostgreSQL 的常规类型。您不需要为此使用 PostGis,但它在 PostGis 中的使用也很多,当然。

  • 从两个数字创建一个点的最简单和最有效的方法是 point() function .它需要两个 double precision 数字,但也可以接受 integernumeric:

SELECT *, point(x,y) AS coord FROM tbl;

几何

要构建 PostGis geometry 类型,您需要定义 SRID此外,它标识了空间引用系统。有几个geometry constructors可用的。由于您从两个数字列开始,我建议:

SELECT ST_SetSRID(ST_Point(x, y), 4326) As wgs84long_lat;

切勿混淆经度和纬度。 More details in the manual.

关于sql - 从两个数字构造几何类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039826/

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