Наблизо с помощта на Long/Lat SQL Server 2008

Имам таблица, наречена Места, всеки запис в тази таблица има своята дължина и ширина.

Искам да търся в тази таблица, за да намеря места в близост по конкретна дължина и ширина (да приемем, че радиусът на близкия кръг е 25 км)


person Abdullah Darwish    schedule 26.05.2012    source източник
comment
Какви са типовете данни за географска дължина и ширина? По-конкретно, използвате ли типа данни geography? И има много въпроси на този сайт и другаде относно изчисленията на широчина/дължина и намирането на най-близките търсения, така че може да искате да проучите допълнително и след това да се върнете с по-конкретен въпрос, ако все още имате проблеми.   -  person Pondlife    schedule 27.05.2012
comment
Използвам географска точка (тип данни)   -  person Abdullah Darwish    schedule 27.05.2012
comment
възможен дубликат на Търсене на близки точки от географска колона   -  person Pondlife    schedule 29.05.2012


Отговори (1)


Тъй като имате дадено разстояние, за да ограничите търсенето си, вашият въпрос е малко по-различен от въпроса, който задават, за да намерят най-близките точки (без ограничение). Изобретил съм две формули, които опростяват изчисляването на разстоянието до градусна разлика. Тази формула просто пасва на формата на земята, а не на друга сферична форма:

Следното показва колко километра са заобиколени в 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 км за всяка страна. Ако настоявате за кръгла област, можете да направите второ кръгово изчисление на първата серия от резултати с реална формула за разстояние между точки и да пропуснете тези, които не са във вашия кръг.

person Ali Sheikhpour    schedule 24.09.2019