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 commentaires

dpb
dpb le 11 Avr 2021
Modifié(e) : dpb le 12 Avr 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 le 11 Avr 2021
Many thanks for sharing the great thoughts!
dpb
dpb le 11 Avr 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 le 11 Avr 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 le 12 Avr 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 le 12 Avr 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.

Connectez-vous pour commenter.

Réponses (1)

Shadaab Siddiqie
Shadaab Siddiqie le 16 Avr 2021

0 votes

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 commentaire

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

Connectez-vous pour commenter.

Produits

Version

R2021a

Question posée :

le 11 Avr 2021

Commenté :

dpb
le 16 Avr 2021

Community Treasure Hunt

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

Start Hunting!

Translated by