Witam. Dysponuję długością i szerokością geograficzną użytkownika oraz w bazie danych mam pola lat, lng obiektów. Do tej pory wczytywałem wszystkie dane, robiłem obliczenia i sortowałem względem odległości od użytkownika. Zdaje sobie sprawę, że jak tych danych przybędzie to ta metoda będzie niedopuszczalna. Czy da się wykonać takie sortowanie po stronie bazy danych?
Sortowanie obiektów po odległości od danej lokalizacji?
Wątek przeniesiony 2023-06-13 15:24 z C# i .NET przez Ktos.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 507
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Jastrzębie-Zdrój
- Postów: 2181
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1268
A jka liczysz odległość współrzędnych? Jaka to baza?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Silesia/Marki
- Postów: 5672
Jak PostgreSQL to jest do tego rozszerzenie Postgis. Ale jak używasz M$ jezyka to pewnie też używasz M$ bazy, więc trzeba do tego szukac rozszeżenia. A może jest już nawet wbudowane w bazę? np https://learn.microsoft.com/en-us/sql/t-sql/spatial-geography/spatial-types-geography?view=sql-server-ver16 ?
- Rejestracja: dni
- Ostatnio: dni
Oznaczyłeś, że używasz EFCore to jest do tego dodatek, na pewno do Sqlite i MSSQL: https://learn.microsoft.com/en-us/ef/core/modeling/spatial
// Find the nearest city
var nearestCity = db.Cities
.OrderBy(c => c.Location.Distance(currentLocation))
.FirstOrDefault();
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6610
możesz wstępnie pogrupować "stałe" obiekty w obszary. Np. kwadraty o boku 100m albo 1km w zależności od potrzeb. To ma sens wtedy, kiedy nie potrzebujesz info o wszystkich obiektach ale tylko o takich, które są nie dalej niż x