Документация Engee

Интерфейс на основе типажей

GeoInterface предоставляет интерфейс, похожий на Tables.jl и включающий набор функций и типов для геопространственных данных.

Функции

(a) набор функций:

isgeometry(geom)
geomtrait(geom)
ncoord(geom)
getcoord(geom, i)
ngeom(geom)
getgeom(geom, i)
...

Типы

(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