![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]()
Заранее извиняюсь, что скорее всего не в тот раздел помещаю. Прошу подсказки. Имеется лист Excel в разблюдовкой маршрута движения автомобиля. Первые два столбца - это координаты (X и Y, широта и долгота), например в столбце X 30,365465, а в столбце Y 50,449825.
Сталкивался ли кто-нибудь, когда-нибудь с задачей выборки этих координат и определения по ним адресов? В какую сторону вообще двигаться? Подскажите, нельзя ли это реализовать средствами VBA? |
![]() |
![]() |
![]() |
#2 | ||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
![]() Цитата:
Судя всего это долгота и широта. Это моя профессия. Цитата:
Двигаться в сторону изучение геодезии, в частности понятия системы координат (карта, план, номенклатура карт, аэрофотография). Без проблем.
С уважением, Алексей.
Последний раз редактировалось tae1980; 10.01.2012 в 17:04. |
||
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]()
Ага, значит интуитивно был прав. Спасибо за ответ. Задача, в общем, так и формулируется - определить по широте и долготе адрес. Я просто первый раз с таким столкнулся, поэтому заранее и извинился. Вот в прикрепленном файле первый и второй столбцы X и Y и есть широта и долгота. Остальные столбцы на убирал (мало ли). Возможно ли макросом прямо из файла получить напротив каждой пары адреса? Или, хотя бы, напротив тех пар, где в столбце R стоит "начало движения"?
|
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
![]() Цитата:
Следующий вопрос в каком виде/формате ваши карты, а так же в каких системах координат. Еще сложнее то что вам нужно определить атрибуты объекта на карте (с учетом улета на +- 25 м.), на это способны единичные программы и то с изрядной долей геморройностью. Максимум на что бы я рассчитывал, это наложение траектории на карту, и визуальный контроль. Это не так сложно, могут многие программы для работы с космоснимками из инета, в частотности SASPlanet.
С уважением, Алексей.
|
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]()
Тут вот какое дело. Я себе мыслил это так. Что на гугле, что на яндексе есть сервис поиска по координатам. Выдает конечно большой разлет. Допустим, такой результат: ввел первую пару из столбцов по X и Y и получил Украина, Киев, Печерский район, ул. Мечникова 22 дома, клацнул на 22 дома и получил номера домов.
Так вот что я имел ввиду. Нельзя ли организовать средствами VBA макросик, который будет перебирать эти координаты (попарно), обращаться на этот сервис, получать хотя бы такой ответ и вставлять его в столбец S. Можно, как я писал, не все подряд, а по условию из столбца R (начало движения). Я прекрасно понимаю, что точности тут до точного номера дома не будет, но хоть так. |
![]() |
![]() |
![]() |
#6 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Всё можно сделать, если очень хочется.
Делаете пользовательскую функцию, которая принимает 2 параметра (широту и долготу), и возвращает текста адреса. Функция возьмёт данные отсюда: ![]() PS: Где-то на форуме (вроде, на Планете Excel) вроде попадался подобный макрос, получающий адрес по координатам. Поищите - глядишь, и делать заново не придётся.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 10.01.2012 в 18:51. |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
![]() Цитата:
2. Лично я забил бы и искал иные пути решения задачи. Разлет 25м - это значительно, качество карт отвратное (тут и дороги не там проходят, и названия не соответствую реальным и прочее и прочее, список очень большой). Как я понимаю скорее всего ты работаешь в такси или в доставке (личные цели в расчет не берем ![]() Вывод: систему контроля перемещения по данным с gps навигаторов, создать реально и не так сложно. Но уровень доверия к ней будет весьма низок, а ошибки будут происходить постоянно и без системно (то есть на автомате их отловить нельзя). Нужна ли такая система, решайте сами. В то же время ручная сверка будет отнимать ориентировочно 0,3-1,5 часа в день, кроме того эту обязанность можно возложить на операторов. Зы Я уже нашел способы обмануть систему. ![]()
С уважением, Алексей.
Последний раз редактировалось tae1980; 10.01.2012 в 19:48. |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
![]()
Имела бы смысл система такого рода: на пульт КПК передает координаты с периодичностью N минут. И оператор видит, где примерно находиться машина, сколько стоит и даже можно приблизительно определить причину простоя. Здесь можно организовать дополнительные сервисы: вызов ГАИ, вызов скорой, подсказка объезда пробок от оператор, сигнальные кнопки и прочее.
С уважением, Алексей.
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
![]() Цитата:
Sub ZaprosNaYandex() Dim APIKey As String Dim HTMLzapros As String Dim Koordinat As String Dim Ogranichenie As String Dim Kolichestvo As String Dim LastRows As Integer Dim i As Integer Dim otvet As XmlMaps APIKey = " " 'API ключ ' API ключ можно получить на yandex.ru, как показала практика, на локальных компьютерах проверка API ключей не производиться ' я юзаю свой API ключ как дома так и на работе, хотя он зарегестрирован на рабочий домен HTMLzapros = "http://geocode-maps.yandex.ru/1.x/?geocode=" ' Запрос Koordinat = "37.611706,55.75862" ' Координаты которые необходимо перевести в словестное наименования места ' Так же возможно сделать обратное преобразование, просто подставив "Россия, Москва, улица Тверская, 7" вместо координат Ogranichenie = 0 ' Параметр ограничения. Может принимать "0" и "1" Kolichestvo = 1 ' Клоичество результатов в ответе Application.ScreenUpdating = False LastRows = Sheets("Лист1").UsedRange.Rows.Coun t For i = 1 To LastRows ' Здесь форматируються координаты и сохраняются в переменную ' Для дальнейшей подстановке в запрос Koordinat = Replace(Sheets("Лист1").Cells(i, 8), ",", ".") & "," & Replace(Sheets("Лист1").Cells(i, 7), ",", ".") If i = 1 Then ActiveWorkbook.XmlImport _ URL:=HTMLzapros & Koordinat & "&rspn=" & Ogranichenie & "&" & "&results=" & Kolichestvo & "&" & "&key=" & APIKey, _ ImportMap:=Nothing, Overwrite:=True, Destination:=Sheets("Лист2").Cells( i, 1) Else ActiveWorkbook.XmlImport _ URL:=HTMLzapros & Koordinat & "&rspn=" & Ogranichenie & "&" & "&results=" & Kolichestvo & "&" & "&key=" & APIKey, _ ImportMap:=Nothing, Overwrite:=True End If If Sheets("Лист2").Cells(i, 16) <> "other" Then Sheets("Лист1").Cells(i, 9) = Sheets("Лист2").Cells(1, 16) Else Sheets("Лист1").Cells(i, 9) = Sheets("Лист2").Cells(1, 15) End If Next i ActiveWorkbook.Connections("Подключ ение").Delete ActiveWorkbook.XmlMaps("ymaps_карта ").Delete Sheets("Лист2").Cells.Delete Shift:=xlUp Application.ScreenUpdating = True End Sub Буду разбираться. Так как конкретная ситуация для меня совсем не знакома, буду рад и благодарен любому совету. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
обратное отображение содержимого ListView | ShamanK | C# (си шарп) | 1 | 23.11.2011 22:03 |
Обратное о модулю | Cakeinpanic | Общие вопросы C/C++ | 1 | 04.06.2009 08:32 |
обратное распределение Стьедента в Exel | vvo1962 | Microsoft Office Excel | 2 | 14.12.2008 11:09 |
"Обратное дерево" | AdMeen | Общие вопросы Delphi | 3 | 08.10.2008 19:44 |