Polygon - Полигон

class axipy.da.Polygon(*points, cs=None)

Базовые классы: axipy.da.Geometry

Геометрический объект типа полигон. Представляет собой часть плоскости, ограниченной замкнутой полилинией. Кроме внешней границы, полигон может иметь одну или несколько внутренних (дырок).

Параметры
  • points (Union[Pnt, Tuple[float, float]]) –

    Список точек внешнего контура. Может задаваться следующим образом:

    • В виде списка list из пар tuple.

    • В виде перечня точек. В данном случае, если необходимо задать СК, то требуется явно указать наименование параметра.

    • В виде итератора по элементам, состоящих из пар tuple.

  • cs (Optional[CoordSystem]) – Система Координат, в которой создается геометрия.

Пример.
poly = Polygon([(0, 0), Pnt(1, 10), Pnt(10, 11), (10, 2)]) # Создадим объект
poly.points[2] = (14, 15) # Поменяем вторую точку
poly.points.insert(3, (11, 5)) # Добавим точку
for p in poly.points: # Просмотр точек полигона
    print("point:", p)
poly.points.remove(2) # Удалим вторую точку

Methods:

affine_transform(trans)

Трансформирует объект исходя из заданных параметров трансформации.

almost_equals(other, tolerance)

Производит примерное сравнения с другой геометрией в пределах заданной точности.

boundary()

Возвращает границы геометрии в виде полилинии.

buffer(distance[, resolution, capStyle, …])

Производит построение буфера.

centroid()

Возвращает центроид геометрии.

clone()

Создает копию объекта.

contains(other)

Возвращает True, если геометрия полностью содержит передаваемую в качестве параметра геометрию.

convex_hull()

Возвращает минимальный окаймляющий полигон со всеми выпуклыми углами.

covers(other)

Возвращает True, если геометрия охватывает геометрию other.

crosses(other)

Возвращает True, если при пересечении геометрий объекты частично пересекаются.

difference(other)

Возвращает область первой геометрии, которая не пересечена второй геометрией.

disjoint(other)

Возвращает True, если геометрии не пересекаются и не соприкасаются.

distance_by_points(start, end[, cs])

Производит расчет расстояния между двумя точками и азимут от первой до второй точки.

envelope()

Возвращает полигон, описывающий заданную геометрию.

equals(other)

Производит сравнение с другой геометрией.

from_json(json[, cs])

Возвращает геометрию из ее „GeoJSON“ представления.

from_rect(rect[, cs])

Создает полигон на базе прямоугольника.

from_wkb(wkb[, coordsystem])

Создает геометрический объект из строки формата WKB.

from_wkt(wkt[, coordsystem])

Создает геометрический объект из строки формата WKT.

get_area([u])

Рассчитывает площадь, если объект площадной.

get_distance(other[, u])

Производит расчет расстояния до объекта other.

get_length([u])

Рассчитывает длину геометрии.

get_perimeter([u])

Рассчитывает периметр геометрии.

intersection(other)

Возвращает область пересечения с другой геометрией.

intersects(other)

Возвращает True, если геометрии пересекаются.

overlaps(other)

Возвращает True, если пересечение геометрий отличается от обеих геометрий.

point_by_azimuth(point, azimuth, distance[, cs])

Производит расчет координат точки относительно заданной, и находящейся на расстоянии distance по направлению azimuth.

relate(other)

Проверяет отношения между объектами.

reproject(cs)

Перепроецирует геометрию в другую систему координат.

rotate(point, angle)

Поворот геометрии относительно заданной точки.

scale(kx, ky)

Масштабирует объект по заданным коэффициентам масштабирования.

shift(dx, dy)

Смещает объект на заданную величину.

symmetric_difference(other)

Возвращает логический XOR областей геометрий (объединение разниц).

to_geojson()

Преобразует геометрию в формат „GeoJSON“

to_linestring()

Пробует геометрию преобразовать в линейный объект.

to_polygon()

Пробует геометрию преобразовать в площадной объект.

touches(other)

Возвращает True, если геометрии соприкасаются.

union(other)

Возвращает результат объединения двух геометрий.

within(other)

Возвращает True, если геометрия находится полностью внутри геометрии other.

Attributes:

bounds

Возвращает минимальный ограничивающий прямоугольник.

coordsystem

Система Координат (СК) геометрии.

holes

Дырки полигона.

is_valid

Проверяет геометрию на валидность.

is_valid_reason

Если геометрия неправильная, возвращает краткую аннотацию причины.

name

Возвращает наименование геометрического объекта.

points

Точки полигона.

type

Возвращает тип геометрического элемента.

wkb

Возвращает WKB строку для геометрии.

wkt

Возвращает WKT строку для геометрии.

affine_transform(trans)

Трансформирует объект исходя из заданных параметров трансформации.

См.также

Для простых операций типа сдвиг, масштабирование и поворот, рекомендуется использовать shift(), scale(), rotate() соответственно.

Параметры

trans (QTransform) – Матрица трансформации.

Тип результата

Geometry

almost_equals(other, tolerance)

Производит примерное сравнения с другой геометрией в пределах заданной точности.

Параметры
  • other (Geometry) – Сравниваемый объект.

  • tolerance (float) – Точность сравнения.

Тип результата

bool

Результат

Возвращает True, если геометрии равны в пределах заданного отклонения.

boundary()

Возвращает границы геометрии в виде полилинии.

Тип результата

Geometry

property bounds

Возвращает минимальный ограничивающий прямоугольник.

Тип результата

Rect

buffer(distance, resolution=16, capStyle=1, joinStyle=1, mitreLimit=5.0)

Производит построение буфера.

Параметры
  • distance (float) – Ширина буфера.

  • resolution (int) – Количество сегментов на квадрант.

  • capStyle (int) – Стиль окончания.

  • joinStyle (int) – Стиль соединения.

  • mitreLimit (float) – Предел среза.

Тип результата

Geometry

centroid()

Возвращает центроид геометрии.

Тип результата

Geometry

clone()

Создает копию объекта.

Тип результата

Geometry

contains(other)

Возвращает True, если геометрия полностью содержит передаваемую в качестве параметра геометрию.

Тип результата

bool

convex_hull()

Возвращает минимальный окаймляющий полигон со всеми выпуклыми углами.

Тип результата

Geometry

property coordsystem

Система Координат (СК) геометрии.

Тип результата

CoordSystem

covers(other)

Возвращает True, если геометрия охватывает геометрию other.

Тип результата

bool

crosses(other)

Возвращает True, если при пересечении геометрий объекты частично пересекаются.

Тип результата

bool

difference(other)

Возвращает область первой геометрии, которая не пересечена второй геометрией.

Тип результата

Geometry

disjoint(other)

Возвращает True, если геометрии не пересекаются и не соприкасаются.

Тип результата

bool

static distance_by_points(start, end, cs=None)

Производит расчет расстояния между двумя точками и азимут от первой до второй точки.

См.также

Обратная функция point_by_azimuth()

Параметры
  • start (Union[Pnt, Tuple[float, float]]) – Начальная точка. Если задана СК, то координаты в ней.

  • end (Union[Pnt, Tuple[float, float]]) – Конечная точка. Если задана СК, то координаты в ней.

  • cs (Optional[CoordSystem]) – СК, на базе эллипсоида которой производится расчет. Если не задана, то расчет производится на плоскости.

Тип результата

Tuple

Результат

Возвращается пара значений (расстояние в метрах, азимут в градусах)

envelope()

Возвращает полигон, описывающий заданную геометрию.

Тип результата

Geometry

equals(other)

Производит сравнение с другой геометрией.

Параметры

other (Geometry) – Сравниваемая геометрия.

Тип результата

bool

Результат

Возвращает True, если геометрии равны.

static from_json(json, cs=None)

Возвращает геометрию из ее „GeoJSON“ представления.

Параметры
  • json (str) – json представление в виде строки.

  • cs (Optional[CoordSystem]) – Система координат.

Тип результата

Geometry

static from_rect(rect, cs=None)

Создает полигон на базе прямоугольника.

Параметры
  • rect (Rect) – Прямоугольник, на основе которого формируются координаты.

  • cs (Optional[CoordSystem]) – Система Координат, в которой создается геометрия.

Тип результата

Polygon

static from_wkb(wkb, coordsystem=None)

Создает геометрический объект из строки формата WKB.

Параметры
  • wkb (bytes) – Строка WKB

  • coordsystem (Optional[CoordSystem]) – Система координат, которая будет установлена для геометрии.

Пример.
wkb = b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00$@\x00\x00\x00\x00\x00\x00$@'
pnt = Geometry.from_wkb(wkb)
Тип результата

Geometry

static from_wkt(wkt, coordsystem=None)

Создает геометрический объект из строки формата WKT.

Параметры
  • wkt (str) – Строка WKT. Допустимо задание строки в формате с указанием SRID (EWKT). В данном случае система координат для создаваемой геометрии будет установлено исходя их этого значения.

  • coordsystem (Optional[CoordSystem]) – Система координат, которая будет установлена для геометрии. Если строка задана в виде EWKT и указано значение SRID, игнорируется.

Пример.
polygon = Geometry.from_wkt('POLYGON ((10 10, 100 100, 100 10, 10 10))')
point = Geometry.from_wkt('SRID=4326;POINT (10 10)')
crs = CoordSystem.from_epsg(4326)
pline = Geometry.from_wkt('LINESTRING (30 10, 10 30, 40 40)', crs)
Тип результата

Geometry

get_area(u=None)

Рассчитывает площадь, если объект площадной. В противном случае возвращает 0. В случае, если СК задана как Широта/Долгота, то расчет производится на сфере в квадратных метрах.

Пример.
# В проекции Меркатора:
csMercatorKm = CoordSystem. from_prj("10, 104, 1, 0")
poly = Polygon([(0,0), (0,2), (2, 2), (2,0)], cs=csMercatorKm)
print('Area Mercator km:', poly.get_area())
print('Area Mercator m:', poly.get_area(Unit.sq_m))
print('Perimeter Mercator km:', poly.get_perimeter())
print('Perimeter Mercator m:', poly.get_perimeter(Unit.m))
# В Широте/Долготе
poly.coordsystem = CoordSystem.from_prj("1, 104")
print('Area LL m:', poly.get_area())
print('Area LL km:', poly.get_area(Unit.sq_km))
print('Perimeter LL m:', poly.get_perimeter())
print('Perimeter LL km:', poly.get_perimeter(Unit.km))
'''
>>> Area Mercator km: 4.017946986632519
>>> Area Mercator m: 4017946.9866325194
>>> Perimeter Mercator km: 8.017972048421552
>>> Perimeter Mercator m: 8017.972048421552
>>> Area LL m: 49452172514.0342
>>> Area LL km: 49452.1725140342
>>> Perimeter LL m: 889423.5067063896
>>> Perimeter LL km: 889.4235067063896
'''
Параметры

u (Optional[AreaUnit]) – Единица измерения, в которой необходимо получить результат. Если не задана, то используется единица измерения для СК. Если и она не задана, то производится расчет на плоскости.

Тип результата

float

get_distance(other, u=None)

Производит расчет расстояния до объекта other. Результат возвращает в СК текущего объекта.

Параметры
  • other (Geometry) – Анализируемый объект.

  • u (Optional[LinearUnit]) – Единицы измерения, в которых требуется получить результат.

Пример.
# Создадим геометрию без СК
first = Point(0, 0)
second = Point(10, 0)
print('В плане:', first.get_distance(second))
#Установим разные СК для точек
first.coordsystem = CoordSystem.from_prj("10, 104, 7, 0")
second.coordsystem = CoordSystem.from_prj("1, 104")
print('На сфере м:', first.get_distance(second))
print('На сфере км:', first.get_distance(second, Unit.km))
'''
>>> В плане: 10.0
>>> На сфере м: 1111948.7428468117
>>> На сфере км: 1111.9487428468117
'''
Тип результата

float

get_length(u=None)

Рассчитывает длину геометрии. Метод применим только для линейных объектов. В противном случае возвращает 0. В случае, если СК задана как Широта/Долгота, то расчет производится на сфере в метрах.

Пример.
# В проекции Меркатора:
csMercatorKm = CoordSystem. from_prj("10, 104, 1, 0")
ls = Line((0,0), (10,0), csMercatorKm)
print('Length Mercator km:', ls.get_length())
print('Lenght Mercator m:', ls.get_length(Unit.m))
# В Широте/Долготе
csLL = CoordSystem.from_prj("1, 104")
ls = Line((0,0), (10,0), csLL)
print('Length LL m:', ls.get_length())
print('Length LL km:', ls.get_length(Unit.km))
'''
>>> Length Mercator km: 9.988805508567783
>>> Lenght Mercator m: 9988.805508567782
>>> Length LL m: 1111948.7428468117
>>> Length LL km: 1111.9487428468117
'''
Параметры

u (Optional[LinearUnit]) – Единица измерения, в которой необходимо получить результат. Если не задана, то используется единица измерения для СК. Если и она не задана, то производится расчет на плоскости.

Тип результата

float

get_perimeter(u=None)

Рассчитывает периметр геометрии. Метод применим только для площадных объектов. В противном случае возвращает 0. В случае, если СК задана как Широта/Долгота, то расчет производится на сфере в метрах.

Пример см. get_area()

Параметры

u (Optional[LinearUnit]) – Единица измерения, в которой необходимо получить результат. Если не задана, то используется единица измерения для СК. Если и она не задана, то производится расчет на плоскости.

Тип результата

float

property holes

Дырки полигона. Реализован в виде списка list.

Пример.
poly = Polygon((0, 0), (1, 10), (10, 1))
poly.holes.append([(2,2), (2,4), (5,3)]) # Добавим дырку
for p in poly.holes[0]: # Просмотр точек дырки полигона
    print("Point of hole:", p)
print('Вторая точка первой дырки:', poly.holes[0][1])
poly.holes[0][1] = (33,44) # Обновим значение этой точки
Тип результата

List[Pnt]

intersection(other)

Возвращает область пересечения с другой геометрией.

Тип результата

Geometry

intersects(other)

Возвращает True, если геометрии пересекаются.

Тип результата

bool

property is_valid

Проверяет геометрию на валидность.

Тип результата

bool

property is_valid_reason

Если геометрия неправильная, возвращает краткую аннотацию причины.

Тип результата

str

property name

Возвращает наименование геометрического объекта.

Тип результата

str

overlaps(other)

Возвращает True, если пересечение геометрий отличается от обеих геометрий.

Тип результата

bool

static point_by_azimuth(point, azimuth, distance, cs=None)

Производит расчет координат точки относительно заданной, и находящейся на расстоянии distance по направлению azimuth.

См.также

Обратная функция distance_by_points()

Параметры
  • point (Union[Pnt, Tuple[float, float]]) – Точка, относительно которой производится расчет. Если задана СК, то в ней.

  • azimuth (float) – Азимут в градусах, указывающий направление.

  • distance (float) – Расстояние по азимуту. Задается в метрах.

  • cs (Optional[CoordSystem]) – СК, на базе эллипсоида которой производится расчет. Если не задана, то расчет производится на плоскости.

Тип результата

Pnt

Результат

Возвращает результирующую точку.

property points

Точки полигона. Реализован как список python list точек Pnt. Также поддерживаются список пар tuple.

Тип результата

List[Pnt]

relate(other)

Проверяет отношения между объектами. Подробнее см. DE-9IM

Тип результата

str

reproject(cs)

Перепроецирует геометрию в другую систему координат.

Параметры

cs (CoordSystem) – СК, в которой требуется получить объект.

Тип результата

Geometry

rotate(point, angle)

Поворот геометрии относительно заданной точки. Поворот производится против часовой стрелки.

Параметры
  • point (Union[Pnt, Tuple[float, float]]) – Точка, вокруг которой необходимо произвести поворот.

  • angle (float) – Угол поворота в градусах.

Тип результата

Geometry

scale(kx, ky)

Масштабирует объект по заданным коэффициентам масштабирования. После выполнения операции центр результирующего объекта остается прежним.

Параметры
  • kx (float) – Масштабирование по координате X.

  • ky (float) – Масштабирование по координате Y.

Тип результата

Geometry

shift(dx, dy)

Смещает объект на заданную величину. Значения задаются в текущей проекции.

Параметры
  • dx (float) – Сдвиг по координате X.

  • dy (float) – Сдвиг по координате Y.

Тип результата

Geometry

symmetric_difference(other)

Возвращает логический XOR областей геометрий (объединение разниц).

Параметры

other (Geometry) – Геометрия для анализа.

Тип результата

Geometry

to_geojson()

Преобразует геометрию в формат „GeoJSON“

Тип результата

str

to_linestring()

Пробует геометрию преобразовать в линейный объект. В случае неудачи возвращает None.

Тип результата

Optional[Geometry]

to_polygon()

Пробует геометрию преобразовать в площадной объект. В случае неудачи возвращает None.

Тип результата

Optional[Geometry]

touches(other)

Возвращает True, если геометрии соприкасаются.

Тип результата

bool

property type

Возвращает тип геометрического элемента.

Возможные значения

Значение

Наименование

Unknown

Не определен

Point

Точка

Line

Линия

LineString

Полилиния

Polygon

Полигон

MultiPoint

Коллекция точек

MultiLineString

Коллекция полилиний

MultiPolygon

Коллекция полигонов

GeometryCollection

Смешанная коллекция

Arc

Дуга

Ellipse

Эллипс

Rectange

Прямоугольник

RoundedRectange

Скругленный прямоугольник

Text

Текст

Пример.
point = Point(10,10)
if point.type == GeometryType.Point:
    print('Это точка')
Тип результата

GeometryType

union(other)

Возвращает результат объединения двух геометрий.

Тип результата

Geometry

within(other)

Возвращает True, если геометрия находится полностью внутри геометрии other.

Тип результата

bool

property wkb

Возвращает WKB строку для геометрии.

Тип результата

bytes

property wkt

Возвращает WKT строку для геометрии.

Тип результата

str