Volver al catálogo
Season 42 8 Episodios 33 min 2026

Shapely

v2.1 — Edición 2026. Manipulación y análisis de objetos geométricos en el plano cartesiano. Aprende sobre el modelo de datos espaciales, operaciones constructivas, predicados, operaciones de conjuntos e indexación espacial con Shapely 2.1 (2026).

Análisis geoespacial Operaciones geométricas
Shapely
Reproduciendo ahora
Click play to start
0:00
0:00
1
El modelo de datos espaciales
Sumérgete en los conceptos fundamentales de Shapely y cómo modela el mundo. Aprenderás la diferencia entre puntos, curvas y superficies, y cómo la teoría de conjuntos de puntos sustenta la geometría plana.
3m 52s
2
Creación y serialización de geometrías
Descubre cómo construir y transportar geometrías de manera eficiente en Shapely. Aprenderás la diferencia entre la creación de objetos singulares y las ufuncs vectorizadas de alto rendimiento, así como la serialización en WKT y GeoJSON.
4m 08s
3
Medición y propiedades
Aprende a extraer medidas críticas de tus geometrías. Entenderás cómo calcular el área, la longitud y métricas de distancia avanzadas como la Hausdorff distance.
4m 01s
4
Predicados espaciales y la DE-9IM
Domina el arte de comprobar relaciones espaciales. Aprenderás a usar predicados booleanos para determinar exactamente cómo interactúan dos formas, impulsado por la matriz DE-9IM.
4m 16s
5
Operaciones de teoría de conjuntos
Descubre cómo fusionar, cortar y dividir geometrías. Aprenderás a usar operaciones matemáticas de conjuntos como la intersección, la diferencia y la unión para crear formas completamente nuevas.
4m 00s
6
Operaciones constructivas: Buffers y Hulls
Aprende a generar sintéticamente nuevas formas de límites. Explorarás el buffering, la creación de zonas de seguridad y la envoltura de puntos dispersos utilizando convex hulls y concave hulls.
4m 14s
7
Operaciones constructivas avanzadas
Lleva la manipulación de formas al siguiente nivel. Aprenderás a limpiar polígonos masivos mediante la simplificación, a unir elementos con snap y a generar diagramas de Voronoi.
4m 13s
8
Indexación espacial de alto rendimiento con STRtree
Desbloquea consultas espaciales ultrarrápidas. Aprenderás a usar el árbol Sort-Tile-Recursive (STR) para filtrar instantáneamente conjuntos de datos espaciales masivos y realizar búsquedas de nearest neighbor casi instantáneas.
4m 23s

Episodios

1

El modelo de datos espaciales

3m 52s

Sumérgete en los conceptos fundamentales de Shapely y cómo modela el mundo. Aprenderás la diferencia entre puntos, curvas y superficies, y cómo la teoría de conjuntos de puntos sustenta la geometría plana.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 1 de 8. Puede que estés acostumbrado a tratar las geometrías de mapas como simples listas de coordenadas, que usas principalmente para dibujar formas en pantalla. Pero cuando necesitas calcular si un track GPS cruza un límite específico, esa simple lógica de dibujo se queda corta. Para hacer un análisis espacial matemático de verdad, necesitas el Spatial Data Model. Primero, tenemos que aclarar una fuente de confusión muy común sobre este modelo. Shapely funciona estrictamente sobre un plano cartesiano bidimensional. Puedes pasarle las coordenadas X, Y y Z al crear tus geometrías. Shapely las va a parsear e incluso guardará ese valor Z en memoria. Pero ignora por completo la coordenada Z durante cualquier análisis espacial. Si le pides la distancia entre dos puntos, Shapely calcula la distancia plana en 2D. No calcula volúmenes en 3D ni distancias en 3D. Es una librería puramente planar. Aquí está la clave. Shapely está construida sobre la teoría matemática de conjuntos de puntos. No ve una forma simplemente como el puñado de vértices que has escrito en tu código. En su lugar, trata cada geometría como un conjunto riguroso que contiene un número infinito de puntos. Bajo este modelo, cada geometría divide todo el plano 2D en tres partes distintas. El interior es la sustancia real de la forma. El boundary es el borde que enmarca la forma. El exterior es el resto del plano infinito que no forma parte de la forma. Imagina que modelamos un parque urbano para ver cómo se aplican estos tres conceptos. Empiezas con una fuente de agua, representada como una geometría Point. Un Point es cero-dimensional. Representa una ubicación única y exacta en el plano. Como no tiene longitud ni área, su interior consiste únicamente en esa coordenada específica. Un Point no tiene boundary en absoluto. Cualquier otra coordenada de todo el plano cartesiano forma su exterior. Luego, añades un camino que lleva a la fuente. Esto se modela como un LineString. Un LineString es una geometría unidimensional definida por una secuencia ordenada de vértices de coordenadas. Incluso si solo le pasas una coordenada de inicio y otra de fin, Shapely entiende el LineString como el conjunto infinito de puntos que forman el camino continuo entre ellas. El interior es toda la longitud continua del camino. El boundary consta exactamente de dos puntos: la primera coordenada de inicio y la última coordenada de fin. Por último, modelas la huella del propio parque usando un Polygon. Un Polygon es una geometría bidimensional con un área medible. Lo defines usando un anillo cerrado de coordenadas, lo que significa que el primer y el último punto son idénticos. Este anillo exterior forma el boundary del Polygon. El interior es el conjunto infinito de puntos encerrados dentro de ese boundary. Los Polygons también pueden contener huecos, como una zona de conservación restringida dentro del parque. El borde de ese hueco simplemente actúa como un boundary interior, separando limpiamente el interior válido del parque del espacio exterior vacío que hay dentro del hueco. Shapely no ve tu geometría como un wireframe hueco de coordenadas; ve una región continua del espacio dividida matemáticamente en interior, boundary y exterior. Si estos episodios te resultan útiles y quieres apoyar el programa, busca DevStoriesEU en Patreon. Eso es todo por este episodio. Gracias por escuchar, ¡y sigue construyendo!
2

Creación y serialización de geometrías

4m 08s

Descubre cómo construir y transportar geometrías de manera eficiente en Shapely. Aprenderás la diferencia entre la creación de objetos singulares y las ufuncs vectorizadas de alto rendimiento, así como la serialización en WKT y GeoJSON.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 2 de 8. Estás procesando un batch de coordenadas espaciales. Escribes un loop para convertir cada par de coordenadas en una forma, uno a uno. Funciona, pero a medida que tu dataset crece hasta alcanzar millones de puntos, tu aplicación se frena por completo. El problema es el overhead de Python, y la solución requiere saltarse por completo la creación de objetos estándar. Este episodio trata sobre la creación y serialización de geometrías. Crear formas es el punto de partida lógico. Si trabajas con una sola ubicación, instanciar una geometría es sencillo. Importas la clase Point en singular y le pasas un valor X e Y. Es fácil de leer, pero es lento. Aquí está la clave. Shapely proporciona funciones universales vectorizadas que operan directamente sobre arrays de NumPy. En lugar de usar la clase Point en singular en un loop de Python, usas la función en plural shapely punto points. Le pasas un array bidimensional de coordenadas, y delega toda la iteración al nivel de C, que está altamente optimizado. El resultado es un array de objetos geométricos que se devuelve en una fracción del tiempo. Esto se aplica a todo, con funciones en plural disponibles para line strings, polygons y linear rings. Supongamos que estás creando una herramienta de routing y necesitas cargar un dataset de mil puntos de entrega. Los datos llegan como un array de payloads GeoJSON. Esto nos lleva a la serialización. Necesitas parsear esos strings para convertirlos en objetos geométricos reales en memoria. Podrías tener la tentación de usar el parsing estándar de JSON y extraer las coordenadas manualmente para crear tus formas. No lo hagas. Shapely tiene funciones de entrada y salida integradas para los tres formatos espaciales principales: Well-Known Text, Well-Known Binary y GeoJSON. Al igual que la creación de geometrías, estas funciones de parsing están vectorizadas. Coges tu array completo de mil strings GeoJSON y lo pasas directamente a la función shapely punto from geojson. Parsea todo el batch a la vez y devuelve un array de geometrías de alto rendimiento. Si tus datos estuvieran en formato de texto, usarías shapely punto from wkt. Si estuvieran en formato binario, usarías shapely punto from wkb. Esto cubre las entradas. ¿Y las salidas? Una vez que hayas terminado de procesar tus puntos de entrega, tienes que guardarlos o enviarlos a una base de datos. Inviertes el proceso usando las funciones de exportación. Si estás haciendo debugging y necesitas leer las coordenadas con tus propios ojos, usas shapely punto to wkt. Well-Known Text te da un string legible para humanos, detallando el tipo de geometría seguido de las coordenadas. Sin embargo, el parsing de texto es costoso y ocupa espacio. Si vas a enviar estos datos a una base de datos espacial, o almacenarlos para más tarde, deberías usar shapely punto to wkb. Well-Known Binary es la representación de bytes en bruto de la geometría. Es significativamente más pequeño, evita la pérdida de precisión por la conversión de strings de coma flotante, y es mucho más rápido de leer y escribir para las máquinas. Pasas tu array de geometrías a shapely punto to wkb, y obtienes un array de byte strings listo para almacenar. Siempre que muevas datos espaciales hacia dentro o fuera de tu aplicación, recuerda que los loops de Python son el enemigo. El hábito más importante para la performance es pasar arrays completos a las funciones en plural de Shapely, dejando que la librería C subyacente haga el trabajo pesado en una sola pasada. ¡Gracias por escuchar, feliz programación a todos!
3

Medición y propiedades

4m 01s

Aprende a extraer medidas críticas de tus geometrías. Entenderás cómo calcular el área, la longitud y métricas de distancia avanzadas como la Hausdorff distance.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 3 de 8. La distancia normal te dice lo cerca que están dos líneas entre sí. Pero si quieres saber lo máximo absoluto que se separan, la distancia normal es completamente inútil. Para responder a eso, necesitas entender las mediciones y las propiedades. Cada objeto de geometría en Shapely viene con atributos integrados que describen sus dimensiones físicas. Los más básicos son area, length y bounds. La propiedad area te da el espacio bidimensional que cubre una forma. Para un polígono, es un número positivo. Para puntos y líneas, el area es exactamente cero. La propiedad length devuelve la extensión unidimensional de una geometría. Para una línea, es la distancia desde el principio hasta el final a lo largo del recorrido. La propiedad bounds te da los límites exactos de las coordenadas de tu forma. Devuelve una tupla de cuatro números que representa la X mínima, la Y mínima, la X máxima y la Y máxima. Este es tu bounding box. Imagina un escenario donde tienes dos tracks de GPS de corredores, ambos representados como LineStrings. Lees la propiedad length para ver la distancia total que corrió cada persona. Lees la propiedad bounds para definir el viewport rectangular exacto necesario para mostrar ambas rutas en una pantalla. Las matemáticas se complican cuando necesitas medir el espacio entre esos dos tracks. La medición de distancia estándar devuelve la separación más corta absoluta entre dos geometrías. Escanea el track A, escanea el track B, y encuentra el único par de puntos más cercano. Si los dos corredores se cruzaron en una intersección a mitad de su carrera, la distancia estándar entre sus tracks es cero. Aquí está la clave. La gente suele confundir la distancia normal con la distancia de Hausdorff. La distancia normal encuentra los puntos más cercanos. La distancia de Hausdorff encuentra la distancia más lejana entre los puntos más cercanos. Piensa en la distancia de Hausdorff como una medida de la desviación máxima. Representa la separación más larga que te verías obligado a cruzar si alguien te colocara en el peor punto posible de un track y te dijera que caminaras hasta el punto más cercano del otro track. Si nuestros dos corredores empezaron en el mismo lugar, se separaron por dos millas a mitad de su entrenamiento, y terminaron en el mismo lugar, la distancia normal es cero. La distancia de Hausdorff es de dos millas. Define la separación en el peor de los casos a lo largo de toda la longitud de las dos geometrías. Hay una función de medición más llamada minimum clearance. Esta no compara dos objetos diferentes. Mide la estabilidad estructural de una sola geometría. El minimum clearance calcula la distancia más pequeña que cualquier nodo puede moverse antes de que la geometría colapse en un estado inválido, como una línea superponiéndose a sí misma. Si tu geometría tiene un minimum clearance diminuto, las coordenadas están muy apretadas entre sí. Un ligero error de redondeo durante un export de base de datos podría romper la forma por completo. Si quieres simplificar los datos de los corredores para ahorrar tamaño de archivo, comprobar el minimum clearance te dice exactamente cuánto puedes desplazar los puntos antes de que la geometría se arruine a sí misma. Saber lo cerca que están dos formas maneja las colisiones básicas. Saber el límite máximo absoluto de su separación dicta lo bien que entiendes realmente la relación espacial entre ellas. Gracias por pasar unos minutos conmigo. Hasta la próxima, cuídate.
4

Predicados espaciales y la DE-9IM

4m 16s

Domina el arte de comprobar relaciones espaciales. Aprenderás a usar predicados booleanos para determinar exactamente cómo interactúan dos formas, impulsado por la matriz DE-9IM.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 4 de 8. Estás trazando una nueva línea de metro cerca de un humedal protegido. Necesitas saber si la vía atraviesa el agua directamente o si solo la bordea. ¿Cómo lo determina matemáticamente el ordenador? Utiliza una ingeniosa matriz de tres por tres para responder a la pregunta. Esto nos lleva a los predicados espaciales y al Modelo de Nueve Intersecciones Dimensionalmente Extendido, o DE-9IM. Los predicados espaciales son funciones binarias. Comparan dos geometrías y devuelven exactamente una cosa: True o False. No crean nuevas formas. No calculan áreas superpuestas. Simplemente responden a preguntas de sí o no sobre relaciones topológicas. Internamente, Shapely evalúa estas relaciones utilizando el DE-9IM. Cada geometría tiene tres partes: un interior, un límite y un exterior. El DE-9IM es una matriz que comprueba las intersecciones entre estas tres partes de la primera geometría y las tres partes de la segunda. Tres partes multiplicadas por tres partes te dan nueve intersecciones posibles. Dependiendo de cuál de esas intersecciones dé como resultado un conjunto vacío, un punto, una línea o un área, Shapely determina la relación exacta. Apliquemos esto a la línea de metro y al humedal. El predicado más general es intersects. Si la vía comparte algún punto, línea o área con el humedal, intersects devuelve True. Es la comprobación básica que lo engloba todo. Si intersects es False, las dos geometrías están completamente separadas en el espacio. Pero a menudo necesitas más precisión. Quieres saber si la línea de metro atraviesa activamente el humedal. Para esto, usas crosses. Una línea cruza un polígono si su interior interseca el interior del polígono, pero la línea también se extiende fuera de él. La matriz DE-9IM comprueba que la intersección de sus interiores sea una línea, y que el interior de la línea también interseque el exterior del polígono. Si ambas son ciertas, crosses devuelve True. ¿Qué ocurre si la vía discurre exactamente a lo largo del borde del humedal sin entrar en el agua? Ahí es donde entra en juego touches. Dos geometrías se tocan si comparten al menos un punto, pero sus interiores no se intersecan en absoluto. Solo interactúan sus límites. Si la vía se desvía aunque sea un milímetro hacia el interior del humedal, touches pasa a ser False. Ahora imagina una estación de metro construida completamente dentro del humedal. Aquí, compruebas la contención. La gente a menudo confunde contains y within, pero son simplemente operaciones inversas la una de la otra. Si el humedal contiene la estación, entonces la estación está dentro del humedal. Geométricamente, esto significa que el interior y el límite de la estación están completamente encerrados por el interior del humedal. Ninguna parte de la estación interseca el exterior del humedal. Puedes escribir tu código comprobando si el humedal hace contains de la estación, o comprobando si la estación está within el humedal. El resultado es exactamente el mismo. Aquí está la clave. No necesitas memorizar la matriz de nueve intersecciones para trazar tu línea de metro, pero saber que existe explica por qué estas comprobaciones binarias son tan fiables. Cada predicado espacial con nombre es simplemente un patrón específico de flags True y False en esa matriz matemática subyacente. Gracias por acompañarme. Espero que hayas aprendido algo nuevo.
5

Operaciones de teoría de conjuntos

4m 00s

Descubre cómo fusionar, cortar y dividir geometrías. Aprenderás a usar operaciones matemáticas de conjuntos como la intersección, la diferencia y la unión para crear formas completamente nuevas.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 5 de 8. Los diagramas de Venn no solo sirven para conjuntos lógicos o queries de bases de datos. Puedes usar los mismos principios matemáticos para dividir físicamente la geografía del mundo real. Para ello, necesitas operaciones de teoría de conjuntos. En Shapely, cada geometría es esencialmente un conjunto infinito de puntos en un plano bidimensional. Como son conjuntos, puedes manipularlos usando la teoría de conjuntos clásica. Primero, debemos aclarar una fuente común de confusión. Los predicados espaciales, como comprobar si dos formas se tocan o se cruzan, evalúan una condición y devuelven un simple True o False. Las operaciones de teoría de conjuntos hacen algo completamente diferente. Devuelven objetos de geometría totalmente nuevos. Toman dos formas de input, analizan sus puntos superpuestos y construyen una tercera forma completamente nueva como output. Imagina un escenario concreto. Tienes dos datasets de polígonos. Uno representa un antiguo mapa de zonas inundables. El otro es un modelo de riesgo de inundación actualizado. Necesitas calcular el área exacta donde coinciden estos dos modelos. Para esto, usas el método intersection. Llamas a intersection en la primera geometría y le pasas la segunda geometría como argumento. Shapely analiza la superposición espacial y devuelve un nuevo polígono que contiene solo los puntos que existen tanto en el mapa antiguo como en el nuevo. Si las dos formas no se superponen en absoluto, devuelve una geometría vacía. Ahora bien, ¿qué pasa si necesitas encontrar las zonas de riesgo estrictamente nuevas? Son los barrios que eran seguros en el mapa antiguo, pero que ahora están en la zona de inundación actualizada. Aquí, usas el método difference. Coges la geometría de tu nuevo modelo de inundación y llamas a difference, pasándole la geometría del mapa antiguo. Esto devuelve una forma que contiene todos los puntos del nuevo modelo, restando explícitamente cualquier punto que ya estuviera en el antiguo. El orden es crucial aquí. Si lo inviertes y llamas a difference en el mapa antiguo, pasándole el nuevo modelo, obtienes un resultado completamente distinto. Obtienes las áreas que ya no se consideran de riesgo. Es simplemente una resta espacial. A veces no quieres comparar formas, solo quieres combinarlas. Si los servicios de emergencia necesitan un mapa maestro de cualquier lugar que haya sido marcado alguna vez como riesgo de inundación, usas el método union. Llamas a union en una forma, le pasas la otra, y Shapely las fusiona. Si las formas se superponen, los límites internos se disuelven. El output es una única geometría continua que representa todos los puntos de ambas formas originales. Finalmente, está el método symmetric difference. Piénsalo como el equivalente espacial de una operación exclusive OR. Devuelve una nueva geometría que contiene puntos que están en el mapa antiguo o en el mapa nuevo, pero absolutamente no en ambos. En nuestro escenario de inundación, esta única operación te da exactamente las áreas de discrepancia entre los dos modelos. Devuelve como output las zonas de riesgo recién añadidas junto con las zonas de riesgo recién eliminadas, vaciando por completo las áreas donde los modelos coinciden. Aquí está la clave. Cuando dejas de pensar en los límites espaciales como conceptos geográficos complejos y empiezas a tratarlos como conjuntos matemáticos básicos, calcular superposiciones y exclusiones complejas se convierte en un proceso predecible y completamente estándar. Eso es todo por este episodio. ¡Gracias por escuchar, y sigue creando!
6

Operaciones constructivas: Buffers y Hulls

4m 14s

Aprende a generar sintéticamente nuevas formas de límites. Explorarás el buffering, la creación de zonas de seguridad y la envoltura de puntos dispersos utilizando convex hulls y concave hulls.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 6 de 8. Un simple punto matemático tiene exactamente un área de cero. Es solo una ubicación. Pero, ¿qué pasa si necesitas representar un radio de explosión alrededor de esa ubicación? Puedes transformar instantáneamente ese punto de cero dimensiones en un polígono enorme y preciso. Este es el poder de las operaciones constructivas, específicamente los buffers y los hulls. Las operaciones constructivas cogen una geometría existente y construyen una geometría nueva y diferente a partir de ella, basándose en sus propiedades espaciales. Puedes pensar en ellas como envoltorios de seguridad para tus datos espaciales. La operación constructiva más utilizada es el buffer. Le pasas un valor de distancia a la función buffer, y Shapely te devuelve un polígono que representa todos los puntos que están a esa distancia exacta de tu geometría original. Si tienes una línea que representa la trayectoria de un vertido químico a lo largo de una autopista y necesitas establecer una zona de seguridad de 50 metros, llamas a buffer sobre esa geometría de línea con una distancia de 50. El resultado es un nuevo polígono que traza toda la ruta, expandiéndose hacia afuera exactamente 50 metros en todas las direcciones. Aquí está la clave. Los buffers no solo crecen. También pueden encogerse. Si le pasas una distancia positiva, la geometría se infla. Si le aplicas una distancia negativa a un polígono, la geometría se desinfla. Un buffer negativo tira de los límites hacia adentro. Esto es increíblemente útil para encontrar el núcleo interior seguro de una zona, aislando el área que está a una distancia estricta de los bordes peligrosos. A veces no necesitas un buffer exacto alrededor de formas complejas. Solo necesitas los límites absolutos de tus datos. Llamar a la propiedad envelope te da exactamente eso. Te devuelve el bounding box, que es el rectángulo más pequeño y perfectamente vertical que encierra por completo tu geometría. Es matemáticamente barato de calcular y perfecto para una indexación espacial rápida. Pero, ¿qué pasa cuando tus datos no son una forma sólida, sino una colección dispersa de puntos? Si tienes docenas de muestras de suelo contaminado y necesitas dibujar un único límite continuo alrededor del área afectada, necesitas un hull. Shapely te da dos formas principales de hacerlo. El convex hull calcula el polígono convexo más pequeño que contiene todas tus geometrías. Puedes imaginarte esto como estirar una goma elástica alrededor de un tablero lleno de clavijas. La goma elástica se ajusta firmemente a las clavijas más exteriores. Como es convexo, el límite nunca se hunde hacia adentro. No hay ángulos interiores mayores de 180 grados. Aunque el convex hull es fiable, a menudo incluye una gran cantidad de espacio vacío si tus puntos forman una media luna o un grupo irregular. Si necesitas un ajuste más ceñido, usas un concave hull. En lugar de una goma elástica rígida, un concave hull actúa como plástico retráctil. Permite que el límite se hunda hacia adentro para seguir la huella real de tus datos. Tú controlas lo apretado que envuelve ajustando un parámetro que limita la longitud máxima permitida de los bordes del límite. Unos límites más estrictos obligan al borde a plegarse en los huecos entre los puntos, dándote un mapa muy preciso y realista de ese suelo contaminado. La diferencia entre estas herramientas se reduce a lo mucho que se ajustan a tus datos. El envelope te da una caja holgada y rápida, el convex hull se estira firmemente a través de los puntos exteriores extremos, el concave hull envuelve de forma retráctil la forma exacta, y el buffer rellena estrictamente los bordes a una distancia definida. Si quieres ayudar a que estos episodios continúen, puedes apoyar el programa buscando DevStoriesEU en Patreon. Eso es todo por este episodio. ¡Gracias por escuchar, y a seguir construyendo!
7

Operaciones constructivas avanzadas

4m 13s

Lleva la manipulación de formas al siguiente nivel. Aprenderás a limpiar polígonos masivos mediante la simplificación, a unir elementos con snap y a generar diagramas de Voronoi.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 7 de 8. Intenta renderizar una línea costera de un millón de puntos en un mapa web y el navegador del usuario se colgará rápidamente. Necesitas una forma de reducir esa huella de datos al uno por ciento de su tamaño original, haciendo que se vea exactamente igual. Esto requiere Operaciones Constructivas Avanzadas. La herramienta principal para esta limpieza de datos es la función simplify. A veces, los oyentes creen que simplificar una forma simplemente significa saltarse uno de cada dos o tres puntos en un array. Hacer eso destruye la geometría. Crea líneas que se cruzan sobre sí mismas, colapsa pequeñas islas y arruina la estructura topológica. La función simplify de Shapely evalúa la geometría real. Le pasas tu compleja línea costera y un valor de tolerancia. La función elimina los vértices que no se desvían de la forma principal más allá de esa tolerancia. Lo más importante es que Shapely te da un flag para preservar la topología. Cuando está activado, el algoritmo comprueba activamente si eliminar un punto hará que un polígono se cruce consigo mismo o se divida en partes no válidas. Garantiza que tu línea costera altamente comprimida siga siendo matemáticamente válida. Una vez que simplificas una capa base pesada, a menudo necesitas que otras capas se alineen perfectamente con ella. Supongamos que tienes parcelas de terreno o linderos que terminan justo en el agua. Como acabas de simplificar la línea costera, sus bordes se han desplazado ligeramente. Esto crea superposiciones microscópicas o espacios vacíos, conocidos como slivers. Esto lo arreglas usando la función snap. Proporcionas la geometría de tus linderos, la geometría de la línea costera y una distancia de tolerancia estricta. Snap examina los vértices de la primera forma. Si un vértice se encuentra dentro de la distancia de tolerancia de un vértice o segmento de la segunda forma, es atraído directamente hacia él. Los puntos fuera de la tolerancia se quedan exactamente donde están. Esto crea un ajuste perfecto y sin fisuras entre geometrías adyacentes sin distorsionar el resto de la forma. Eso cubre la limpieza de formas existentes. La otra cara de las operaciones constructivas es dividir el espacio vacío usando puntos. Si tomas los vértices de una geometría, puedes pasarlos a la función delaunay triangles. Esto conecta esos puntos para formar una malla continua de triángulos que no se superponen. La lógica dibuja estos triángulos específicamente para maximizar los ángulos internos más pequeños. Esto evita triángulos largos y con forma de aguja, creando una malla equilibrada muy útil para renderizar terreno. Si solo quieres el contorno de estas conexiones en lugar de formas rellenas, puedes configurar un flag para que devuelva solo los bordes de las líneas. Muy relacionada está la función voronoi polygons. Mientras que Delaunay conecta puntos, Voronoi dibuja los límites entre ellos. Proporcionas una geometría y Shapely utiliza sus vértices para dividir el área circundante en regiones poligonales completamente distintas. Cualquier ubicación dentro de un polígono de Voronoi específico está más cerca de su punto generador central que de cualquier otro punto de todo el conjunto. Si estás analizando una dispersión de centros de reparto, los polígonos de Voronoi mapean al instante la zona de cobertura exacta para cada centro basándose en pura proximidad. Al igual que con Delaunay, puedes indicar a la función que devuelva solo los bordes de los límites si no necesitas polígonos sólidos. Esta es la clave. Los datos espaciales del mundo real son densos, están desconectados y rara vez se alinean perfectamente. Las operaciones constructivas como simplify, snap y voronoi te dan las herramientas para imponer un orden matemático, haciendo que los datos sean lo bastante ligeros para renderizar y lo bastante precisos para analizar. Gracias por pasar unos minutos conmigo. Hasta la próxima, cuídate.
8

Indexación espacial de alto rendimiento con STRtree

4m 23s

Desbloquea consultas espaciales ultrarrápidas. Aprenderás a usar el árbol Sort-Tile-Recursive (STR) para filtrar instantáneamente conjuntos de datos espaciales masivos y realizar búsquedas de nearest neighbor casi instantáneas.

Descargar
Hola, soy Alex de DEV STORIES DOT EU. Shapely, episodio 8 de 8. Comparar un solo punto con un millón de polígonos requiere muchísimo tiempo de computación, pero algunas aplicaciones lo hacen en milisegundos. No calculan todas las distancias. Filtran el 99 % de los datos antes de hacer una sola operación matemática. Esto es indexación espacial de alto rendimiento con STRtree. Supongamos que quieres encontrar la cafetería más cercana a la coordenada GPS actual de un usuario, de entre diez mil ubicaciones. Si calculas la distancia exacta a cada una de ellas, tu sistema se ralentizará hasta detenerse. En su lugar, la indexación espacial utiliza un R-tree. Piensa en un R-tree como un sistema de carpetas jerárquico para un espacio bidimensional. Dibuja un rectángulo simple, llamado bounding box o envelope, alrededor de grupos de geometrías cercanas. Luego dibuja cajas más grandes alrededor de esas cajas. Comprobar si dos rectángulos simples se superponen es una operación computacionalmente barata. En Shapely, la implementación específica es el STRtree, que significa Sort-Tile-Recursive. Puedes crear uno pasándole un array de geometrías al constructor. Internamente, esto hace un bulk-load del índice. El árbol se construye una sola vez y es inmutable. No puedes añadir ni eliminar elementos después de crearlo. Tienes que preparar todo tu dataset por adelantado. Una vez que el árbol existe, lo buscas usando el método query. Le pasas una geometría de entrada, y el método devuelve un array de NumPy de índices enteros. Estos índices mapean directamente a la secuencia original de geometrías que usaste para construir el árbol. Si introduces varias geometrías a la vez, query devuelve un array bidimensional, emparejando los índices de tus inputs con los índices coincidentes en el árbol. Aquí está la clave. El índice base de un STRtree solo comprueba los bounding boxes, no las geometrías exactas. Si haces una query con un polígono complejo, el árbol usa el envelope cuadrado de ese polígono para encontrar coincidencias. Esto te da una lista corta de candidatos que contiene falsos positivos. Para obtener una respuesta exacta, Shapely te permite pasar un predicado espacial, como intersects o contains, directamente al método query como argumento. El árbol primero usa los bounding boxes baratos para encontrar candidatos, y luego evalúa automáticamente tu predicado exacto en esa lista corta. Esto mantiene el trabajo matemático pesado abajo, en el código C compilado. Más allá de los solapamientos, el STRtree destaca en proximidad. Volviendo a nuestro escenario de la cafetería, no necesitas comprobar los envelopes manualmente. Usas el método query nearest. Le pasas el punto GPS de tu usuario, y el árbol recorre sus cajas jerárquicas para encontrar la geometría absolutamente más cercana sin medir contra las diez mil. Devuelve inmediatamente el índice de la cafetería más cercana. También puedes especificar un parámetro para devolver un array de los top N vecinos más cercanos, o establecer un umbral de distancia máxima para limitar el radio de búsqueda por completo. También hay un método nearest distinto, que compara dos árboles separados entre sí para encontrar los pares de geometrías coincidentes más cercanos entre ellos. Las operaciones de geometría reales son siempre la parte más costosa del análisis espacial. El STRtree actúa como un filtro implacable. Evita que desperdicies ciclos de CPU en geometrías que no están nada cerca unas de otras, proporcionando una lista corta, pequeña y manejable, para que tus comprobaciones matemáticas exactas solo se ejecuten cuando sea absolutamente necesario. Con esto terminamos nuestra serie sobre Shapely. Te animo muchísimo a que explores la documentación oficial y pruebes estos conceptos de indexación de forma práctica en tus propios datasets. Si tienes flujos de trabajo o herramientas que quieres que cubramos en futuras series, visita devstories dot eu y déjanos una sugerencia. Gracias por escucharnos. ¡Hasta la próxima!