4 votos

Método para encontrar puntos centrales de círculos que cubren una extensión

Si tengo una extensión geográfica, ¿hay alguna manera de encontrar todos los puntos centrales de todos los círculos de 5 km que serían necesarios para cubrir toda la extensión?

Estoy trabajando con una API que devolverá los resultados que se produzcan en un radio de 5 km de una latitud y longitud determinadas.

Me gustaría encontrar una manera de obtener todos los elementos que se producen dentro de la extensión.

7voto

auramo Puntos 161

Esto suena como un tipo de problema de embalaje . Aquí hay una implementación en Python del empaquetamiento del círculo en una variación del rectángulo: https://gist.github.com/CnrLwlss/4572781

Véase también esta pregunta estrechamente relacionada: algoritmo para colocar el máximo número de puntos dentro del área restringida con una separación mínima

Sin embargo, hay que tener en cuenta que puede haber muchas soluciones, si no infinitas, por lo que habrá que tener en cuenta lo que produce la API que se está utilizando frente a lo que produce la solución de empaquetado.

¿Qué API está utilizando?

Tal vez podría utilizar una rejilla hexagonal como la que se discute en estas preguntas:

El centro de cada hexágono con radio = 5km debería ser una aproximación suficientemente buena. Por supuesto, habrá algún solapamiento, ya que un círculo de 5 km es mayor que un hexágono de 5 km.

Esta pregunta de StackOverflow ofrece un algoritmo para generar un "entramado casi, pero no del todo hexagonal", con las respuestas ofreciendo optimizaciones: Generar eficazmente una red de puntos en python

Este ejemplo de geoprocesamiento de ArcGIS pretende crear una clase de característica de polígono hexagonal: Crear hexágonos

Este Respuesta de Math.SE sugiere que no hay una solución óptima para el problema de "cubrir un rectángulo con círculos", pero que el enfoque de la red hexagonal es probablemente lo suficientemente bueno.

Otra cosa que hay que tener en cuenta es que, como se trabaja con coordenadas geográficas, lo que realmente se busca es un Rejilla geodésica no un entramado hexagonal. Las respuestas a esta pregunta del SO también tienen buena información: Cubrir la tierra con baldosas de mapa hexagonales

Sin embargo, puede ser más fácil trabajar en el espacio euclidiano hasta que se necesiten coordenadas geográficas (las de sus centroides), y simplemente proyectar en coordenadas geográficas en ese momento. Para ello, por supuesto, necesitará un motor de proyección o algoritmo.

0voto

Rohinb97 Puntos 200

Aquí hay un módulo de Python para encontrar los centroides de los hexágonos de 50 km para embaldosar una caja delimitadora (Lo estoy utilizando para consultar la API de Google Places).

Como los hexágonos tienen el mayor número de lados de cualquier polígono regular que se pueda embaldosar, proporcionan una aproximación útil a un círculo para cubrir un área. Los círculos que circunscriben los hexágonos pueden cubrir un área con un solapamiento mínimo y una cobertura total.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X