Имам таблица, наречена Места, всеки запис в тази таблица има своята дължина и ширина.
Искам да търся в тази таблица, за да намеря места в близост по конкретна дължина и ширина (да приемем, че радиусът на близкия кръг е 25 км)
Имам таблица, наречена Места, всеки запис в тази таблица има своята дължина и ширина.
Искам да търся в тази таблица, за да намеря места в близост по конкретна дължина и ширина (да приемем, че радиусът на близкия кръг е 25 км)
Тъй като имате дадено разстояние, за да ограничите търсенето си, вашият въпрос е малко по-различен от въпроса, който задават, за да намерят най-близките точки (без ограничение). Изобретил съм две формули, които опростяват изчисляването на разстоянието до градусна разлика. Тази формула просто пасва на формата на земята, а не на друга сферична форма:
Следното показва колко километра са заобиколени в 1 градус дължина около дадена географска ширина:
LongDistanceFactor = − 0.0114 * (lat)^2 − 0.2396(lat) + 112.57
а вторият показва колко километра са заобиколени в 1 градус ширина около дадена ширина:
LatDistanceFactor = 0.0139(lat) + 110.51
Така че за дадени 25 км около (lat, lng) просто трябва да намерите точки, чиято ширина е между lat ± (25/LatDistanceFactor)
и дължина между lng ± (25/LongDistanceFactor)
Редактиране: Тъй като използвам ± както за Lat, така и за Lng, целевата област ще бъде квадрат с дължина 50 км за всяка страна. Ако настоявате за кръгла област, можете да направите второ кръгово изчисление на първата серия от резултати с реална формула за разстояние между точки и да пропуснете тези, които не са във вашия кръг.
geography
? И има много въпроси на този сайт и другаде относно изчисленията на широчина/дължина и намирането на най-близките търсения, така че може да искате да проучите допълнително и след това да се върнете с по-конкретен въпрос, ако все още имате проблеми. - person Pondlife   schedule 27.05.2012