Multipoint vs punkt PostGIS

12

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?

Youssef
źródło
Dobra odpowiedź, która wyjaśnia, jak sprawdzić geometrie wieloczęściowe i przekonwertować typy kolumn z geometrii wieloczęściowej
John

Odpowiedzi:

16

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:

  • jeśli każda geometria ma inne atrybuty -> Pojedyncza
  • jeśli grupa geometrii ma te same atrybuty -> „Wiele”
Taber
źródło
9

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.

dbaston
źródło