|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2012, 16:40 | #1 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
обратное геокодирование
Заранее извиняюсь, что скорее всего не в тот раздел помещаю. Прошу подсказки. Имеется лист Excel в разблюдовкой маршрута движения автомобиля. Первые два столбца - это координаты (X и Y, широта и долгота), например в столбце X 30,365465, а в столбце Y 50,449825.
Сталкивался ли кто-нибудь, когда-нибудь с задачей выборки этих координат и определения по ним адресов? В какую сторону вообще двигаться? Подскажите, нельзя ли это реализовать средствами VBA? |
10.01.2012, 17:01 | #2 | ||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Судя всего это долгота и широта. Это моя профессия. Цитата:
Двигаться в сторону изучение геодезии, в частности понятия системы координат (карта, план, номенклатура карт, аэрофотография). Без проблем.
С уважением, Алексей.
Последний раз редактировалось tae1980; 10.01.2012 в 17:04. |
||
10.01.2012, 17:21 | #3 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Ага, значит интуитивно был прав. Спасибо за ответ. Задача, в общем, так и формулируется - определить по широте и долготе адрес. Я просто первый раз с таким столкнулся, поэтому заранее и извинился. Вот в прикрепленном файле первый и второй столбцы X и Y и есть широта и долгота. Остальные столбцы на убирал (мало ли). Возможно ли макросом прямо из файла получить напротив каждой пары адреса? Или, хотя бы, напротив тех пар, где в столбце R стоит "начало движения"?
|
10.01.2012, 17:53 | #4 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Следующий вопрос в каком виде/формате ваши карты, а так же в каких системах координат. Еще сложнее то что вам нужно определить атрибуты объекта на карте (с учетом улета на +- 25 м.), на это способны единичные программы и то с изрядной долей геморройностью. Максимум на что бы я рассчитывал, это наложение траектории на карту, и визуальный контроль. Это не так сложно, могут многие программы для работы с космоснимками из инета, в частотности SASPlanet.
С уважением, Алексей.
|
|
10.01.2012, 18:38 | #5 |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Тут вот какое дело. Я себе мыслил это так. Что на гугле, что на яндексе есть сервис поиска по координатам. Выдает конечно большой разлет. Допустим, такой результат: ввел первую пару из столбцов по X и Y и получил Украина, Киев, Печерский район, ул. Мечникова 22 дома, клацнул на 22 дома и получил номера домов.
Так вот что я имел ввиду. Нельзя ли организовать средствами VBA макросик, который будет перебирать эти координаты (попарно), обращаться на этот сервис, получать хотя бы такой ответ и вставлять его в столбец S. Можно, как я писал, не все подряд, а по условию из столбца R (начало движения). Я прекрасно понимаю, что точности тут до точного номера дома не будет, но хоть так. |
10.01.2012, 18:48 | #6 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Всё можно сделать, если очень хочется.
Делаете пользовательскую функцию, которая принимает 2 параметра (широту и долготу), и возвращает текста адреса. Функция возьмёт данные отсюда: PS: Где-то на форуме (вроде, на Планете Excel) вроде попадался подобный макрос, получающий адрес по координатам. Поищите - глядишь, и делать заново не придётся.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 10.01.2012 в 18:51. |
10.01.2012, 19:40 | #7 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
2. Лично я забил бы и искал иные пути решения задачи. Разлет 25м - это значительно, качество карт отвратное (тут и дороги не там проходят, и названия не соответствую реальным и прочее и прочее, список очень большой). Как я понимаю скорее всего ты работаешь в такси или в доставке (личные цели в расчет не берем . Существующие системы создавались для целей навигации в движении, там условия значительно отличаются. В частности, если система врет это либо ни кто не заметит, либо эта информация быстро становиться не актуальной. Например, проблему улета в 25 метров решают простым "примагничиванием" маркера "я здесь" к ближайшему "значимому" объекту. Это особенно хорошо видно на перекрестках, когда маркер может начать прыгать с дороги на дорогу, или когда машина съезжает на дорогу которой нет на карте, система продолжает еще продолжительное время "примагничивать" маркер к дороге с которой съехали. Реально возможна ситуация, когда ты едешь по одной дороге, а система указывает на параллельную. В движении это не так важно, и продолжается не долго. А вот для целей контроля фатально. То еж касается и ошибок на карте, в движении они не так критичны как для контроля. Вывод: систему контроля перемещения по данным с gps навигаторов, создать реально и не так сложно. Но уровень доверия к ней будет весьма низок, а ошибки будут происходить постоянно и без системно (то есть на автомате их отловить нельзя). Нужна ли такая система, решайте сами. В то же время ручная сверка будет отнимать ориентировочно 0,3-1,5 часа в день, кроме того эту обязанность можно возложить на операторов. Зы Я уже нашел способы обмануть систему. )
С уважением, Алексей.
Последний раз редактировалось tae1980; 10.01.2012 в 19:48. |
|
10.01.2012, 19:52 | #8 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Имела бы смысл система такого рода: на пульт КПК передает координаты с периодичностью N минут. И оператор видит, где примерно находиться машина, сколько стоит и даже можно приблизительно определить причину простоя. Здесь можно организовать дополнительные сервисы: вызов ГАИ, вызов скорой, подсказка объезда пробок от оператор, сигнальные кнопки и прочее.
С уважением, Алексей.
|
11.01.2012, 09:31 | #9 | |
Форумчанин
Регистрация: 21.10.2011
Сообщений: 433
|
Цитата:
|
|
11.01.2012, 09:35 | #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 |