동일한 거리를 $length와 length로 계산했을 때 결과값이 다르게 나오길래 어떠한 차이가 있는지 찾아보았다.
$length
Returns the length of a linestring. If you need the length of a border of a polygon, use $perimeter instead. The length calculated by this function respects both the current project’s ellipsoid setting and distance unit settings. For example, if an ellipsoid has been set for the project then the calculated length will be ellipsoidal, and if no ellipsoid is set then the calculated length will be planimetric.
라인스트링의 길이를 반환합니다. 만약 폴리곤의 둘레 길이가 필요하다면, $perimeter를 대신 사용하십시오. 이 함수는 현재 프로젝트의 타원체 설정과 거리 단위 설정을 따라 거리를 계산합니다. 예를 들어 프로젝트에 타원체를 설정했다면 타원체 기반으로 거리를 계산하고, 타원체를 설정하지 않았다면 평면 상에서 거리를 계산합니다.
length
Calculate the length of a geometry line object. Calculations are always planimetric in the Spatial Reference System (SRS) of this geometry, and the units of the returned length will match the units for the SRS. This differs from the calculations performed by the $length function, which will perform ellipsoidal calculations based on the project’s ellipsoid and distance unit settings.
라인 도형 객체의 길이를 계산합니다. 언제나 해당 도형의 공간 좌표계(SRS)에서 평면 측량해서 계산하므로, 반환한 길이의 단위가 SRS 용 단위와 일치할 것입니다. 이것이 $length 함수가 수행하는 계산과 다른 점인데, $length 함수는 프로젝트의 타원체 및 거리 단위 설정을 기반으로 타원체 상에서 계산을 수행할 것입니다.
그러니까, $length는 지구타원체(ellipsoid)를 기반으로 계산하고, length는 공간 좌표계(SRS)를 기반으로 거리를 계산한다는 뜻으로 이해가 된다.
줄자로 길이를 재면 $length, 레이저로 길이를 재면 length의 느낌.
당연하겠지만 본인에게 어떤 길이 정보가 필요한지 판단한 후 선택하면 될 것 같다. 일반적인 지도 작업의 경우 투영좌표계(PCS)인 평면직각좌표계(TM)를 사용하는 경우가 대부분이나, 실제 길이는 타원체의 형상을 따르기 때문에 일반적으로는 $length를 사용하면 되지 않을까 싶다.
동일한 거리를 $length와 length로 계산해 보고 측정 도구와 비교해 보기
- $length 함수 및 측정 도구(타원형) : 537.884 m, 693.215 m
- length 함수 및 측정 도구(직교 좌표) : 537.892 m, 693.225 m
두 방법의 길이 차이는 0.008 m, 0.01 m 정도 확인된다. 전체 길이 대비 0.001% 정도의 차이로 미미하긴 하지만 길이가 길어지면 길어질수록 눈에 띌 테고, 언젠가 결과값이 다르다며 고민에 빠질 수 있으니 알아두면 좋을 것 같다.