Соглашение об именовании столбцов геометрии - «geom» или «the_geom»?

22

Я начинаю свой первый проект PostGIS, и в различных книгах и учебных пособиях я видел столбец геометрии, помеченный как «geom» или «the_geom». Является ли одно более обычным, чем другое?

Кроме того, есть ли веская причина для использования 'geom' / 'the_geom' вместо более описательного имени для столбца геометрии? (Например, «centre_point» для центральной точки объекта.) Мы не помечаем обычные столбцы БД «the_int» или «the_string», так почему же так обозначают столбцы геометрии?

Ник
источник

Ответы:

17

Начиная с версии 2.0 PostGIS, «geom» является общим именем столбца. (По крайней мере, я вижу документацию и т. Д.) До этого это был "the_geom", и я могу только догадываться, почему.

Вы можете спокойно использовать любой из них, но я с радостью использую «geom» в PostGIS и SpatiaLite.

Изменить: потому что я полностью пропустил вторую часть вопроса.
В целом, общее имя удобно, потому что для программного обеспечения ГИС обычно требуется, чтобы геометрия в таблице была ограничена одним конкретным типом, SRID и т. Д. Поэтому имена таблиц имеют тенденцию быть более описательными, чем имя столбца геометрии. Например, вы ожидаете найти таблицы с именами "school_zone_polygons", "school_zone_centroids", каждая со столбцом "geom"; не таблица "school_zones" со столбцами "geom_polygon", "geom_centroid".

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

SCRo
источник
2
В объектно-ориентированном программировании принято называть объекты верхнего уровня, добавляя статью. Это отличает «the_chair» от любых последующих экземпляров типа «chair». Но PostGIS на самом деле не работает таким образом, и переход на просто «geom», вероятно, упростил кроссплатформенную реализацию.
L_Holcombe
Да, я всегда догадывался, что это должно было предотвратить (возможное будущее) столкновение с зарезервированным словом. Никто не любит печатать двойные кавычки.
Scro
1
Спасибо Скро за разъяснения. Хотя в случае, когда у вас есть несколько столбцов геометрии в таблице (не то, что я планирую), ваш контрпример может показаться идеальным соглашением. Т.е. таблица "school_zones" с "geom_polygon", "geom_centroid" и т. Д.
Ник
6

Одна потенциальная причина, по которой «geom» или «the_geom» был выбран в качестве универсального имени для поля «shape», заключался в том, что вы можете хранить несколько типов геометрии (точка, линия, поли и т. Д.) В одном поле «geom» в та же таблица. Вы даже можете вспомнить 2005 год, когда это обсуждалось в списке рассылки PostGIS.

Например, вы можете хранить все свои дома, улицы и границы округов в одном поле «geom» единой таблицы. Очевидно, есть причины, по которым вы можете поступить иначе, но это может быть причиной, по которой было использовано общее имя столбца «geom».

Надеемся, что некоторые давние пользователи PostGIS сообщат более подробную информацию о том, почему фактически был выбран «geom».

RyanDalton
источник
1

При использовании Geoserver REST api при публикации существующих таблиц PostGis команда REST завершится неудачно, если столбец геометрии не будет называться «geom».

Анджело Арболеда
источник
2
Я почти уверен, что это поведение является ошибкой в ​​Geoserver, и как только оно будет устранено, оно больше не должно быть предметом рассмотрения
Devdatta Tengshe