programing

위도 및 경도의 ST_Area()

goodsources 2022. 11. 29. 21:50
반응형

위도 및 경도의 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

반응형