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 MULTIPOINTjest 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 POINTgeometrii typów (szczególnie we wcześniejszych wersjach PostGIS), więc przechowywanie pojedynczych punktów POINTjest dobrą praktyką. A POINTzajmuje również około 25% mniej miejsca niż a MULTIPOINT.