我有两个表:
CREATE TABLE `locations` (
`id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(255) NOT NULL,
`latitude` DECIMAL(10,7) NOT NULL,
`longitude` DECIMAL(10,7) NOT NULL,
`point` GEOMETRY NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `location_boundries` (
`id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(255) NOT NULL,
`geo_json` JSON NULL DEFAULT NULL,
`geom` GEOMETRY NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
locations
表包含国家,地区,城市和城镇的经/纬度坐标。
location_boundries
包含geojson格式的国家和地区的边界坐标-请注意,这些坐标是多边形和
多多边形,例如:
1149361, Afghanistan, {"type": "Polygon", "coordinates": [[[61.83, 31.022], [61.777, 31.302],21], ... [61.83, 31.022]]]}
783754, Albania, {"type": "MultiPolygon", "coordinates": [[[[19.467, 40.945], [19.437, 41.146], ... [19.461, 40.946]]]]}
我希望能够返回某个国家或地区范围内的位置。为了解决这个问题,我添加了一个几何 列到两个表(点和几何)。
所以我想我可以做这样的事情:
SELECT locations.name
FROM locations
INNER JOIN location_boundries ON ST_CONTAINS(location_boundries.geom, locations.point)
AND location_boundries.name = 'North London';
上面的SQL是否可以处理多边形和多多边形类型的边界?
当边界类型可以是多边形或多义多边形,或者仅使用geojson列进行空间搜索时,如何将geojson转换为geom列?
在locations表上使用lat和long填充点几何列的mysql语法是什么-以下两个语句是否相同?
UPDATE locations SET `point` = ST_GeomFromText( CONCAT( 'POINT(', longitude, ' ', latitude, ')' ) );
UPDATE locations SET `point` = Point(longitude, latitude)
我们将提供一些帮助和指导。