Los algoritmos de "geometría mínima delimitada" y "polígono recortado" de QGIS se implementan en /python/plugins/processing/algs/qgis/MinimumBoundingGeometry.py y /src/analysis/processing/qgsalgorithmclip.cpp .
Si sigues la fuente de estos, encontrarás que dependen de funciones relacionadas con la geometría de una clase C++ llamada QgsGeometry
En concreto QgsGeometry::convexHull()
y QgsGeometry::intersection()
. El algoritmo de "recorte" también contiene una lógica adicional para construir una unión de geometrías para formar un polígono de máscara, así como para comprobar los puntos dentro del polígono, en el caso de vectores no poligonales.
La lectura de la QgsGeometry
muestra que los algoritmos reales se implementan en una biblioteca llamada GEOS . GEOS es un puerto C++ de una biblioteca Java llamada Suite de topología del STC que implementa un conjunto de algoritmos relacionados con la geometría.
El núcleo del ConvexHull
El algoritmo de GEOS se aplica aquí utilizando un algoritmo llamado La exploración de Graham . La implementación de la intersección en GEOS es un poco más complicada y extendida, pero aquí es un lugar para empezar a buscar. GEOS soporta varias operaciones binarias entre geometrías y la "intersección" es sólo una de ellas.
En general, GEOS es el lugar donde buscar las implementaciones de los diversos algoritmos vectoriales en QGIS, pero también hay algunos algoritmos raster en QGIS que son implementados por el GDAL biblioteca.
0 votos
docs.qgis.org/testing/es/docs/user_manual/processing/
5 votos
Es un software de código abierto. Como decía el viejo anuncio de salsa de espaguetis: "Está ahí dentro".