使用pointfromtext和geometry o multipolygon在多边形内进行点

时间:2019-04-02 08:59:29

标签: mysql gis spatial-query

我想确定给定的点在哪个多边形中。我正在使用mysql数据库。点来自文本,多边形位于“形状”列中,作为几何。我正在使用以下查询。

SELECT ap.ac_name
FROM andrapradesh ap
WHERE ST_Contains(PointFromText('POINT(16.504181 78.161779)'), ap.SHAPE)=1;

3 个答案:

答案 0 :(得分:0)

如果要使用ST_Contains(),则应使用

SELECT ap.ac_name 
FROM andrapradesh ap
WHERE ST_Contains(ap.SHAPE, PointFromText('POINT(16.504181 78.161779)');
  

ST_Contains(g1,g2)

     

返回1或0以指示g1是否完全包含g2。这个   测试与ST_Within()相反的关系。

如果要将包含的元素用作第一个参数,则需要ST_Within

SELECT ap.ac_name 
FROM andrapradesh ap 
WHERE ST_Within(PointFromText('POINT(16.504181 78.161779)'),ap.SHAPE);
  

ST_Within(g1,g2)

     

返回1或0以指示g1在空间上是否位于g2之内。这个   测试与ST_Contains()相反的关系。

答案 1 :(得分:0)

是的,我得到了输出。我做的是长时间聊天。

SELECT ap.ac_name 
FROM andrapradesh ap 
WHERE ST_Within(PointFromText('POINT(78.161779 16.504181)'),ap.SHAPE);

答案 2 :(得分:0)

ST_Intersection(g1, g2)

返回表示几何值g1和g2的点集交点的几何。如果任何参数为NULL,则返回值为NULL。

mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)');
mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)');
mysql> SELECT ST_AsText(ST_Intersection(@g1, @g2));

+--------------------------------------+
| ST_AsText(ST_Intersection(@g1, @g2)) |
+--------------------------------------+
| POINT(2 2)                           |
+--------------------------------------+