Czy normalne jest używanie typu geometrii „wielopunkt” zamiast „punkt”, wiedząc, że używam go do przechowywania tylko jednego punktu?
Jak mogę przekonwertować z wielopunktowego na punktowy?
Czy normalne jest używanie typu geometrii „wielopunkt” zamiast „punkt”, wiedząc, że używam go do przechowywania tylko jednego punktu?
Jak mogę przekonwertować z wielopunktowego na punktowy?
Odpowiedzi:
Aby przekonwertować „Multipoint” na „Point”, musisz użyć ST_Dump , na przykład:
SELECT (ST_Dump(the_geom)).geom AS the_POINT_geom
FROM MULTIPOINT_table;
W kwestii użycia „Multi” lub pojedynczych geometrii używam tej logiki:
Najłatwiejszym sposobem wyodrębnienia punktu z jednego punktu MULTIPOINT
jest ST_GeometryN
:
SELECT ST_AsText(ST_GeometryN('MULTIPOINT ((1 1))', 1));
--POINT(1 1)
Pozwala to uniknąć potencjalnych problemów w sytuacjach, w których nie można użyć funkcji zwracania zestawu.
Istnieje kilka ważnych optymalizacji, które są dostępne tylko dla POINT
geometrii typów (szczególnie we wcześniejszych wersjach PostGIS), więc przechowywanie pojedynczych punktów POINT
jest dobrą praktyką. A POINT
zajmuje również około 25% mniej miejsca niż a MULTIPOINT
.