I have a set of points as a shapefile and I want to find (the coordinates) of a new point which will have the longest possible distance from each of the existing points. Is that possible? If yes, is there any sample VB code? Thanks Demetris
Kirk Kuykendall's recommendation to construct a spherical Voronoi diagram (Thiessen polygons) is a good one, but might have some technical hitches to work out. In the meantime, as an alternative, one can apply the standard raster solution as described in another thread. Use spherical distances instead of Euclidean distances.
Here is an example using five points, here given as (lat, lon):
82.7051 -145.256 60.3321 81.2881 -17.076 105.125 -38.792 -122.686 0.000 180.000
This spherical distance map spans the globe from -180 to 180 degrees longitude horizontally and -90 to 90 degrees latitude vertically. The points are shown with large red dots. The distances increase with brightness. The apparent ridges must be portions of great circles. The small black dot near (-15.3268, -2.04352) marks the point of maximum distance of 11,227 km. (Distances were computed in the ITRF00 ellipsoidal datum.)
The resolution of this grid is one degree. To get a more precise solution, one can zoom into such a point (and into any other local maximum with a sufficiently close value to the global maximum) and repeat the calculation on a smaller but higher-resolution grid.
I've never tried this but it seems like this would work:
Create a 3D voronoi diagram of the sphere. This resulting polygons will be roughly centered on the original existing (seed) points.
Loop through each resulting vertex to find the one that is farthest from its closest existing point. This point should be the most remote point on the globe.
As far as I know, this "Pole of Inaccessability" analysis has to be done iteratively.
An iterative raster approach would be appropriate as long as you are looking at a small area with minimal distortion from projection. For each cell, compute the distance to all points, then take the minimum distance. The cell with the highest value is the pole. You can also use Euclidean Distance in Spatial Analyst to accomplish this.
An iterative vector approach is more complicated. Garcia-Castellanos et al 2007 describe an iterative method based on a spherical earth. It appears that they have made their C code available online. I can imagine ways of doing this in Arc with buffers, but it would still iterative and slow.
Try getting the average distance of a new point(the point for which we need to check if it is farthest), to all the point in the set, and among the new point, the point having maximum average distance is the farthest.
Kmean++ work on the similar principle https://en.wikipedia.org/wiki/K-means%2B%2B
you can use Point Distance (Analysis) The tool creates a table with distances between two sets of points. if the default search radius is used, distances from all input points to all near points are calculated. The output table can be quite large. For example, if both input and near features have 1,000 points each, then the output table can contain one million records.
The farthest point to your set of points would be the reciprocal to the most inner point in your set. For instance, if your most inner point in your set had coordinates 49 degrees North and -144 degrees East, then the reciprocal and the furthest point would have coordinates of 49 degrees South and 36 degrees West. This is not exactly true because Earth is not perfectly spherical, rather geoidal; therefore, the correctness of your result point a lot depends on what projection and geographic systems (orthographic, orthorectified ...) you use. It could be helpful to find a reciprocal for entire set (transfer an antipode for a set) and then run surface analysis within terrain covered by the antipode set of points, since terrain may very. I assume your question is not about any points on extraterrestrial bodies, such as other planets, or moons. Sorry, I do not have VB code for you. 🙄