typed op• 데이터 종류: points → points
• 호출: fullseye.apply(img, "tb_dem_ecef_to_geodetic", a=0.5, b=0.5)(2-D 는 이미지 1 장 + 스칼라 노브 2 개 a,b∈[0,1] 모델)
*그림 없음: 타입은 닿지만 범용 합성 입력이 이 op의 정의역 밖 —— ECEF は地球表面座標(中心から ~6.4M m)を要るが、画像由来の合成点は原点付近で楕円体の evolute 内に落ち必ず拒否される. 사용법은 아래 실행 가능한 예제를 볼 것.*
ECEF → 측지 좌표. 반환값은 (..., 3)의 (위도[도], 경도[도], 높이[m]).
Bowring (1976)의 닫힌 식에 가까운 해법. 왕복(측지→ECEF→측지) 오차는 어디를 표본으로 삼았느냐에 따라 1자릿수 이상 움직이므로, 범위를 붙여 적는다(2026-09-08 재측정. 이전에는 “위도·경도 1e-12도 미만, 높이 1e-7 m 미만”이라고 적었으나, ★이는 위도 ±85도·높이 -500~9000 m의 4000점에서 이미 최대 6.4e-12도 / 8.5e-07 m로 넘어서 있었다 —— 중앙값 2.6e-13도 / 3.3e-08 m와 혼동했던 것이다):
• 위도 ±85도·높이 -500~9000 m … 위도 중앙 2.6e-13 / 최대 6.4e-12도, 높이 중앙 3.3e-08 / 최대 8.5e-07 m
• 위도 ±89.9도·높이 -11 km~40 km … 위도 중앙 2.9e-12 / 최대 1.3e-10도, 높이 중앙 3.5e-07 / 최대 1.7e-05 m(극으로 치우치면 20배 나빠진다)
경도는 어느 쪽이든 최대 2.8e-14도. 모두 지상에서는 µm 이하이며, 실용상은 “오차의 바닥”으로 다뤄도 되지만, 중앙값을 최댓값으로 인용하지 말 것.
지심 구면 좌표만 필요하다면 r = |xyz|와 geocentric_lat = asin(z/r)로 충분하다 —— 다만 그것은 측지 위도가 아니다 (둘은 최대 0.19도, 거리로 약 21 km 어긋난다). 이 op가 반환하는 것은지도나 GPS와 같은 측지 위도 쪽이다.
★지구 중심 부근에서는 fail-closed로 거부한다(2026-09-08, poc_geodetic_height_frames가 밟았다). 타원체의 축폐선(evolute) (a·p)^(2/3) + (b·|z|)^(2/3) < (a²-b²)^(2/3)의 안쪽에서는 타원체 면에서세운 법선이 1개로 정해지지 않아, 측지 위도가 애초에 유일하지 않다. 그전까지는여기서 조용히 lat = 180°를 반환했다 —— 위도로서 존재하지 않는 값이고, 게다가 자신의 역함수 dem_geodetic_to_ecef가 “lat_deg must be within [-90, 90]”으로 거부하는 값이었다. 영역은 적도면에서 축으로부터 e²a = 42697.7 m, 극축 위에서 (a²-b²)/b = 42841.3 m 까지(실측: 42600 m에서 180도, 42700 m에서 0도 —— 닫힌 식의 경계와 정확히 일치).
2-D 진화 레지스트리로 연결한 dem의 op dem_ecef_to_geodetic. 구현은 같고, 호출 규약만 op(v, a, b)에 맞춰 두었다. 이 op에는 조정 손잡이가 없으며, a도 b도 사용하지 않는다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
아래 예제는 원래의 대장 op dem_ecef_to_geodetic를 호출한다. 이 브리지 op는 같은 구현을 fn(v, a, b) 규약에 맞춘 것뿐이므로 동작은 그대로 적용된다(호출 형식만 다름).
• dem_geodesy_tour — py -3.11 examples/dem_geodesy_tour.py
• poc_geodetic_benchmarks_real — py -3.11 examples/poc_geodetic_benchmarks_real.py
• poc_geodetic_height_frames — py -3.11 examples/poc_geodetic_height_frames.py
points 를 입력으로 받는 것)identity · tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample
*Provenance: ops.py — 2D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.