How to find the nearby sampling stations

I have millions of samping sations, my goal is to find the nearby stations with a certain distance threshold. What is the best way to do it based on the longitude and latitude information?
It seems that calculating the stations between each of them is extremely time-consuming.
Thanks.

6 Kommentare

dpb
dpb am 11 Apr. 2021
Bearbeitet: dpb am 12 Apr. 2021
A direct lookup/calculation of all distances from a given point for every case would seem prohibitively expensive, agreed.
I'm sure there are more sophisticated ways to go at it, but you could start to reduce the search space by eliminating all which are farther away in either direction alone and only doing the full calculation within that grid.
You could in all likelihood reduce those distances by some sizable fraction and not miss the result -- say by sqrt(2)
Leon
Leon am 11 Apr. 2021
Many thanks for sharing the great thoughts!
dpb
dpb am 11 Apr. 2021
Another way to approach it if the database is static would be to compute the distance once and save it -- then it's just a lookup for each station pair that could be read from an indexed file.
It would likely be too large to store the whole distance matrix for all stations at once, anyway.
dpb
dpb am 11 Apr. 2021
Another way if one is always going to be wanting only other stations within some distance of a given station would be to precompute as above, but only save those locations for each station within that magic cutoff distance. Depending upon that distance and the distribution of stations, this could possibly reduce the size of the database significantly.
Leon
Leon am 12 Apr. 2021
Many thank for the recommendations.
It would be great if Mathworks could develop a function to allow me to easily find nearby sations with a specific radius (considering the land mask as well).
dpb
dpb am 12 Apr. 2021
I would presume there are tools in the Mapping Toolbox (which I don't have) similar to pdist2 in base product, but I really don't know much at all about what is available.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Shadaab Siddiqie
Shadaab Siddiqie am 16 Apr. 2021

0 Stimmen

From my understanding you want to speed up the process of finding the nearest location. You can use pdist2 to find pair-wise distance of all the point in a range or you can also use dsearchn to find nearest point.

1 Kommentar

dpb
dpb am 16 Apr. 2021
Neither of which address that OP's coordinates are in lat, long, not x,y,z...

Melden Sie sich an, um zu kommentieren.

Produkte

Version

R2021a

Gefragt:

am 11 Apr. 2021

Kommentiert:

dpb
am 16 Apr. 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by