-
Creëer uw punten met
Point
waarden vanGeometry
gegevenstypen inMyISAM
tafel. Vanaf Mysql 5.7.5,InnoDB
tabellen ondersteunen nu ookSPATIAL
indices. -
Maak een
SPATIAL
index op deze punten -
Gebruik
MBRContains()
om de waarden te vinden:SELECT * FROM table WHERE MBRContains(LineFromText(CONCAT( '(' , @lon + 10 / ( 111.1 / cos(RADIANS(@lat))) , ' ' , @lat + 10 / 111.1 , ',' , @lon - 10 / ( 111.1 / cos(RADIANS(@lat))) , ' ' , @lat - 10 / 111.1 , ')' ) ,mypoint)
, of, in MySQL 5.1
en hoger:
SELECT *
FROM table
WHERE MBRContains
(
LineString
(
Point (
@lon + 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat + 10 / 111.1
),
Point (
@lon - 10 / ( 111.1 / COS(RADIANS(@lat))),
@lat - 10 / 111.1
)
),
mypoint
)
Dit selecteert alle punten ongeveer binnen het vak (@lat +/- 10 km, @lon +/- 10km)
.
Dit is eigenlijk geen doos, maar een bolvormige rechthoek:breedte- en lengtegraad gebonden segment van de bol. Dit kan verschillen van een gewone rechthoek op het Franz Joseph Land , maar vrij dichtbij op de meeste bewoonde plaatsen.
-
Pas extra filtering toe om alles binnen de cirkel te selecteren (niet het vierkant)
-
Pas eventueel extra fijne filtering toe om rekening te houden met de grote cirkelafstand (voor grote afstanden)