MariaDB: 위도 및 경도 점의 원형 반지름이 다각형과 교차하는지 확인
나는 구글 지도 검색물을 만들고 있는데, 그 곳에서 위치와 '반경'을 지정할 수 있다.그런 다음 반경 검색이 교차하는 정의된 영역(DB에서 폴리곤으로 정의됨)의 결과를 가져오려고 합니다.
현재 다음 쿼리를 사용하고 있습니다(명확한 설명을 위해 php 코드).
$km = ($miles * 1.852) * 1000;
$sql = "SELECT * FROM Regions WHERE ST_Intersects(poly, ST_BUFFER(ST_GeomFromText('POINT({$lat} {$lng})'), {$km}))"
지역 데이터베이스는 위도 및 경도 값의 폴리곤 데이터를 저장하는 "폴리곤" 필드를 사용하여 설정됩니다.하지만 반경 5마일에서 검색하면 데이터베이스에 있는 모든 폴리곤을 수신할 수 있습니다.
제가 발견한 다른 느슨한 답변을 바탕으로 질문을 해봤는데, 지금 제가 뭘 잘못하고 있는 건지 잘 모르겠어요.온라인에서 발견된 문제의 대부분은 폴리곤 또는 반지름 내의 특정 위치를 찾는 것이지만, 여기서는 반경 검색이 제가 만든 폴리곤과 교차하는지 확인해야 합니다.
어떤 도움이라도 주시면 감사하겠습니다!감사합니다.
비슷한 문제를 안고 있는 사람을 위해 제가 안고 있는 문제를 발견했습니다.
데이터베이스에 'polygon' 값을 저장할 때 값을 '경도 위도'로 지정해야 하는데, 저는 반대로 저장했습니다.lng/lat이 x/y 형식이기 때문일 것입니다.
그런 다음 https://github.com/bcalik/php-circle-to-polygon에 있는 클래스의 메서드를 사용하여 원형 폴리곤을 생성했습니다.그런 다음 다음과 같이 사용:
SELECT id FROM Regions WHERE ST_Intersects(poly, GEOMFROMTEXT('POLYGON((" . implode(",", $circle) . "))', 0))
어디에$circle
의 배열입니다.$longitude $latitude
string 값
ST_BUFFER 메서드는 아직 동작하고 있습니다만, 지금은 동작하고 있습니다.더 이상 조작할 생각은 없습니다.
언급URL : https://stackoverflow.com/questions/52994446/mariadb-finding-if-a-circular-radius-from-a-latitude-and-longitude-point-inter
'programing' 카테고리의 다른 글
클라이언트에 JavaScript 파일을 강제로 새로 고치려면 어떻게 해야 합니까? (0) | 2022.09.13 |
---|---|
JSON을 알파벳 순으로 첫 번째 문자로 정렬 (0) | 2022.09.13 |
언제 Memcached 대신 Memcache를 사용해야 합니까? (0) | 2022.09.13 |
MariaDB Galera 클러스터: 운영 서버에서 wresp_sst_method 변경 (0) | 2022.09.13 |
PHP/Larabel을 사용하여 MySQL/MariaDB에서 모든 POI를 얻는 데 더 빠른 접근 방식은 무엇입니까? (0) | 2022.09.13 |