Hola, Carlos:
Lo he resuelto con:
voronoi_esp <- nucleos_esp |>
  st_union() |>
  st_voronoi() |>
  st_collection_extract()
voronoi_esp <- voronoi_esp[unlist(st_intersects(nucleos_esp, voronoi_esp))]

De todas formas , muchas gracias, como siempre.

Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Junta de Comunidades de Castilla – La Mancha


De: Carlos Ortega <c...@qualityexcellence.es>
Enviado el: viernes, 8 de septiembre de 2023 16:14
Para: Isidro Hidalgo Arellano <ihida...@jccm.es>
CC: r-help-es@r-project.org
Asunto: Re: [R-es] Orden en los polígonos de Voronoi

Hola Isidro,

¿Qué tal?
Se lo he preguntado a chatGPT....

Y me dice esto:


La función st_voronoi() del paquete sf en R calcula los polígonos de Voronoi a 
partir de un conjunto de puntos. Sin embargo, el orden de los polígonos 
resultantes no necesariamente coincide con el orden de los puntos de entrada.

Para mantener el orden original de los puntos, puedes hacer lo siguiente:

  1.  Calcula los polígonos de Voronoi.
  2.  Para cada punto de entrada, determina cuál polígono de Voronoi contiene 
ese punto. Este paso garantizará que el polígono de Voronoi correspondiente al 
primer punto sea el primero en la lista, y así sucesivamente.
  3.  Almacena los polígonos de Voronoi en el mismo orden que los puntos de 
entrada.

#-------
library(sf)

# Crear algunos puntos (sustituir por tus datos)
pts <- st_as_sf(data.frame(x = c(1,3,5), y = c(1,3,2)), coords = c("x", "y"), 
crs = 4326)

# Calcular polígonos de Voronoi
voronoi <- st_voronoi(pts)

# Convertir Voronoi a sf
voronoi_sf <- st_collection_extract(voronoi, "POLYGON")

# Para cada punto, encontrar el polígono de Voronoi correspondiente
order_voronoi <- integer(nrow(pts))

for (i in 1:nrow(pts)) {
  for (j in 1:length(voronoi_sf)) {
    if (st_intersects(pts[i, ], voronoi_sf[j, ], sparse = FALSE)[1, 1]) {
      order_voronoi[i] <- j
      break
    }
  }
}

# Ordenar polígonos de Voronoi de acuerdo con el orden de los puntos
ordered_voronoi <- voronoi_sf[order_voronoi]

# Ahora, ordered_voronoi tiene los polígonos en el orden deseado.
#-------

A ver si así te funciona...

Gracias,
Carlos Ortega
www.qualityexcellence.es<http://www.qualityexcellence.es>

El vie, 8 sept 2023 a las 14:14, Isidro Hidalgo Arellano via R-help-es 
(<r-help-es@r-project.org<mailto:r-help-es@r-project.org>>) escribió:
Buenos días:
La función st_voronoi() del paquete sf desordena los polígonos resultantes. La 
he usado con los puntos de los municipios de España y el polígono de Voronoi nº 
1 no es el correspondiente al primer núcleo de población.
¿Sabéis alguna forma de mantener el orden original, según los puntos usados?
He intentado relacionar los polígonos resultantes con cada punto usado. Esto en 
teoría es posible, ya que el punto es el centroide del polígono, pero no doy 
con la tecla:

library(sf)
library(mapSpain)
library(tidyverse)
clm <- esp_get_prov_siane("Castilla-La Mancha", epsg = 3035)
municipios_esp <- esp_get_munic_siane(year = 2019, epsg = 3035) # AVISO: tarda 
un poco
nucleos_esp <- esp_get_capimun(year = 2022, epsg = 3035)
voronoi_esp <- nucleos_esp |>
  st_union() |>
  st_voronoi()

Como siempre, mil gracias...

Isidro Hidalgo Arellano
Observatorio del Mercado de Trabajo
Junta de Comunidades de Castilla - La Mancha


        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es@r-project.org<mailto:R-help-es@r-project.org>
https://stat.ethz.ch/mailman/listinfo/r-help-es


--
Saludos,
Carlos Ortega
www.qualityexcellence.es<http://www.qualityexcellence.es>

        [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a