Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何将点文字转换为几何图形_Postgresql_Postgis - Fatal编程技术网

Postgresql 如何将点文字转换为几何图形

Postgresql 如何将点文字转换为几何图形,postgresql,postgis,Postgresql,Postgis,我已经在数据库中安装了postgis。现在我的数据库中有1个区域,比如(-79.4609576808001,43.97266801837)) 我希望此区域转换为几何体类型。我在谷歌上搜索过,发现St_geomfromText会将文本转换为几何体类型 我的质询如下: SELECT ST_GeomFromText(region,4326) from "erpAssets"; 但是它给出了一个错误,它说没有函数与st_geomfromtext匹配。看起来st_geomfromtext需要的是字符串,

我已经在数据库中安装了postgis。现在我的数据库中有1个区域,比如(-79.4609576808001,43.97266801837)) 我希望此区域转换为几何体类型。我在谷歌上搜索过,发现St_geomfromText会将文本转换为几何体类型

我的质询如下:

SELECT ST_GeomFromText(region,4326) from "erpAssets";

但是它给出了一个错误,它说没有函数与st_geomfromtext匹配。看起来st_geomfromtext需要的是字符串,而不是变量。提到函数是不可变的

这个问题给出了一种从变量构建字符串的方法。

看来Chris Traver的解决方案应该适合你:

ST_GeomFromText('POINT(' || row_data.longitude || ' ' || row_data.latitude || 
 ' ' || row_data.altitude || ')', 4326)
所以你只需要访问点的x和y部分。
ST_X(point)
ST_Y(point)
将分别返回PostGIS中某个点的X和Y坐标,但我不知道
region
是什么数据类型,我认为它不是点类型。

看起来ST_GeomFromText需要的是字符串,而不是变量。提到函数是不可变的

这个问题给出了一种从变量构建字符串的方法。

看来Chris Traver的解决方案应该适合你:

ST_GeomFromText('POINT(' || row_data.longitude || ' ' || row_data.latitude || 
 ' ' || row_data.altitude || ')', 4326)
所以你只需要访问点的x和y部分。
ST_X(point)
ST_Y(point)
将分别返回PostGIS中一个点的X和Y坐标,但我不知道
区域的数据类型是什么,我不认为它是点类型。

您也可以使用ST_MakePoint,它可能更干净,因为您不必将纬度和经度值作为文本连接起来。与ST_SetGrid一起使用,将坐标参考系设置为4326,例如

Select ST_SetSrid(ST_MakePoint(lon, lat),4326) from sometable;
将返回一个几何体类型。请注意,顺序是lon/lat(x/y),这是由于人们在日常讲话中说lat/lon而引起很多混乱的原因

ST_GeomFromText通常在您拥有众所周知的文本(WKT)格式的几何图形时更有用,例如

Select ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326);
如果您的数据的格式为(-79.4609576808001,43.97266801837)),并且您不想像我上面建议的那样将其拆分,则与ST_GeomFromText一起使用的点的正确格式为:

Select ST_GeomFromText('POINT(-79.4609576808001 43.9726680183837)', 4326)
其中SRID是可选的,但建议使用


有关更多信息,请参阅。

您还可以使用ST_MakePoint,它可能更干净,因为您不必将纬度和经度值作为文本连接起来。与ST_SetGrid一起使用,将坐标参考系设置为4326,例如

Select ST_SetSrid(ST_MakePoint(lon, lat),4326) from sometable;
将返回一个几何体类型。请注意,顺序是lon/lat(x/y),这是由于人们在日常讲话中说lat/lon而引起很多混乱的原因

ST_GeomFromText通常在您拥有众所周知的文本(WKT)格式的几何图形时更有用,例如

Select ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326);
如果您的数据的格式为(-79.4609576808001,43.97266801837)),并且您不想像我上面建议的那样将其拆分,则与ST_GeomFromText一起使用的点的正确格式为:

Select ST_GeomFromText('POINT(-79.4609576808001 43.9726680183837)', 4326)
其中SRID是可选的,但建议使用



有关更多信息,请参阅。

是否将“(-79.4609576808001,43.97266801837)”作为示例条目?文档似乎希望在点值前面有一个几何图形类型。所以它可能需要“点”在字符串中。例如,“选择ST_GeomFromText('POINT(-71.064544 42.28787);”是的,这是一个示例条目。我该怎么做呢?因为我有很多条目,无法硬编码值((-79.4609576808001,43.97266801837)),这是一个示例条目吗?文档似乎希望在点值前面有一个几何图形类型。所以它可能需要“点”在字符串中。例如,“选择ST_GeomFromText('POINT(-71.064544 42.28787);”是的,这是一个示例条目。我该怎么做呢?由于我有许多条目,无法硬编码值区域数据类型为字符串,它包含2个点x和y我应该如何使用这些点?我已检查此查询“选择ST_GeomFromText('POINT(-71.064544 42.28787);”这是运行F9,你的专栏真的是这样的吗?(-79.4609576808001,43.97266801837))还是更像79.4609576808001,43.97266801837。这将决定使用ST_Makepoint或ST_GeomFromText是否更好,可能是midfield99首先建议的方式。先生,我已成功转换为POINT(-79.4609576808001 43.97266801837)。现在告诉我最后一件事ST_GeomFromText将只转换一个点。有没有办法转换多个点?区域数据类型是字符串,它包含2个点x和y我应该如何使用这些点?我已经检查了这个查询“选择ST_GeomFromText('point(-71.064544 42.28787);”这是运行F9,你的专栏真的是这样的吗?(-79.4609576808001,43.97266801837))还是更像79.4609576808001,43.97266801837。这将决定使用ST_Makepoint或ST_GeomFromText是否更好,可能是midfield99首先建议的方式。先生,我已成功转换为POINT(-79.4609576808001 43.97266801837)。现在告诉我最后一件事ST_GeomFromText将只转换一个点。有什么方法可以转换多个点吗?谢谢你的回答。你能告诉我一件事吗?我想从数据库中获取数据,所以我想把select语句放在st_geomfromtext()中,就像select st_geomfromtext(select语句)一样。“还有人这样做吗?”MuneemHabib。是的,有,但是你能澄清一下你的数据是什么样子的吗?你真的有一列看起来像(-79.4609576808001,43.97266801837))还是有一列单独的经纬度值。st_geomfromText爵士只会将一个点转换为几何体。有没有办法将多个点转换为几何体?是的,我的数据为(-79.4609576808001,43.97266801837)),我已将该数据转换为点(-79.4609576808001 43.97266801837)format@MuneemHabib如果您的列现在的格式为点(-79.4609576808001 43.97266801837),并且该列称为pt,类型为varchar,你有一个几何列,你想填充称为geom,然后你可以运行:update“erp