Encontrar un polo de inaccesibilidad en relación con múltiples puntos sin usar rásteres


9

Quiero encontrar un "punto de inaccesibilidad" a partir de una serie de puntos, que representan ciudades y pueblos en Escocia. Uso de herramientas FOSS GIS (QGIS, SAGA, GRASS, Postgres / PostGIS ...).

Este es el punto más alejado de cualquier centro de población. Este sería el centro del círculo más grande que no contiene una ciudad, pero tendrá una ciudad en su borde.

Hay un enfoque de trama, que funciona: el filtro de proximidad GDAL .

¿Hay una forma basada en VECTOR para hacer esto? ¿Uno que no requiera rasterización?

Aquí está mi intento con rásteres ...

  • Comience con una capa de puntos en una proyección adecuada en metros (estoy usando OSGB, 27700)
  • Agregue un campo llamado "uno" y establezca un número entero con valor constante 1.
  • Vector a ráster, comando de edición para usar -a one y usar GEO en lugar de píxel. ¡Asegúrate de que los píxeles sean cuadrados!
  • Crear contornos en el ráster de proximidad (en este caso, 1 km de ancho)

Así es como se ve. Dibujé algunos puntos candidatos a mano ;-)

ingrese la descripción de la imagen aquí

Pensé que disolver los búferes repetidos (usando el complemento de búfer Multi ring ) podría funcionar, pero sospecho que no tengo suficiente memoria para que esto funcione.

Respuestas:


7

Supongo que es el centro del triángulo circular con el radio más grande, que no toca más de 3 puntos. En la imagen a continuación se muestran los primeros 11 de esos centros. Están etiquetados por su número de clasificación.

ingrese la descripción de la imagen aquí

Es suficiente eliminar los que están fuera de los triángulos y definir al campeón, es decir, No3 en la imagen.

ACTUALIZACIÓN INSPIRADA POR STEVEN FINDING:

ingrese la descripción de la imagen aquí

¡El resultado anterior, a diferencia de la primera solución obtenida en ArcGIS sin scripting (pero con licencia avanzada) y funciona! Sin embargo, puede producir resultados cuestionables en los bordes de un área de estudio, por ejemplo, el punto No 1, es decir, el segundo punto más remoto encontrado ...


1
Wow, gracias por compartir esto! Traté de seguir su flujo de trabajo en QGIS por (1) Puntos a Delaunay ( Vector | Delaunay Triangulation), (2) Seleccione el triángulo campeón (Calculado $areaen la tabla de atributos de los polígonos de Delaunay) y guardé el más grande como una nueva capa (3) Buscar circuncentro ( Processing | GRASS | Vector | v.voronoi.skeletonen El triángulo campeón). ¿Crees que este método es correcto?
Kazuhito

El primer paso es correcto. Calculé centros exradius para TODOS los triángulos. Para encontrar el centro, construí perpendicular hacia adentro para los puntos medios de los 3 lados y encuentro la intersección (combinación 3,2).
FelixIP

Círculo circunscrito del triángulo, no circunferencia.
FelixIP

¡Muchas gracias! (y gracias por una buena foto, también. Cuanto más me inclino por el fondo, más fascinante se vuelve).
Kazuhito

1
Buena observación! Lo probaré y actualizaré la respuesta. A diferencia de la primera solución, no requerirá secuencias de comandos al menos en Arcgis.
FelixIP

5

Aquí hay un seguimiento. ¡Gracias a @FelixIP por señalarme en la dirección correcta!

Utilizando los datos de OSM de Australia, pude encontrar el "punto de inaccesibilidad" en el continente australiano: lo hago a unos 260 km equidistantes de Akarnenehe, Bedourie y Mount Dare, en POINT (137.234888 -24.966466)

ingrese la descripción de la imagen aquí

Encontré un flujo de trabajo bastante fácil en QGIS que utiliza una combinación de los enfoques de trama y de vector. Estoy seguro de que un enfoque similar funcionaría en otros SIG.

El momento 'a-ha' vino de notar esto

Todos los máximos caen en tres puntos en la malla de voronoi, puntos donde se encuentran trillizos adyacentes de polígonos de voronoi.

El enfoque fue el siguiente:

  • trabajar en una proyección basada en medidores. Usé 3857, no ideal, pero mis datos de OSM estaban en ese formato :)
  • obtener una capa que represente los lugares de interés en ('ciudad', 'pueblo', 'pueblo', 'aldea')
  • crear una malla voronoi a partir de esta capa
  • usar nodos de extracción para obtener los trípodes
  • crear el ráster de proximidad (como se muestra en la pregunta)
  • recorta el ráster al contorno del paisaje, de modo que los píxeles del mar se establezcan en 0.
  • use la herramienta de muestreo de puntos en los nodos extraídos contra el ráster

Luego use Db Manager y Virtual Layers para encontrar el nodo con el mayor valor de distancia en el ráster.

select 
    rowid,
    name,
    proximity2,
    st_astext(st_transform(geometry,4326)) as pt, 
    st_buffer(geometry, proximity2) as geometry
from 
    "samples" 
order by 
    proximity2 desc 
limit 1;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.