Ho un set di punti come shapefile e voglio trovare (le coordinate) di un nuovo punto che avrà la distanza più lunga possibile da ciascuno dei punti esistenti. È possibile? Se sì, esiste un codice VB di esempio? Grazie Demetris
Ho un set di punti come shapefile e voglio trovare (le coordinate) di un nuovo punto che avrà la distanza più lunga possibile da ciascuno dei punti esistenti. È possibile? Se sì, esiste un codice VB di esempio? Grazie Demetris
Risposte:
La raccomandazione di Kirk Kuykendall di costruire un diagramma sferico di Voronoi (poligoni di Thiessen) è buona, ma potrebbe avere alcuni problemi tecnici da risolvere. Nel frattempo, in alternativa, è possibile applicare la soluzione raster standard come descritto in un altro thread . Usa le distanze sferiche invece delle distanze euclidee.
Ecco un esempio usando cinque punti, qui dato come (lat, lon):
82.7051 -145.256
60.3321 81.2881
-17.076 105.125
-38.792 -122.686
0.000 180.000
Questa mappa sferica della distanza copre il globo da -180 a 180 gradi di longitudine in orizzontale e da -90 a 90 gradi di latitudine in verticale. I punti sono mostrati con grandi punti rossi. Le distanze aumentano con la luminosità. Le creste apparenti devono essere porzioni di grandi cerchi. Il piccolo punto nero vicino (-15.3268, -2.04352) segna il punto di distanza massima di 11.227 km. (Le distanze sono state calcolate nel dato ellissoidale ITRF00.)
La risoluzione di questa griglia è di un grado. Per ottenere una soluzione più precisa, è possibile ingrandire un punto del genere (e in qualsiasi altro massimo locale con un valore sufficientemente vicino al massimo globale) e ripetere il calcolo su una griglia più piccola ma a risoluzione più elevata.
Non l'ho mai provato ma sembra che funzioni:
Crea un diagramma voronoi 3D della sfera. I poligoni risultanti saranno approssimativamente centrati sui punti (seme) esistenti originali.
Passa attraverso ciascun vertice risultante per trovare quello più lontano dal punto esistente più vicino. Questo punto dovrebbe essere il punto più remoto sul globo.
È possibile utilizzare una funzione di distanza ponderata in base al costo per identificare la distanza di ogni cella del raster da tutti gli altri punti.
Per quanto ne so, questa analisi del " Polo dell'inaccessibilità " deve essere eseguita in modo iterativo.
Un approccio raster iterativo sarebbe appropriato purché si guardi una piccola area con una distorsione minima dalla proiezione. Per ogni cella, calcola la distanza da tutti i punti, quindi prendi la distanza minima. La cella con il valore più alto è il polo. A tale scopo puoi anche utilizzare la distanza euclidea nell'analista spaziale.
Un approccio vettoriale iterativo è più complicato. Garcia-Castellanos et al 2007 descrivono un metodo iterativo basato su una terra sferica. Sembra che abbiano reso disponibile il loro codice C online . Posso immaginare modi per farlo in Arc con i buffer, ma sarebbe ancora iterativo e lento.
è possibile utilizzare Point Distance (Analysis) Lo strumento crea una tabella con le distanze tra due serie di punti. se viene utilizzato il raggio di ricerca predefinito, vengono calcolate le distanze da tutti i punti di input a tutti i punti vicini. La tabella di output può essere piuttosto grande. Ad esempio, se entrambe le funzionalità di input e near hanno 1.000 punti ciascuna, la tabella di output può contenere un milione di record.
Il punto più lontano al tuo set di punti sarebbe il reciproco al punto più interno nel tuo set. Ad esempio, se il tuo punto più interno nel tuo set aveva coordinate 49 gradi nord e -144 gradi est, allora il punto reciproco e il punto più lontano avrebbe coordinate di 49 gradi sud e 36 gradi ovest. Questo non è esattamente vero perché la Terra non è perfettamente sferica, piuttosto geoidale; pertanto, la correttezza del tuo punto di risultato dipende molto da quali sistemi di proiezione e geografici (ortografici, ortorettificati ...) usi. Potrebbe essere utile trovare un reciproco per l'intero set (trasferire un antipode per un set) e quindi eseguire l'analisi della superficie all'interno del terreno coperto dal set di punti antipode, poiché il terreno potrebbe molto. Suppongo che la tua domanda non riguardi alcun punto sui corpi extraterrestri, come altri pianeti o lune. Scusa, Non ho un codice VB per te. 🙄