위도 및 경도의 ST_Area()
마리아에 여러 개의 좌표가 있는 다각형이 있는데DB:
POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))
이 폴리곤의 면적을 MariaDB로 다음과 같이 계산하고 싶습니다.
SELECT ST_Area(ST_GeomFromText('POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))'))
위의 쿼리 결과는 다음과 같습니다.15.546039738650009
그건 잘못된 거야이 도구로 다각형 면적을 계산했는데119116192747.1
.
mariaDB가 이 폴리곤에 면적을 올바르게 계산하기 위한 위도와 경도가 포함되어 있음을 이해시키려면 어떻게 해야 합니까?
MariaDB 문서에 따르면 이 기능은 제공되지 않습니다.
MariaDB에서 SRID 값은 지오메트리 값과 연관된 정수일 뿐입니다.모든 계산은 유클리드(평면) 기하학을 가정하여 이루어집니다.
단, Mysql 8.0.13에서는 폴리곤 면적을 다음과 같이 계산할 수 있습니다.ST_Area()
:
호환되지 않는 변경:이전에는 ST_Area()는 Decartian Spatial Reference System(SRS; 데카르트 공간 참조 시스템)을 가진 지오메트리 인수만 지원했으며 지리적 SRS를 지정하는 지오메트리 인수를 사용하여 호출하면 오류가 발생했습니다.ST_Area()는 이제 지리적 SRS가 있는 지오메트리 인수를 지원하고 측지 영역을 평방 미터 단위로 반환합니다.
따라서 데이터베이스를 MYSQL > 8.0.13으로 변경하면 다음 쿼리를 사용하여 폴리곤 영역을 계산할 수 있습니다.
SELECT ST_Area(ST_PolyFromText('POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))', 4326));
MariaDB는 SRID를 저장하며 혼합 SRID를 사용하여 지오메트리를 작업하려고 할 때 불만을 표시하지만 실제로 공간 참조/투영 연산을 수행하지는 않습니다.어떤 SRID를 사용하셔도 세상은 평평합니다.
MySQL은 MySQL 5.7까지 동일한 기능을 수행했지만 MySQL 8.0부터는 최소한 일종의 진정한 공간 참조를 지원합니다.
예: 이제 위도 2도 사이의 거리를 "1"이 아닌 ~111km로 정확하게 반환합니다.
> SELECT st_distance(st_geomfromtext('POINT(50.0 10)', 4326), st_geomfromtext('POINT(51.0 10)', 4326)):
111239.69315297529
ST_AREA()에 대한 공간 참조 지원은 8.0.13 이후에만 지원됩니다.그 전에 0(직교 평면)과 다른 SRID를 사용하면 다음과 같이 됩니다.
> SELECT ST_Area(ST_GeomFromText('POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))', 4326));
ERROR 3618 (22S00): st_area(POLYGON) has not been implemented for geographic spatial reference systems.
MySQL > = 8.0.13을 사용하면 예상한 결과를 얻을 수 있습니다.
> SELECT ST_Area(ST_GeomFromText('POLYGON((50.4668 -6.90665,51.73607 0.14657,55.3032 -4.52724,50.4668 -6.90665))', 4326));
119085646585.42969
언급URL : https://stackoverflow.com/questions/54884351/st-area-for-latitude-and-longitude
'programing' 카테고리의 다른 글
알기 쉽게 설명하자면 Java에서 Runnable이란 무엇입니까? (0) | 2022.12.09 |
---|---|
IntelliJ IDEA Project SDK 설정 방법 (0) | 2022.12.09 |
마지막 개별 레코드 세트 가져오기 (0) | 2022.11.29 |
Mysql 5.7에서 JSON 어레이 내의 특정 개체를 갱신하는 방법 (0) | 2022.11.29 |
PHP 응용 프로그램이 도커 작성을 사용하여 MariaDB에 연결할 수 없습니다. (0) | 2022.11.29 |