파이 비율, 지구 반경 계수, 검색 지점의 경도와 위도를 기반으로 데이터 테이블에서 검색 지점을 기준으로 Nkm 이내의 데이터를 검색합니다.
CREATE TABLE `location` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `longitude` decimal(13,10) NOT NULL, `latitude` decimal(13,10) NOT NULL, PRIMARY KEY (`id`), KEY `long_lat_index` (`longitude`,`latitude`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into location(name,longitude,latitude) values ('广州东站',113.332264,23.156206), ('林和西',113.330611,23.147234), ('天平架',113.328095,23.165376);mysql> select * from `location`; +----+--------------+----------------+---------------+| id | name | longitude | latitude | +----+--------------+----------------+---------------+| 1 | 广州东站 | 113.3322640000 | 23.1562060000 | | 2 | 林和西 | 113.3306110000 | 23.1472340000 || 3 | 天平架 | 113.3280950000 | 23.1653760000 | +----+--------------+----------------+---------------+
검색 지점 좌표: 타임스퀘어113.323568, 23.146436
6370.996 킬로미터는 반경입니다. 지구
구 위의 두 점 사이의 좌표 거리를 계산하는 공식
C = sin(MLatA)sin(MLatB)cos(MLonA-MLonB) + cos(MLatA)cos(MLatB)
Distance = RArccos(C)*Pi180
계산식에 따른 쿼리문은 다음과 같습니다.
select * from `location` where ( acos(sin(([#latitude#]*3.1415)/180) * sin((latitude*3.1415)/180) + cos(([#latitude#]*3.1415)/180) * cos((latitude*3.1415)/180) * cos(([#longitude#]*3.1415)/180 - (longitude*3.1415)/180))*6370.996)<=1;
쿼리 실행:
mysql> select * from `location` where ( -> acos( -> sin((23.146436*3.1415)/180) * sin((latitude*3.1415)/180) + -> cos((23.146436*3.1415)/180) * cos((latitude*3.1415)/180) * cos((113.323568*3.1415)/180 - (longitude*3.1415)/180) -> )*6370.996 -> )<=1; +----+-----------+----------------+---------------+| id | name | longitude | latitude | +----+-----------+----------------+---------------+| 2 | 林和西 | 113.3306110000 | 23.1472340000 | +----+-----------+----------------+---------------+
이 글에서는 mysql 내의 데이터 검색 관련 내용을 설명합니다. N킬로미터 근처, 관련 정보가 더 필요하면 PHP 중국어 웹사이트를 참고하세요.
관련 권장 사항:
연결 중단 후 자동으로 다시 연결되는 Mysql 방법
php는 HTML 엔터티 번호와 비ASCII 문자열 간의 상호 변환 클래스를 실현합니다.
위 내용은 근처 Nkm 내의 데이터를 검색하는 mysql의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!