Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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-запросом, хотя исходя из задачи придется прибегнуть к мапбасику. В делфи работать с мид\мифом работать будет сложно, т.к. это обычный текстовый файл и как в нем расстояния например мерить... |
|
Вернуться к началу |
|
|
|