Расчет расстояния между городами по географическим координатам

in-touch

Client
Регистрация
09.02.2014
Сообщения
38
Благодарностей
16
Баллы
8
Возможно ли рассчитать расстояние между двумя городами по их географическим координатам: широте и долготе?

Если да, то как это сделать в Зеннопостере?
 

Nilsoner

Client
Регистрация
24.11.2017
Сообщения
217
Благодарностей
185
Баллы
43
Просто расстояние по прямой или по дорогам?
 

in-touch

Client
Регистрация
09.02.2014
Сообщения
38
Благодарностей
16
Баллы
8
По дорогам было бы идеально. Мне хотя бы по прямой.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 168
Баллы
113
Возможно ли рассчитать расстояние между двумя городами по их географическим координатам: широте и долготе?

Если да, то как это сделать в Зеннопостере?
C#:
// получаем значение системного разделителя в нашей ОС:
string separator = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0].ToString();
// это чтобы потом не было гемора как в этой ветке - https://zennolab.com/discussion/threads/win-serv-2016-osobennosti-sozdanija-shablonov.49990/#post-374393

//координаты города "Львов"
string Lat1_s = "49.83826";
Lat1_s = System.Text.RegularExpressions.Regex.Replace(Lat1_s, @"\D", separator);
string Long1_s = "24.02324";
Long1_s = System.Text.RegularExpressions.Regex.Replace(Long1_s, @"\D", separator);
double Lat1 = double.Parse(Lat1_s);
double Long1 = double.Parse(Long1_s);

//координаты города "Киев"
string Lat2_s = "50.4546";
Lat2_s = System.Text.RegularExpressions.Regex.Replace(Lat2_s, @"\D", separator);
string Long2_s = "30.5238";
Long2_s = System.Text.RegularExpressions.Regex.Replace(Long2_s, @"\D", separator);
double Lat2 = double.Parse(Lat2_s);
double Long2 = double.Parse(Long2_s);

GeoCoordinate geo1 = new GeoCoordinate(Lat1,Long1);
GeoCoordinate geo2 = new GeoCoordinate(Lat2,Long2);
double distanceTo = geo1.GetDistanceTo(geo2); // расстояние по прямой в метрах
double distanceTo_km = distanceTo / 1000;
return Convert.ToInt32(distanceTo_km); // расстояние по прямой в километрах
В директивы Using добавить:
Код:
using System.Device.Location;
В References:
Код:
System.Device
Ну и на правах рекламы: координаты почти любого города, улицы, реки, магазина и т.д. можно получить с помощью моего парсера, на котором я и набил руку с работой по картах:
Барсик - парсер Яндекс.Карт (Справочника), 20 000 организаций в минуту + Геокодер. На запросах
 
Последнее редактирование:
  • Спасибо
Реакции: yriy158, one и in-touch

in-touch

Client
Регистрация
09.02.2014
Сообщения
38
Благодарностей
16
Баллы
8
C#:
// получаем значение системного разделителя в нашей ОС:
string separator = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator[0].ToString();
// это чтобы потом не было гемора как в этой ветке - https://zennolab.com/discussion/threads/win-serv-2016-osobennosti-sozdanija-shablonov.49990/#post-374393

//координаты города "Львов"
string Lat1_s = "49.83826";
Lat1_s = System.Text.RegularExpressions.Regex.Replace(Lat1_s, @"\D", separator);
string Long1_s = "24.02324";
Long1_s = System.Text.RegularExpressions.Regex.Replace(Long1_s, @"\D", separator);
double Lat1 = double.Parse(Lat1_s);
double Long1 = double.Parse(Long1_s);

//координаты города "Киев"
string Lat2_s = "50.4546";
Lat2_s = System.Text.RegularExpressions.Regex.Replace(Lat2_s, @"\D", separator);
string Long2_s = "30.5238";
Long2_s = System.Text.RegularExpressions.Regex.Replace(Long2_s, @"\D", separator);
double Lat2 = double.Parse(Lat2_s);
double Long2 = double.Parse(Long2_s);

GeoCoordinate geo1 = new GeoCoordinate(Lat1,Long1);
GeoCoordinate geo2 = new GeoCoordinate(Lat2,Long2);
double distanceTo = geo1.GetDistanceTo(geo2); // расстояние по прямой в метрах
double distanceTo_km = distanceTo / 1000;
return Convert.ToInt32(distanceTo_km); // расстояние по прямой в километрах
В директивы Using добавить:
Код:
using System.Device.Location;
В References:
Код:
System.Device
Ну и на правах рекламы: координаты почти любого города, улицы, реки, магазина и т.д. можно получить с помощью моего парсера, на котором я и набил руку с работой по картах:
Барсик - парсер Яндекс.Карт (Справочника), 20 000 организаций в минуту + Геокодер. На запросах
Спасибо, работает!
Может подскажете еще как узнать время по широте и долготе? Или по названию города.
 
Последнее редактирование:

orka13

Client
Регистрация
07.05.2015
Сообщения
2 167
Благодарностей
2 168
Баллы
113
увы, нет, тут дорога в гугл.
 

budora

Client
Регистрация
13.08.2012
Сообщения
831
Благодарностей
554
Баллы
93
  • Спасибо
Реакции: in-touch

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)