Trouver un pôle d'inaccessibilité par rapport à plusieurs points sans utiliser de rasters

9

Je veux trouver un «point d'inaccessibilité» à partir d'une série de points, représentant des villes et des villages en Écosse. Utilisation des outils SIG FOSS (QGIS, SAGA, GRASS, Postgres / PostGIS ...).

C'est le point le plus éloigné de tout centre de population. Ce serait le centre du plus grand cercle qui ne contient pas de ville, mais il y aura une ville sur le bord.

Il existe une approche raster, qui fonctionne - le filtre de proximité GDAL .

Existe-t-il un moyen basé sur VECTOR pour le faire? Celui qui ne nécessite pas de pixellisation?

Voici ma tentative avec les rasters ...

  • Commencez avec une couche de points dans une projection appropriée en mètres (j'utilise OSGB, 27700)
  • Ajoutez un champ appelé "un" et définissez-le sur un entier avec une valeur constante 1.
  • Vecteur à raster, modification de la commande pour utiliser -un et utiliser GEO plutôt que pixel. Assurez-vous que les pixels sont carrés!
  • Créez des contours sur le raster de proximité (dans ce cas, 1 km de large)

Voici à quoi ça ressemble. J'ai dessiné des points candidats à la main ;-)

entrez la description de l'image ici

Je pensais que la dissolution de tampons répétés (en utilisant le plugin de tampon multi-anneaux ) pourrait fonctionner, mais je soupçonne que je n'ai pas assez de mémoire pour que cela fonctionne.

Steven Kay
la source

Réponses:

7

Je suppose que c'est le centre de l'excircle triangulaire avec le plus grand rayon, qui ne touche pas plus de 3 points. Dans l'image ci-dessous, les 11 premiers centres sont représentés. Ils sont étiquetés par leur numéro de classement.

entrez la description de l'image ici

Il suffit d'éliminer ceux qui sont à l'extérieur des triangles et de définir le champion, c'est-à-dire le No3 dans l'image.

MISE À JOUR INSPIRÉE PAR STEVEN CONSTATANT:

entrez la description de l'image ici

Résultat ci-dessus contrairement à la première solution obtenue dans ArcGIS sans script (mais avec licence avancée) et ça marche! Cependant, il peut produire des résultats douteux sur les bords d'une zone d'étude, par exemple le point n ° 1, c'est-à-dire le deuxième point le plus éloigné trouvé ...

FelixIP
la source
1
Wow, merci de partager ça! J'ai essayé de suivre votre flux de travail dans QGIS par (1) Points à Delaunay ( Vector | Delaunay Triangulation), (2) triangle champion Select (calculé $areasur la table d'attributs des polygones de Delaunay) et enregistré le plus grand comme une nouvelle couche (3) Trouver circumcenter ( Processing | GRASS | Vector | v.voronoi.skeletonsur le triangle des champions). Pensez-vous que cette méthode est correcte?
Kazuhito
La première étape est correcte. J'ai calculé les centres d'exradius pour TOUS les triangles. Pour trouver le centre, j'ai construit une perpendiculaire vers l'intérieur pour les points médians des trois côtés et je trouve l'intersection (combinaison 3,2).
FelixIP
Cercle circonscrit de triangle, pas d'excircle.
FelixIP
Merci beaucoup! (et merci aussi pour cette belle photo. Plus j'appuie sur l'arrière-plan, plus cela devient fascinant.)
Kazuhito
1
Belle observation! Je vais le tester et mettre à jour la réponse. Contrairement à la première solution, elle ne nécessitera aucun script au moins dans Arcgis.
FelixIP
5

Voici un suivi. Merci à @FelixIP de m'avoir pointé dans la bonne direction!

En utilisant les données OSM d'Australie, j'ai pu trouver le «point d'inaccessibilité» sur le continent australien - je le fais à environ 260 km à égale distance d'Akarnenehe, Bedourie et Mount Dare, à POINT (137.234888 -24.966466)

entrez la description de l'image ici

J'ai trouvé un flux de travail assez facile dans QGIS qui utilise une combinaison des approches raster et vectorielle. Je suis sûr qu'une approche similaire fonctionnerait dans d'autres SIG.

Le moment «a-ha» est venu de remarquer cela

Les maxima tombent tous sur des tri-points sur la maille voronoi - points où les triplets adjacents de polygones voronoi se rencontrent.

L'approche était la suivante: -

  • travailler dans une projection au mètre. J'ai utilisé 3857, pas idéal mais mes données OSM étaient dans ce format :)
  • obtenir une couche représentant les points d'intérêt dans (ville, village, ville, hameau)
  • créer un maillage voronoi à partir de cette couche
  • utiliser des nœuds d'extraction pour obtenir les tripoints
  • créer le raster de proximité (comme indiqué dans la question)
  • découpez le raster sur le contour du paysage, de sorte que les pixels de la mer soient définis sur 0.
  • utiliser l' outil d'échantillonnage de points sur les nœuds extraits par rapport au raster

Utilisez ensuite Db Manager et Virtual Layers pour trouver le nœud avec la plus grande valeur de distance sur le raster.

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;
Steven Kay
la source