Simple Features
Simple Features (SF) — это стандарты OGC, описывающие двухмерные географические объекты, такие как точки и многоугольники, а также связи между ними. В стандартах описываются иерархия типов (часть 1), функциональный интерфейс с SQL (часть 2) и расширение SQL/MM с поддержкой круговых типов геометрических объектов, таких как Circularstring
.
Иерархия типов
Все используемые здесь типы взяты из SF. Мы добавили Trait
ко всем типам геометрических объектов, чтобы их можно было отличить от фактических геометрических структур.
The SF Type hierarchy. From OpenGIS® Implementation Standard for Geographic information - Simple feature access - Part 1: Common architecture at http://www.opengis.net/doc/is/sfa/1.2.1.
Изменения в сравнении с SF
Хотя мы стараемся придерживаться стандартов SF, есть ряд изменений и расширений, соответствующих стилю Julia.
Имена функций
Имена всех функций не имеют префикса ST_
и пишутся в нижнем регистре. Некоторые имена были изменены в соответствии с именами стандартных функций Julia. NumX
стало nx
, а geomN
— getgeom
:
GeometryType -> geomtrait
NumGeometries -> ngeom
GeometryN -> getgeom
NumPatches -> npatch
# и т. д.
Мы сделали функции ngeom
и getgeom
более универсальными, так что они стали применимы ко всем геометрическим объектам, а не только к AbstractGeometryCollectionTrait
.
Мы также упростили функции для работы с измерениями. Их трех исходных (dimension
, coordinateDimension
, spatialDimension
) осталось только измерение координат (ncoords
), которое представляет такие измерения, как X
, Y
, Z
и M
. Топологические измерения (точка является 0-мерной) и связанные с ними функции в данном интерфейсе не применяются во избежание путаницы. Аналогичным образом, мы не стали перегружать функцию ndims
в Julia во избежание путаницы и возможных конфликтов с пользовательскими геометрическими объектами на основе векторов.
coordinateDimension -> ncoords # x, y, z, m
dimension -> unused
spatialDimension -> unused
Мы стандартизировали имена некоторых функций:
SRID -> crs
envelope -> extent # еще один псевдоним — bbox
Мы также добавили вспомогательный метод, проясняющий именование координат.
coordnames = (:X, :Y, :Z, :M)