我有一张桌子,上面有80万条记录,包括经度和纬度。数据源未创建几何,因此我一直在寻找如何执行此操作的方法。我知道有ST_MakePoint(x,y,SRID),但是所有文档和其他线程都显示了如何创建单点。如何使用这些列创建几何类型?

评论

您是说从这些点创建线吗?因为点就像线和多边形一样都是几何形状...因此,如果您要根据这些点创建线,请查看Paul Ramsey的最新博客文章:blog.cleverelephant.ca/2015/03/making-lines-from -points.html

不。我的意思是想将它们转换为要在空间查询中使用的几何类型。看来我的问题已经回答了,所以谢谢!!

#1 楼

较新的PostGIS版本允许以下语法,但更为通用:
ALTER TABLE your_table ADD COLUMN geom geometry(Point, 4326);

,然后使用ST_SetSrid和ST_MakePoint填充列:
UPDATE your_table SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);

在此处查看文档:

https://postgis.net/docs/ST_SetSRID.html
https://postgis.net/docs/ST_MakePoint.html


#2 楼

如果尚未添加几何列(此处假设EPSG:4326):

SELECT AddGeometryColumn ('your_table','geom',4326,'POINT',2);


然后UPDATE,传入x和y字段的名称:

UPDATE yourtable SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326);


这将更新整个表,除非您包含WHERE子句

参考ST_SetSrid:https://postgis.net/docs /ST_SetSRID.html

评论


我认为ST_SRID应该是ST_SetSRID。使用ST_SRID时出现错误

– Vipin Gupta
19年5月17日在11:48