Многоточечный против точечного PostGIS

12

Нормально ли использовать тип геометрии «многоточечный» вместо «точечный», зная, что я использую его для хранения только одной точки?

Как я могу конвертировать из нескольких точек в точку?

Юсеф
источник
Хороший ответ, который объясняет, как проверить геометрию из нескольких частей и преобразовать типы столбцов из нескольких геометрий в: gis.stackexchange.com/questions/28835/…
John

Ответы:

16

Чтобы преобразовать «Multipoint» в «Point», вы должны использовать ST_Dump , например:

SELECT (ST_Dump(the_geom)).geom AS the_POINT_geom
  FROM MULTIPOINT_table;

В вопросе об использовании «Multi» или отдельных геометрий я использую эту логику:

  • если каждая геометрия имеет разные атрибуты -> один
  • если группа геометрий имеет одинаковые атрибуты -> «Multi»
Табер
источник
9

Самый простой способ извлечь точку из одной точки MULTIPOINTявляется ST_GeometryN:

SELECT ST_AsText(ST_GeometryN('MULTIPOINT ((1 1))', 1));
--POINT(1 1)

Это позволяет избежать потенциальных проблем в ситуациях, когда функция, возвращающая множество, не может быть использована.

Существуют некоторые важные оптимизации, которые доступны только для POINTгеометрии типов (особенно в более ранних версиях PostGIS), поэтому хранение отдельных точек POINTявляется хорошей практикой. A POINTтакже использует примерно на 25% меньше места, чем a MULTIPOINT.

dbaston
источник