Интерфейс на основе типажей
Типы
(b) набор типов-типажей для диспетчеризации по данным функциям.
Типы предписывают GeoInterface, как интерпретировать входной объект внутри функции GeoInterface, и специфичны для каждого типа геометрических типов.
abstract GeometryTrait
PointTrait <: AbstractPointTrait <: AbstractGeometryTrait
MultiPointTrait <: AbstractMultiPointGeometryTrait <:AbstractGeometryCollectionTrait <: AbstractGeometryTrait
...
Использование
Для пакетов (Packages), реализующих GeoInterface, вместо написания конкретных методов для работы с пользовательскими геометрическими объектами, можно просто вызывать приведенные выше универсальные функции. Например:
julia> using ArchGDAL julia> geom = createpolygon(...)::ArchGDAL.IGeometry # интерфейс неизвестен # Проверяем методы GeoInterface julia> isgeometry(geom) True julia> geomtrait(geom) PolygonTrait() julia> ext = exterior(geom); julia> geomtrait(ext) LineStringTrait() julia> getcoords.(getpoint.(Ref(ext), 1:npoint(ext))) [[1.,2.],[2.,3.],[1.,2.]] julia> coordinates(geom) # резервная функция на основе ngeom и npoint