www.map-info.ru :: Просмотр темы - Поиск адреса
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
blackswan



Зарегистрирован: 14.05.2010
Сообщения: 14

СообщениеДобавлено: Пн Июн 07, 2010 3:08 pm    Заголовок сообщения: Поиск адреса Добавить ответ со ссылкой на данный текст

имеются карты в mif/mid формате,
необходимо по заданному городу, улице, номеру дома отыскать и показать на карте этот объект, если будет найден. Работаю в Delphi.
как такое можно сделать?
Адекватного описания формата mid я не нашел, кроме того, что в каждой строке хранится информация об одном объекте из файла mif. Номер объекта в mif соответствует строке записи в mid. Только для этого необходимо распарсить mif и выделять там объекты. Допустим я это сделаю, но открыв файл MID обнаружил, что там хранится лишь частная информация для объекта. Например, если это дом № 13 по улице Такой-то города Такого-то , то в соответствующей строке будет написано просто 13. Т.е. он не предназначен для моей задачи. Решение пока вижу такое
1) найти город (по тегу города, их там кажется несколько, в зависимости от населения)
2) найти улицу (улицы могут быть обозначены как дороги разного значения)
3) найти номер дома

Но дело в том, что у меня предполагается много городов, улицы и тем более дома будут повторяться, можно искать ближайшую улицу и ближайший дом соответственно к городу и к улице, но это займет долго времени.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Arhara



Зарегистрирован: 18.02.2009
Сообщения: 400
Откуда: Moscow, RF

СообщениеДобавлено: Пн Июн 07, 2010 8:19 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

ответ не может быть дан без информации о том, отвечает ли ваша задача "программированию в среде MapInfo". Для MapInfo таких сред всего 2 - сама MapInfo и MapInfo RunTime.
Чистый Delphi к этой задаче имеет очень косвенное отношение, если он не обращается к среде MapInfo. Если обращается, то все опсианное вами - стандартная задача геокодирования. Для ее решения есть стандартные средства. В самой MapInfo - минимальные.

И еще, с самим MIF/MID никто на прямую не работает. Это не удобно и неэффективно. Т.к. MIF/MID - это обменный формат, а не формат ГИС.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
blackswan



Зарегистрирован: 14.05.2010
Сообщения: 14

СообщениеДобавлено: Вт Июн 08, 2010 9:33 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

вообще я использую Delphi, но меня бы устроил вариант составления справочников адресов с последующим занесением в таблицы. Если создание таких справочников легко произвести в MapInfo (с MapBasic или без), был бы признателен советам, как это можно сделать.
Справочники предполагается с такими полями

Город(или крупный объект)
Улица (улица, дорога, трасса)
Дом (номер)
Имя карты(или идентификатор, на которой расположен объект)
Координаты

Тип объекта определяется в поле GRMN_TYPE? Где можно получить справочник по этим типам, чтоб знать, какие объекты мне нужны ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
blackswan



Зарегистрирован: 14.05.2010
Сообщения: 14

СообщениеДобавлено: Ср Июн 09, 2010 9:55 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

попробовал обработать из Delphi файл mid. Как я понял, стандарт формата MapInfo позволяет создавать свои пользовательские типы (поля) в таблицах. В моих картах есть поле GRMN_TYPE, в котором вроде бы хранится тип объекта, но это оказались карты Garmin (скорее всего полученные из формата IMG) и это их поле и обозначения. Если взять другую карту, то могут быть другие поля и другие обозначения. Но допустим , я буду использовать карты с типами Garmin, составленные для Garmin. В одном наборе mif/mid, называемом Roads - дороги - хранятся улицы. Каждая улица привязана к городу, области и стране, и некоторые имеют уникальный ID, если пропарсить файл mif, то возможно найти координаты её линий. Но дома и их номера находятся в другом файле и никакой связи с улицами у них нет. Единственный способ, который я вижу - мерять расстояние от найденной улицы до всех домов с заданным номером и искать ближайший, но это требует большого времени, если домов будет много. Кстати, улица состоит из нескольких "подулиц", потому как это скорее не как улица , а как набор дорог с одни названием (тип может отличаться).
Возможно ли в среде MapInfo это сделать по-другому? Есть ли встроенные средства?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
zzzio



Зарегистрирован: 20.04.2008
Сообщения: 24

СообщениеДобавлено: Ср Июн 09, 2010 3:48 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

В мапинфо это делается обычным sql-запросом, хотя исходя из задачи придется прибегнуть к мапбасику. В делфи работать с мид\мифом работать будет сложно, т.к. это обычный текстовый файл и как в нем расстояния например мерить...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru