측정되지 않은 Z 값을로 저장할 수 있습니다 'nan'::float8
. 예를 들면 다음과 같습니다.
SELECT ST_AsText(g), ST_X(g), ST_Y(g), ST_Z(g), ST_Z(g) <> 'nan'::float8 AS has_z
FROM (
SELECT ST_MakePoint(1, 2, 'nan'::float8) AS g
UNION SELECT ST_MakePoint(4, 5, 6) AS g
) AS f;
st_astext | st_x | st_y | st_z | has_z
-----------------------+------+------+------+-------
POINT Z (1 2 1.#QNAN) | 1 | 2 | NaN | f
POINT Z (4 5 6) | 4 | 5 | 6 | t
(2 rows)
그러나 NaN 값이 항상 소프트웨어 개발자에 의해 테스트되거나 처리되는 것은 아니므로 문제가 발생할 수 있습니다. 예를 들어 PostGIS는 위의 WKT 버전을 파싱 할 수 없습니다.
SELECT 'POINT Z (1 2 1.#QNAN)'::geometry;
ERROR: parse error - invalid geometry
LINE 1: SELECT 'POINT Z (1 2 1.#QNAN)'::geometry;
^
HINT: "POINT Z (1 2 1.#Q" <-- parse error at position 17 within geometry