JTS Topology Suite ( Java Topology Suite ) es una biblioteca de software Java de código abierto que proporciona un modelo de objetos para la geometría lineal plana euclidiana junto con un conjunto de funciones geométricas fundamentales. JTS está diseñado principalmente para ser utilizado como un componente central de software de geomática vectorial, como los sistemas de información geográfica . [ 2 ] También puede utilizarse como una biblioteca de propósito general que proporciona algoritmos en geometría computacional . [ 3 ]
JTS implementa el modelo geométrico y la API definidos en la Especificación de Características Simples para SQL del Consorcio OpenGIS . JTS define un sistema geométrico que cumple con los estándares para la creación de aplicaciones espaciales; algunos ejemplos incluyen visores, procesadores de consultas espaciales y herramientas para la validación, limpieza e integración de datos.
Además de la biblioteca Java, los fundamentos de JTS y algunas funciones seleccionadas se mantienen en una versión en C++, para su uso en la vinculación al estilo C en todos los principales sistemas operativos, en forma de la biblioteca de software GEOS .
Hasta la versión JTS 1.14, y la versión para GEOS, se publican bajo la Licencia Pública General Reducida de GNU (LGPL).
Con la adopción de LocationTech, las futuras versiones se regirán por las licencias EPL/BSD.
Alcance
JTS proporciona la siguiente funcionalidad:
Modelo geométrico
Las clases de geometría admiten el modelado de puntos, líneas, polígonos y colecciones. Las geometrías son lineales, en el sentido de que sus límites se definen implícitamente mediante interpolación lineal entre vértices. Las geometrías están incrustadas en el plano euclidiano bidimensional. Los vértices de una geometría también pueden tener un valor Z.
Se admiten modelos de precisión definidos por el usuario para las coordenadas geométricas. Los cálculos se realizan mediante algoritmos que proporcionan una computación geométrica robusta bajo todos los modelos de precisión.
funciones geométricas
- Verificación de validez topológica
- Funciones de área y distancia
- Predicados espaciales basados en el modelo Egenhofer DE-9IM [ 4 ]
- Funciones de superposición (incluyendo intersección , diferencia , unión , diferencia simétrica )
- Cálculo de búfer (incluidos diferentes tipos de límites y uniones)
- Envoltura convexa
- Simplificación geométrica que incluye el algoritmo de Douglas - Peucker.
- Densificación geométrica
- Referencia lineal
- Reducción de precisión
- Triangulación de Delaunay y triangulación de Delaunay restringida
- Generación de diagramas de Voronoi
- Rectángulo de contención más pequeño
- Distancia discreta de Hausdorff
Estructuras espaciales y algoritmos
- Intersección robusta de segmentos de línea
- Intersección con disposición de líneas eficiente
- Punto eficiente en un polígono
- Estructuras de índices espaciales que incluyen quadtree y STR-tree.
- Estructuras y algoritmos de grafos planares
capacidades de E/S
Historia
La financiación para el trabajo inicial en JTS se obtuvo en otoño de 2000 de GeoConnections y el Gobierno de la Columbia Británica, basándose en una propuesta presentada por Mark Sondheim y David Skea. El trabajo fue realizado por Martin Davis (diseño de software y desarrollador principal) y Jonathan Aquino (desarrollador), ambos de Vivid Solutions en ese momento. Desde entonces, Martin Davis ha mantenido JTS como un proyecto de software independiente. [ 5 ]
Desde finales de 2016/principios de 2017, LocationTech ha adoptado JTS.
Proyectos que utilizan JTS
Plataformas
JTS se desarrolla bajo la plataforma Java JDK 1.4. Es 100% Java puro. También funcionará en todas las versiones más recientes de JDK. [ 6 ]
JTS se ha adaptado al .NET Framework como Net Topology Suite.
Se ha adaptado un subconjunto de JTS a C++ , con puntos de entrada declarados como interfaces C, como la biblioteca GEOS .
Puerto C/C++: GEOS
GEOS es la versión en C/C++ de un subconjunto de JTS y funciones seleccionadas. Es un componente fundamental en un ecosistema de software de binarios ejecutables nativos compilados para plataformas Linux, Mac y Windows. Debido a la construcción del entorno de ejecución de Java y la Máquina Virtual de Java (JVM), las bibliotecas de código escritas en Java no se pueden usar como bibliotecas de un entorno de enlace cruzado estandarizado (a menudo construido a partir de C). Linux, Microsoft Windows y la familia BSD, incluyendo Mac OS X, utilizan una estructura de enlace que permite integrar (enlazar) bibliotecas de varios lenguajes en un ejecutable nativo. Java, por diseño, no participa en esta interoperabilidad sin medidas especiales ( JNI ).
Aplicaciones que utilizan GEOS
GEOS se enlaza y se distribuye internamente en las aplicaciones populares que se enumeran a continuación; y, al delimitar e implementar clases de geometría basadas en estándares disponibles para GDAL , que a su vez es un motor interno ampliamente compatible en SIG, GEOS se convierte en una implementación de geometría central en aún más aplicaciones:
- GDAL - OGR - manipulación de datos rasterizados y vectoriales
- QGIS - Sistema de información geográfica (SIG) de escritorio, multiplataforma y de código abierto
- PostGIS : tipos y operaciones espaciales para PostgreSQL
- GeoDjango: compatibilidad de Django con bases de datos habilitadas para SIG.
- Google Earth : un globo terráqueo virtual y un programa de imágenes del mundo.
- Biblioteca y aplicación GRASS GIS
- MapServer : un entorno de desarrollo de código abierto para crear aplicaciones de internet con capacidades espaciales.
- World Wind Java : tecnología de código abierto de la NASA para la creación de globos virtuales e imágenes del mundo.
- Orfeo Toolbox : una biblioteca para el procesamiento de imágenes satelitales.
- R – Software estadístico de código abierto con extensiones para el análisis de datos espaciales.
- SAGA GIS [ 7 ] Un software SIG de código abierto multiplataforma
Véase también
- DE-9IM , un modelo topológico
- Topología geoespacial
Referencias
- ↑ "Versión 1.20.0" . 30 de agosto de 2024. Consultado el 22 de septiembre de 2024 .
- ↑ "Mapa de software SIG libre y de código abierto de 2012: una guía para facilitar la investigación, el desarrollo y la adopción" Archivado el 18 de mayo de 2013 en Wayback Machine , S. Steiniger y AJS Hunter
- ↑ Davis, Martin (26 de septiembre de 2007). "Secretos del paquete de topología JTS" . Recuperado el 26 de enero de 2017 .
- ↑ Una definición formal de relaciones topológicas binarias por Max Egenhofer
- ↑ "Historia de JTS y GEOS - M. Davis" . 10 de junio de 2007. Consultado el 27 de mayo de 2013 .
- ↑ "JTS | Preguntas frecuentes" . locationtech.github.io . Consultado el 18 de julio de 2019 .
- ↑ "SAGA GIS" . Consultado el 29 de septiembre de 2020 .
Enlaces externos
- Algoritmos geométricos
- Interfaces de programación de aplicaciones
- Software libre programado en Java.
- Software de datos e información geográfica
- Topología geométrica