Я использовал функцию перемещения файла волка в sql, чтобы получить расстояние в KM. Мне интересно, можно ли получить расстояние для поездки, а не расстояние между файлами в sql server 2008 r2?Можно ли получить дистанцию путешествия (не вороньевые файлы) между двумя лат и lng в sql
ответ
Не напрямую, поскольку сам SQL Server не знает дорог или маршрутизации. Вам нужно будет обратиться к внешнему API (например, к Картам Google или Bing Maps, как к вашим тегам вопроса), передать два конечных пункта и запросить кратчайший маршрут, а затем определить расстояние в зависимости от их ответа.
Давайте рассмотрим этот невероятно грубый рисунок.
Пользователь находится в точке А, и они хотят, прямой путь (фиолетовый), чтобы добраться до точки B. идет через горы. Поэтому нам нужно идти по горе.
Но есть и другие соображения. Может быть, есть мост через Маршрут 1. Может быть, сама дорога - это мочалка, а Маршрут 2 - супермагистраль.
Пункт есть, существует огромное количество нефункциональных требований, которые составляют решения о маршрутизации, которые SQL Server просто не может решить для вас.
Если внешний маршрут API не является жизнеспособным, вам также может потребоваться вычислить что-то похожее на расстояние Манхэттена в качестве наихудшего случая, используя самые длинные горизонтальные и вертикальные расстояния дуги. http://en.wiktionary.org/wiki/Manhattan_distance – RomSteady
Вы можете создать функцию SQL в .NET, которая вызывает службу маршрутизации REST-карт RING и получает информацию о расстоянии/времени по мере необходимости. Вот блог, который показывает, как создать такую функцию с помощью службы геокодирования: https://alastaira.wordpress.com/2012/05/04/geocoding-in-sql-server-with-the-bing-maps-locations-api/
Вы можете найти документацию по службе маршрутизации и советы по его использованию в .NET здесь:
https://msdn.microsoft.com/en-us/library/ff701717.aspx
https://msdn.microsoft.com/en-us/library/jj819168.aspx
https://msdn.microsoft.com/en-us/library/jj870778.aspx
Теперь это потенциально может генерировать тонны запросов. Возможно, было бы разумно создать функцию, которая учитывает все местоположения, необходимые для вычисления расстояний, а затем оптимизирует вычисления путем объединения местоположений в один многоточечный маршрут. Bing Maps позволяет указать до 25 местоположений в одном запросе маршрута. Если вам нужны расстояния от A до B, C, D, вы можете рассчитать маршрут от A-B-A-C-A-D. Ответ будет возвращать ногу маршрута для каждого из двух местоположений. Нечетные индексированные ножки маршрута будут вашим расстоянием от А до других мест. Это позволит вам объединить до 12 местоположений в один запрос. Это значительно ускорит работу, а также уменьшит количество запросов/транзакций, которые будут также уменьшать затраты на лицензирование, которые будут задействованы.
Что такое поездка? Дороги или расстояние между двумя точками над кривизной земли? –
Вы имеете в виду «вороньи мухи»? – vidstige