mysql 经纬度在某个多边形内
时间: 2023-08-06 21:14:26 浏览: 98
要查询在某个多边形内的经纬度数据,可以使用MySQL的空间函数ST_CONTAINS。ST_CONTAINS函数可以用来判断一点是否在一个多边形内部。
首先,在表格中创建一个字段用于存储经纬度数据,并且将其设置为MySQL的空间数据类型point。例如:
```sql
ALTER TABLE `table_name` ADD COLUMN `location` POINT NOT NULL AFTER `id`;
```
然后,插入经纬度数据:
```sql
INSERT INTO `table_name` (`location`) VALUES (POINT(116.397128, 39.916527));
```
接下来,在查询时使用ST_CONTAINS函数来判断点是否在指定的多边形中。例如:
```sql
SELECT *
FROM `table_name`
WHERE ST_CONTAINS(POLYGON((116.403322 39.920255, 116.405795 39.912245, 116.394088 39.908255, 116.391615 39.916266, 116.403322 39.920255)), `location`);
```
上面的查询语句中,POLYGON函数用于定义一个多边形,并且传入多边形的各个点的经纬度坐标。在ST_CONTAINS函数中,第一个参数是多边形,第二个参数是要判断的点。如果点在多边形内,那么ST_CONTAINS函数会返回1,否则返回0。查询结果即为在指定多边形内的经纬度数据。
相关问题
mysql判断经纬度是否在多边形内
可以使用MySQL的GIS函数来判断一个经纬度点是否在一个多边形内部。具体步骤如下:
1. 创建一个多边形的坐标点集合,以空间数据类型存储在MySQL中。
2. 将待判断的经纬度点转换成MySQL的空间数据类型。
3. 使用MySQL的ST_CONTAINS函数判断该点是否在多边形内部。该函数的参数为两个空间数据类型,返回值为1表示在内部,为0表示在外部。
示例代码如下:
```
-- 创建多边形
CREATE TABLE polygon (
id INT PRIMARY KEY,
name VARCHAR(50),
coords POLYGON
);
INSERT INTO polygon VALUES (1, 'polygon1',
POLYGON((
-122.39988899230957 37.793609848134154,
-122.40020227432251 37.79243807767399,
-122.39832878112793 37.79230285665168,
-122.39806461334228 37.793546587392756,
-122.39988899230957 37.793609848134154
)));
-- 判断点是否在多边形内部
SELECT ST_CONTAINS(
POLYGON((-122.39997863769531 37.79328199520101)),
coords) AS is_inside
FROM polygon;
```
上面的代码创建了一个名为`polygon`的表,其中存储了一个多边形的坐标点集合。接着,使用ST_CONTAINS函数判断一个经纬度点是否在多边形内部,返回值为1表示在内部。
mysql 经纬度 矩形_SQL判断经纬度在矩形内
判断经纬度是否在矩形内可以使用MySQL中的Spatial数据类型和函数来处理。具体步骤如下:
1. 首先需要在创建表时,将经纬度存储在MySQL的Point类型中,例如:
```
CREATE TABLE `location` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`location` point NOT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `location` (`location`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
2. 然后可以使用MySQL中提供的ST_Contains函数来判断经纬度是否在矩形内,例如:
```
SELECT * FROM `location` WHERE ST_Contains(ST_PolygonFromText('POLYGON((lng1 lat1, lng2 lat2, lng3 lat3, lng4 lat4, lng1 lat1))'), `location`);
```
其中,lng1,lat1、lng2,lat2、lng3,lat3、lng4,lat4分别表示矩形四个顶点的经纬度,需要根据实际情况进行替换。如果查询结果不为空,则说明存在经纬度在该矩形内。
注意:在使用ST_Contains函数时,需要确保MySQL的版本支持Spatial数据类型和函数。