检查点是否在多边形中给出空值

checking if point is in polygon giving null values

有很多 post 与此相关,但大多数都是旧的,而且似乎有很多不同的方法。

我正在尝试查看点是否存在于多边形内,但它给出了空值,即使它是多边形上的点。

这是我的代码。

select ST_contains(ST_geomfromtext('
      Polygon((127.090656 37.517137, 
      127.092416 37.512525,
      127.098445 37.513836,
      127.095227 37.518346))'), Point(127.090656, 37.517137));

提前致谢。

在 Mysql 中,您需要关闭多边形,因此我必须再次在多边形的末端添加第一个点。

select ST_contains(ST_geomfromtext('
      Polygon((**127.090656 37.517137**, 
      127.092416 37.512525,
      127.098445 37.513836,
      127.095227 37.518346,
      **127.090656 37.517137**))'), Point(127.090656, 37.517137));

现在解决了我的问题

清洁

我可以将多边形设置为

SET @location_1 = ST_geomfromtext('
      Polygon((**127.090656 37.517137**, 
      127.092416 37.512525,
      127.098445 37.513836,
      127.095227 37.518346,
      **127.090656 37.517137**))');

select ST_contains( @location_1, Point(127.090656, 37.517137));

这对我来说更干净。但也许 db 中的 @location_1 需要更多内存(我不确定)?