JTS Topology Suite


JTS Topology Suite (Java Topology Suite или JTS) — это библиотека Java с открытым исходным кодом, которая предоставляет объектную модель для евклидовой плоской линейной геометрии вместе с набором основных геометрических функций. JTS в первую очередь предназначен для использования в качестве основного компонента программного обеспечения для векторной геоматики, такого как географические информационные системы (ГИС). JTS также может быть использоваться как библиотека общего назначения, предоставляющая алгоритмы для вычислительной геометрии.

JTS реализует геометрическую модель и API, определенные консорциумом OpenGIS в Simple Features Specification для SQL.

JTS определяет стандартизированную геометрическую систему для построения пространственных приложений: средства просмотра, обработчики пространственных запросов и инструменты для проверки, очистки и интеграции данных.

Помимо основной библиотеки Topology Suite на Java существуют порты на другие языки, например, GEOSC++ и JSTSJavaScript.

До JTS 1.14 и появления порта GEOS публиковалась под лицензией GNU Lesser General Public License (LGPL). С принятием LocationTech будущие выпуски будут под лицензиями EPL/BSD.

Возможности

JTS предоставляет следующие функциональные возможности:

Модель геометрии

Поддерживаются следующие классы геометрии - points, linestrings, polygons, и collections. Геометрия является линейной, в том смысле, что границы неявно определяются путем линейной интерполяции между вершинами. Геометрия вложена в 3D евклидову плоскость. Вершины геометрии также могут иметь значение Z.

Поддерживаются определяемые пользователем модели точности для геометрических координат. Вычисления выполняются с использованием алгоритмов, которые обеспечивают надежные геометрические вычисления при всех моделях точности.

Геометрические функции

  • Проверка топологии
  • Вычисление Площади и Длины
  • Пространственные Предикаты на основе модели DE-9IM Эгенхофера
  • Функции наложения (включая пересечение, разность, Объединение, симметричную разность)
  • Вычисление Буфера (включая различные типы cap и join)
  • Выпуклая оболочка
  • Упрощение геометрии включая Алгоритм Рамера — Дугласа — Пекера
  • Геометрическое уплотнение
  • Линейная ссылка
  • Снижение точности
  • Триангуляция Делоне и ограниченная триангуляция Делоне
  • Генерация диаграмм Вороного
  • Наименьший вмещающий прямоугольник
  • Дискретное расстояние Хаусдорфа

Пространственные структуры и алгоритмы

  • Прочное пересечение отрезка
  • Эффективное пересечение или стыковка линий
  • Эффективная точка в многоугольнике
  • Пространственного индекса, включая дерево квадрантов и STR-дерево
  • Плоские графовые структуры и алгоритмы

Возможности ввода / вывода

  • Чтение и запись WKT, WKB и GML форматов

Библиотека GEOS

GEOS - это порт C/C++ подмножества JTS и выбранных функций. GEOS заслуживает внимания как базовый компонент в программной экосистеме собственных скомпилированных исполняемых файлов на платформах Linux, Mac и Windows. Из-за структуры времени исполнения Java и виртуальной машины Java (JVM) библиотеки кода, написанные на Java, в основном не могут использоваться в качестве библиотек из стандартизированной среды перекрестных ссылок (часто построенной из C). Linux, Microsoft Windows и семейство BSD, включая Mac OSX, используют структуру связей, которая позволяет интегрировать (связывать) библиотеки разных языков в собственный исполняемый файл среды выполнения. Java по своей природе не участвует в этой совместимости без дополнительных средств (JNI).

Частичный список проектов с использованием GEOS

GEOS включен в состав популярных приложений, которые будут перечислены ниже. А благодаря поддержке классов геометрий из пакета GDAL, который нашел широкое применение в качестве библиотеки, включенной во многие ГИС-программы, GEOS стал основой в реализации работы с геометрией в ещё большем количестве приложений:

  • GDAL - OGR - объединение растровых и векторных данных.
  • QGIS - Десктопный кроссплатформенная ГИС с открытым исходным кодом.
  • PostGIS - пространственные типы и операции для PostgreSQL.
  • GeoDjango – поддержка ГИС для Django.
  • Google Earth – программа для создания виртуальных глобусов и изображений.
  • GRASS GIS – Библиотека и приложение.
  • MapServer - среда разработки с открытым исходным кодом для создания пространственных интернет-приложений.
  • World Wind Java – виртуальный глобус NASA с открытым исходным кодом и технология визуализации мира.
  • Orfeo toolbox – библиотека обработки спутниковых снимков.
  • R – статистическое программное обеспечение с открытым исходным кодом с расширениями для анализа пространственных данных.
  • SAGA GIS – кроссплатформенное программное обеспечение ГИС с открытым исходным кодом.

История

Финансирование первоначальной работы над JTS было получено осенью 2000 года от GeoConnections и правительства Британской Колумбии на основе предложения, выдвинутого Марком Сондхеймом и Дэвидом Скеа. Работу выполняли Мартин Дэвис (дизайнер программного обеспечения и ведущий разработчик) и Джонатан Акино (разработчик), оба из Vivid Solutions в то время. С тех пор JTS поддерживается независимым программным проектом Мартина Дэвиса.

С конца 2016 года по начало 2017 года JTS была принята компанией LocationTech.

Платформы

JTS разработан под платформу Java JDK 1.4. Это 100% чистая Java. Он будет работать и на всех более поздних версиях JDK.

Подмножество JTS было перенесено на C++, а точки входа объявлены как интерфейсы C, в библиотеке GEOS.

JTS был перенесен в .NET Framework как пакет Net Topology Suite.

Порт JTS на JavaScript инициирован Björn Harrtell и поддерживается получение название JSTS

Частичный список проектов использующих JTS

  • GeoServer
  • GeoTools
  • OpenJUMP и ответвления
  • uDig
  • gvSIG
  • Batik
  • Geoforge
  • Hibernate Spatial
  • Whitebox Geospatial Analysis Tools
  • Tygron Engine
  • ODL Studio
  • jts-discretizer
  • orbisgis/h2gis, Пространственное расширение базы данных - H2.