programing

mariaDb, mySQL을 사용하여 반경 내의 모든 공간 유형 지점(km)을 가져옵니다.

randomtip 2022. 9. 5. 22:45
반응형

mariaDb, mySQL을 사용하여 반경 내의 모든 공간 유형 지점(km)을 가져옵니다.

여기 문제가 있습니다.

이미 그것에 대해 몇 가지 조사를 했지만, 그것에 대해 명확하고 잘 설명되는 해결책을 찾지 못했습니다.어떤 사람들은 다음과 같은 기능에 대해 이야기하고 있다.st_distance또는st_withinmysql/sysql adb 버전을 참조하고 있습니다만, 이러한 함수는 실제 문서가 없는 것 같고, 제 문제에 맞지 않는 것 같습니다.

그래서 내가 하려고 하는 것은:

모든 공간 포인트 가져오기(lat,ln)RADIUS가 정의되어 있는 원내에 있습니다.KILOMETRES.

사용자는 반경 1 ~100km를 지정하고 해당 반경 내에 있는 모든 데이터베이스 레코드를 받습니다.

"points" 테이블은 다음과 같습니다.

ID -- POINT -- SOMETEXT

포인트는 에 사용되는 공간 유형 포인트입니다.mySql(>5.6) / mariaDb(5.5.40) (lat,lng)

따라서 쿼리는 다음과 같이 표시됩니다.

"SELECT * FROM points WHERE (function... to get distance) <= definedDistance"

도와주셔서 감사합니다.

여기에 쓴 내용에 동의하지 않습니다.

어떤 사람들은 mysql/mariadb 버전을 나타내는 st_distance나 st_within과 같은 함수에 대해 이야기하지만, 이러한 함수는 실제 문서가 없는 것 같고, 제 문제에 맞지 않는 것 같습니다.

st_distance 문서화되어 있어 고객님의 문제에 매우 잘 맞는 것 같습니다.

예를 들어 반지름 1과 중심점 (2, 2)의 원 안에서 점을 찾습니다.

CREATE TABLE geom (g GEOMETRY);

INSERT INTO geom VALUES (GeomFromText('POINT(1 1)'));
INSERT INTO geom VALUES (GeomFromText('POINT(1 2)'));
INSERT INTO geom VALUES (GeomFromText('POINT(1 3)'));
INSERT INTO geom VALUES (GeomFromText('POINT(1 4)'));
INSERT INTO geom VALUES (GeomFromText('POINT(2 2)'));
INSERT INTO geom VALUES (GeomFromText('POINT(3 3)'));
INSERT INTO geom VALUES (GeomFromText('POINT(4 4)'));

SELECT AsText(g) from geom where ST_Distance(point(2,2), g) <= 1

출력:

POINT(1 2)
POINT(2 2)

언급URL : https://stackoverflow.com/questions/28021577/get-all-spatial-type-points-within-radius-in-km-with-mariadb-mysql

반응형