WKT-формат

Введение

В данной статье мы изучим, что такое WKT-формат и как c ним работать в API карт.

Основы

Well-known text (WKT) — текстовый формат описания геометрических фигур. На данный момент API карт поддерживаются следующие объекты:

  • точка (POINT);
  • мультиточка (MULTIPOINT);
  • полилайн (LINESTRING);
  • мультиполилайн (MULTILINESTRING);
  • полигон (POLYGON);
  • мультиполигон (MULTIPOLYGON).

Объект DG.WKTParser

За работу с геометрическими фигурами, которые описаны в WKT-формате отвечает статический объект DG.WKTParser. Ниже мы подробно рассмотрим его возможности.

Описание методов представляет собой действие (что делает метод, для чего он нужен?) и название метода. Вместе с тем, представлены дополнительно параметры, возвращаемое значение метода и особенности, если таковые имеются.

Примеры поддерживаемых WKT-описаний

Примеры допустимых форматов описания объектов с помощью WKT приведены в таблице ниже.

Тип возвращаемого объекта Пример WKT
DG.Geometries.Point POINT (30 10)
DG.Geometries.Multipoint MULTIPOINT (10 40, 40 30, 20 20, 30 10)
DG.Geometries.Polyline LINESTRING (30 10, 10 30, 40 40)
DG.Geometries.Multipolyline MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))
DG.Geometries.Polygon POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))
DG.Geometries.Multipolygon MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))

Методы

Получить объект по WKT-описанию
DG.WKTParser.getObject(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание геометрической фигуры.

Возвращает:

Тип Описание
Object Объект, который определён с помощью входящего параметра wkt.
Получить тип объекта по WKT-описанию
DG.WKTParser.getObjectType(wkt, style)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание геометрической фигуры.
style DG.Style.Geometry Нет Стиль отображения геометрии.

Возвращает:

Тип Описание
String Тип объекта, который определён с помощью входящего параметра wkt.Метод может возвращать следующие значения: POINT, LINESTRING, MULTILINESTRING, POLYGON, MULTIPOLYGON.
Получить точку по WKT-описанию
DG.WKTParser.getPoint(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание точки.

Возвращает:

Тип Описание
DG.Geometries.Point Точка, объект геометрии.

Пример отображения точки на основе WKT-описания:

// Инициализируем карту, устанавливаем её центр и масштаб:
var myMap = new DG.Map('map');
myMap.setCenter(new DG.GeoPoint(82.927810142519, 55.0289362348260), 16);

// Создаём точку на основе WKT-описания:
var point = DG.WKTParser.getPoint('POINT (82.927810142519 55.0289362348260)');

// Добавляем точку на карту:
myMap.geometries.add(point);

// Создаем объект стилей:
var style = new DG.Style.Geometry();
// Устанавливаем значения свойств:
style.fillColor = "#ff00ff";
style.fillOpacity = 0.4;
style.strokeColor = "blue";
style.strokeOpacity = 1;
style.strokeWidth = 3;
style.pointRadius = 10;

// Устанавливаем стиль точки:
point.setStyle(style);
Открыть пример в новом окне
Получить мультиточку (множество точек) по WKT-описанию
DG.WKTParser.getMultipoint(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание мультиточки.

Возвращает:

Тип Описание
DG.Geometries.Multipoint Мультиточка, объект геометрии.

Пример отображения мультиточки на основе WKT-описания:

// Инициализируем карту, устанавливаем её центр и масштаб:
var myMap = new DG.Map('map');
myMap.setCenter(new DG.GeoPoint(82.927810142519, 55.0289362348260), 16);

// Создаём мультиточку на основе WKT-описания:
var multipoint = DG.WKTParser.getMultipoint('MULTIPOINT (82.927810142519 55.0289362348260, 82.937810142519 55.0389362348260, 82.917810142519 55.0189362348260)');

// Добавляем мультиточку на карту:
myMap.geometries.add(multipoint);

// Создаем объект стилей:
var style = new DG.Style.Geometry();
// Устанавливаем значения свойств:
style.fillColor = "#ff00ff";
style.fillOpacity = 0.4;
style.strokeColor = "blue";
style.strokeOpacity = 1;
style.strokeWidth = 3;
style.pointRadius = 10;

// Устанавливаем стиль мультиточки:
multipoint.setStyle(style);
Открыть пример в новом окне
Получить полилайн (ломаную) по WKT-описанию
DG.WKTParser.getPolyline(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание полилайна.

Возвращает:

Тип Описание
DG.Geometries.Polyline Полилайн, объект геометрии.

Пример отображения полилайна на основе WKT-описания:

// Получаем полилайн на основе WKT-описания
var polyline = DG.WKTParser.getPolyline('LINESTRING (82.93 55.028, 82.92 55.038, 82.93 55.048, 82.92 55.058)');
// Добавляем полилайн на карту
myMap.geometries.add(polyline);
Открыть пример в новом окне
Получить мультиполилайн (множество ломаных) по WKT-описанию
DG.WKTParser.getMultipolyline(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание мультиполилайна.

Возвращает:

Тип Описание
DG.Geometries.Polyline Мультиполилайн, объект геометрии.

Пример отображения мультиполилайна на основе WKT-описания:

// Получаем мультиполилайн на основе WKT-описания
var multipolyline = DG.WKTParser.getMultipolyline('MULTILINESTRING ((82.93 55.028, 82.92 55.038, 82.93 55.048, 82.92 55.058), (82.95 55.028, 82.94 55.038, 82.95 55.048, 82.94 55.058), (82.97 55.028, 82.96 55.038, 82.97 55.048, 82.96 55.058))');
// Добавляем мультиполилайн на карту
myMap.geometries.add(multipolyline);
Открыть пример в новом окне
Получить полигон (многоугольник) по WKT-описанию
DG.WKTParser.getPolygon(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание полигона.

Возвращает:

Тип Описание
DG.Geometries.Polygon Полигон, объект геометрии.

Пример отображения полигона на основе WKT-описания:

// Получаем полигон на основе WKT-описания
var polygon = DG.WKTParser.getPolygon('POLYGON ((82.93 55.028, 82.92 55.038, 82.93 55.048, 82.92 55.058))');
// Добавляем полигон на карту
myMap.geometries.add(polygon);
Открыть пример в новом окне
Получить мультиполигон (множество многоугольников) по WKT-описанию
DG.WKTParser.getMultipolygon(wkt)

Параметры:

Имя Тип Обязательный Описание
wkt String Да WKT-описание мультиполигона.

Возвращает:

Тип Описание
DG.Geometries.Multipolygon Мультиполигон, объект геометрии.

Пример отображения мультиполигона на основе WKT-описания:

// Получаем мультиполигон на основе WKT-описания
var multipolygon = DG.WKTParser.getMultipolygon('MULTIPOLYGON (((82.93 55.028, 82.92 55.038, 82.93 55.048, 82.92 55.058)), ((82.95 55.028, 82.94 55.038, 82.95 55.048, 82.94 55.058)), ((82.97 55.028, 82.96 55.038, 82.97 55.048, 82.96 55.058)))');
// Добавляем мультиполигон на карту
myMap.geometries.add(multipolygon);
Открыть пример в новом окне