-
Opret dine point ved hjælp af
Point
værdier afGeometry
datatyper iMyISAM
bord. Fra og med Mysql 5.7.5,InnoDB
tabeller understøtter nu ogsåSPATIAL
indekser. -
Opret en
SPATIAL
indeks på disse punkter -
Brug
MBRContains()
for at finde værdierne: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)
, eller i MySQL 5.1
og derover:
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
)
Dette vil vælge alle punkter omtrent inden for feltet (@lat +/- 10 km, @lon +/- 10km)
.
Dette er faktisk ikke en kasse, men et sfærisk rektangel:bredde- og længdegradsbundne segment af kuglen. Dette kan adskille sig fra et almindeligt rektangel på Franz Joseph Land , men ret tæt på den på de fleste beboede steder.
-
Anvend yderligere filtrering for at markere alt inden for cirklen (ikke firkanten)
-
Anvend eventuelt yderligere finfiltrering for at tage højde for den store cirkelafstand (for store afstande)