我有一个点列表(lat和lon(:
像这样:
[107.8188205,16.0573256],
[107.8188192,16.0576399],
[107.8188139,16.0580677],
[107.8187816,16.0585772],
[107.8188316,16.0589462],
[107.818921,16.059341],
[107.8191381,16.0600537],
[107.8194213,16.0606733]
我想把这些点转换成PostgreSQL的geom
(这些点内部的区域(。
然后我可以使用函数st_within
来检查一个点是否在一个区域内。
有一个函数ST_MakePolygon,它从点生成多边形
示例
SELECT ST_MakePolygon( ST_GeomFromText('LINESTRING(75 29,77 29,77 29, 75 29)'));
https://postgis.net/docs/ST_MakePolygon.html
您可以从数据中生成这样的字符串LINESTRING(75 29,77 29,77 29, 75 29)
,并将其传递到sql查询中
或另一示例
SELECT ST_MakePolygon(ST_GeomFromGeoJSON(
CONCAT('{"type":"LineString","coordinates":[',
'[107.8188205,16.0573256],
[107.8188192,16.0576399],
[107.8188139,16.0580677],
[107.8187816,16.0585772],
[107.8188316,16.0589462],
[107.818921,16.059341],
[107.8191381,16.0600537],
[107.8194213,16.0606733],
[107.8188205,16.0573256],
[107.8188205,16.0573256]
', ']}')
))
最后一点必须与第一点相同