2

I have a collection of records with latitude & longitude coordinates in my database. Is there a straightforward way to filter for other objects within some specified radius of a given object?

Use would be for a method place.get_nearby(rad_km=1.3) -> "QuerySet[Place]" or a function find_nearby(place: Place, rad_km: float) -> "QuerySet[Place]" is fine.

If there is a heavily involved solution (lots of new libraries & refactoring necessary), I'll declare this to be out of scope. I currently have a method on my Places to calculate distances between them (both in radians and km), but no way to filter for nearby places.

The final use case would be to generate informational tables such as the following:

+-------------------------+-----------------------+-----------------------------+
| Northwest Plaza (1.1km) |                       | NE Corner (0.04km)          |
+-------------------------+-----------------------+-----------------------------+
| West Street (0.789km)   | You are here™         |                             |
+-------------------------+-----------------------+-----------------------------+
|                         | South Avenue (1.17km) | SW Sunset Building (0.43km) |
+-------------------------+-----------------------+-----------------------------+

Additionally, would the best way to determine which square to put an object in be arctan((lat2-lat1)/(lon2-lon1)) (assuming they're reasonably close)?

cjm
  • 451
  • 4
  • 20
  • Did you found a solution? Currently I calculate a boundingbox and compute on the python site the distance. Afterwards I filter/remove the points which are to far away. This feels very hacky but I think there is in 2022 with MySQL/MariaDB no other way. – Philipp S. Jul 21 '22 at 10:13

0 Answers0