Wątek przeniesiony 2023-06-13 15:24 z C# i .NET przez Ktos.

Sortowanie obiektów po odległości od danej lokalizacji?

0

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?

0

A jka liczysz odległość współrzędnych? Jaka to baza?

3

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 ?

6

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();
1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1