JTS Topology Suite
JTS Topology Suite (Java Topology Suite или JTS) — это библиотека Java с открытым исходным кодом, которая предоставляет объектную модель для евклидовой плоской линейной геометрии вместе с набором основных геометрических функций. JTS в первую очередь предназначен для использования в качестве основного компонента программного обеспечения для векторной геоматики, такого как географические информационные системы (ГИС). JTS также может быть использоваться как библиотека общего назначения, предоставляющая алгоритмы для вычислительной геометрии.[1]
JTS Topology Suite | |
---|---|
Тип | Библиотека |
Автор | Мартин Дэвис |
Написана на | Java |
Аппаратная платформа | Java SE |
Последняя версия | 1.16 (30 апреля 2014) |
Лицензия | Eclipse Public License v.1.0 (начиная с 1.15), GNU Lesser General Public License (до версии 1.14) |
Сайт | locationtech.github.io/j… |
JTS реализует геометрическую модель и API, определенные консорциумом OpenGIS в Simple Features Specification для SQL.
JTS определяет стандартизированную геометрическую систему для построения пространственных приложений: средства просмотра, обработчики пространственных запросов и инструменты для проверки, очистки и интеграции данных.
Помимо основной библиотеки Topology Suite на Java существуют порты на другие языки, например, GEOS — C++ и JSTS — JavaScript.[2]
До JTS 1.14 и появления порта GEOS публиковалась под лицензией GNU Lesser General Public License (LGPL). С принятием LocationTech будущие выпуски будут под лицензиями EPL/BSD.
Возможности
JTS предоставляет следующие функциональные возможности:
Модель геометрии
Поддерживаются следующие классы геометрии - points, linestrings, polygons, и collections. Геометрия является линейной, в том смысле, что границы неявно определяются путем линейной интерполяции между вершинами. Геометрия вложена в 3D евклидову плоскость. Вершины геометрии также могут иметь значение Z.
Поддерживаются определяемые пользователем модели точности для геометрических координат. Вычисления выполняются с использованием алгоритмов, которые обеспечивают надежные геометрические вычисления при всех моделях точности.
Геометрические функции
- Проверка топологии
- Вычисление Площади и Длины
- Пространственные Предикаты на основе модели DE-9IM Эгенхофера[3]
- Функции наложения (включая пересечение, разность, Объединение, симметричную разность)
- Вычисление Буфера (включая различные типы cap и join)
- Выпуклая оболочка
- Упрощение геометрии включая Алгоритм Рамера — Дугласа — Пекера
- Геометрическое уплотнение
- Линейная ссылка
- Снижение точности
- Триангуляция Делоне и ограниченная триангуляция Делоне
- Генерация диаграмм Вороного
- Наименьший вмещающий прямоугольник
- Дискретное расстояние Хаусдорфа
Пространственные структуры и алгоритмы
- Прочное пересечение отрезка
- Эффективное пересечение или стыковка линий
- Эффективная точка в многоугольнике
- Пространственного индекса, включая дерево квадрантов и STR-дерево
- Плоские графовые структуры и алгоритмы
Библиотека 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 поддерживается независимым программным проектом Мартина Дэвиса.[4]
С конца 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
Примечания
- Davis, Martin Secrets of the JTS Topology Suite (September 26, 2007). Дата обращения: 26 января 2017.
- GEOS . Дата обращения: 24 января 2019.
- A Formal Definition of Binary Topological Relationships by Max Egenhofer
- History of JTS and GEOS - M. Davis . Дата обращения: 27 мая 2013.
Ссылки
- locationtech.github.io/j… — официальный сайт JTS Topology Suite
- Net Topology Suite
- Java Script Topology Suite
- LocationTech JTS
- GEOS