Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Карта. Поиск улицы, дома.


Автор: Mal Hack 22.3.2005, 13:56
Хотелось бы узнать, как это реализовывается, т.е. как хранится сама карта города, как на ней ищутся здания, улицы и если найдены - выделяются.

Автор: podval 22.3.2005, 15:48
Тема перенесена из раздела "Алгоритмы".

Автор: podval 22.3.2005, 15:59
Ищи по теме "Геоинформационные системы".

Автор: Mal Hack 22.3.2005, 23:08
podval
поискал в Я. Не очень долго правда, но на принцип работы так и неи натолкнулся, только уже на готовые системы.
Не подскажешь более детально куда копать?

Автор: chipset 24.3.2005, 01:19
Цитата(Mal @ 22.3.2005, 02:56)
Хотелось бы узнать, как это реализовывается, т.е. как хранится сама карта города, как на ней ищутся здания, улицы и если найдены - выделяются.

Да собссна я с ГИС не имел дел, но я думаю что это обычная реляционная база где улицы описаны мат. формулами и обозначены точки соединения нескольких.
Простейший рекурсер проходит по базе и отрисовывает последовательно улицы. Также можно указать масштаб для отдельного элемента, тогда реализовать LoD.
Выделение мышкой обрабатывается также как и в любой игре, к примеру: проверяются координаты мыши и отсекаются области пока всё не доходит до конкретного обьекта.

Автор: podval 24.3.2005, 07:27
Насчет ГИС обратись к Pegas

Автор: Mal Hack 24.3.2005, 15:33
chipset
понимаешь в чем фишка... Тупо по координатам сделать-то можно. НО. Яркий пример в МосГисе.. Дом. И не просто квадратик, а реальный дом, т.е. если дом угловой - изображение - угол, если 8 подъездом, то длинрный прямоугольник smile
так что тут не все так просто...

Цитата(podval @ 24.3.2005, 07:27)
Насчет ГИС обратись к Pegas

окей.

Автор: chipset 24.3.2005, 17:15
Цитата(Mal @ 24.3.2005, 04:33)
Тупо по координатам сделать-то можно. НО. Яркий пример в МосГисе.. Дом. И не просто квадратик, а реальный дом, т.е. если дом угловой - изображение - угол, если 8 подъездом, то длинрный прямоугольник smile

Усложнить структуру дома.
Сделать несколько заготовок, наиболее вероятно встречающихся домов или дать возможность пользователю самому определять форму дома, опять-же - мат уравнение.

Автор: z-END 24.3.2005, 18:01
Цитата(chipset @ 24.3.2005, 17:15)
Сделать несколько заготовок, наиболее вероятно встречающихся домо

Мне почему-то кажется что все объекты на карте целесообразней хранить в виде:
1. точка привязки
2. массив с относительными координатами (например по часовой стрелке) в которых за систему исчисления координат взята точка привязки.
прорисовывается такой объект из точки 1 и потом черепашим методом в точку 2 и т.п. пока не будет достигнут последний элемент массива, после чего линия замыкается в п.1.
карту содержащую объекты в таком виде, имхо, гораздо проще не только увеличивать/уменьшать но еще и поворачивать

Автор: Mal Hack 24.3.2005, 18:36
Цитата(z @ 24.3.2005, 18:01)
2. массив с относительными координатами (например по часовой стрелке) в которых за систему исчисления координат взята точка привязки.
прорисовывается такой объект из точки 1 и потом черепашим методом в точку 2 и т.п. пока не будет достигнут последний элемент массива, после чего линия замыкается в п.1.

Но тут возникает вопрос, как пользователю добавлять этот самый дом. Ну не будет же он в ручную добавлять координаты smile

Автор: z-END 24.3.2005, 18:47
ход моей мысли:
создаем примитивный векторный редактор который выполняет всего две функции - изменение координат элементов (точек) и добавления новых между двумя умеющимися.
далее:
дом-замкнутая фигура соответсвенно в данном редакторе создаем квадрат и уже в нем изменяем координаты точек или добавляем новые, тем самым усложняя его форму.
после чего задаем масштаб этого объекта и при необходимости его поворот.

Автор: Medved 24.3.2005, 19:59
Есть много вариантов реализации ГИС.

Начиная с того, что электронная карта - это просто набор рисунков, и храниться в БД координаты требуемых областей. - Но это гемморой.

На сегодняшней день ГИС - это популярно, поэтому существует несколько ГИС- ориентированных продуктов.

1. ArcInfo - это целый набор программных комплексов, для реализации практически любых задач связанных с ГИС. В основном это лидер рынка. Большинство компаний работающих в частной сфере отдают предпочтение этому программному комплексу.
ArcObject - представляет наибольший интерес для программиста, так как это и есть объектная ArcInfo, с помощью которой можно строить свои ГИС приложения.

2. Geomedia - этот программный комплекс от компании, которая в основном выполняет оборонные заказы ведомств США, и славиться своими нотбуками, которые можно без боязни кидать в воду. Этот ПК для ГИС меньше распространен, чем ArcInfo, но достин внимания.

3. MapInfo - совсем слабенький ГИС. Очень глючный и не расчитан на большие объемы информации.

Принцип работы у всех программ один:
1. Векторная электронная карта, состоящая из объектов, координаты которых храняться в БД. (улицы, переулки, дома и т.д.); Можно подцепить любую базу данных (Oracle, MS SQL, Informix. Access и т.д.). Хоть через ODBC, хоть на прямую.
2. К каждому объекту или группы объектов добавляется соответсвующая атрибутика. (для дорог к примеру ширина, тип покрытия и т.д.)
3. Любое действие с обектом на карте приводит к изменению в БД. Будь-то мы сдвинули обект, тем самым изменив его координаты в БД, либо добавляем обект на карту, что вызовет соответствующее добавление записи в БД.

С помощь объектной модели любой из вышеперечисленных ГИС можно оперировать с этими объектами, их атрибутикой и их отображением.

Но у всех этих софтин, есть одна ахиллесова пята. Они направлены в первую очередь на отображение поиск и т.д. информации, но не на ее ввод.

Мы даже писали соответствющее прикладное ПО, чтобы максимально автоматизировать и облегчить этот процес.

Но ГИС это не просто электронные карты. Это гораздо больше.

Вот пример одной из многих задач, с которыми я сталкивался.

Есть карта всех инженерных сетей города, мы конкретно будем рассматривать слйчай с отопительными водопроводами, по которым течет вода, которая затем попадает в наши батареи отопления. У каждой трубы - своя атрибутика (диаметр трубы, теплоизолиция и т.д)
Мне надо было решить такой функционал, что если мы допустим случился прорыв, то какой ближний кран будет лучше всего отключать, показать какие районы города и дома останутся без отопления, и сколько кубоментров воды при этом придется слить. Задача я вам скажу интересная.

Эту задачу необходимо было решить с помощью продуктов Geomedia, а там нет (по карйней мере не было в той версии), такого понятия, как топология сети (говоря проще стуктура сети, или еще проще, в каком направлении движется вода).
А вот когда начал работать с ArcInfo - ребята что ее делали, об этом подумали. В принципе и в Geomedia это есть, но сделано через жопу.
Это один маленький ньюанс, а таких в ГИС тысячи.

Вообщем прежде чем приниматься за ГИС проект, необходимо его тщательно изучить, и выбрать именно тот продукт, который наиболее удволетворяет нуждам этого проекта.
Но в большинстве случаев, как человек который работал и со всеми вышеперечисленными продуктами я все же посоветовал бы ArcInfo. Он очень интенсивно развивается, и на сегодняшний день много маленьких контор, которые пишут дополнения к этой системе.
Добавлено @ 20:04
Цитата(z @ 24.3.2005, 21:47)
ход моей мысли:
создаем примитивный векторный редактор который выполняет всего две функции - изменение координат элементов (точек) и добавления новых между двумя умеющимися.


Ты не первый кто так думает. Но я сразу скажу - эта идея обречена на провал. Здесь просто огромное количество ньюансов, которые не видны на первый взгляд. А представь что допустим в городе - несколько сот тысяч объектов. И как ты это будешь отрисовывать? Стандартными средствами у тебя все повиснет. Тут как минимум надо свой графический движек реализовывать. И это еще не самое страшное.

Это все равно что сказать "А, нафиг использовать чужую базу данных, например тот же Oracle? Я лучше сам ее напишу, что тут сложного?"

Автор: podval 24.3.2005, 20:27
Pegas
Есть такая вещь, как слои. Многослойные карты - это присуще всем ГИС?

Автор: Mal Hack 24.3.2005, 20:53
Pegas
ага, кое-что проясняется.
Может знаешь, такая вещь, как МосГИС, на ней МЧС сидит. Так вот, возможно надо будет на карте показывать область хим. заражения. Само заражения и размер "облака" расчитывается другой программой. Дык вот, при переносе данные в МосГИС прорисовка ведется там, куда мышкой кликнешь, а надо как бы чтобы над тем объектом, где произошла авария. Т.е. надо увязать ту программу с МосГИСом, чтобы как бы совпадали координаты объектов, на карте и в программе.
Т.е. если, МосГИС использует клиент-серверную базу, где хранится данные объектов, то в принципе можно будет к ней (базе) подрубиться другой прогой, сохранить координаты объектов и затем испортировать на карту?
Правильно ли я мыслю?

Автор: Medved 25.3.2005, 01:34
Цитата(podval @ 24.3.2005, 23:27)
Pegas
Есть такая вещь, как слои. Многослойные карты - это присуще всем ГИС?


Да, - это одно из основных особенностей ГИС. Иначе нельзя было бы получить карту, в том виде который требуется. Это очень важное условие. Иначе дороги и канавы к примеру окажутся поверх домов, ну и так далее.

Автор: Medved 25.3.2005, 01:52
2Mal Hack и да и нет.

Просто так доступ к базе тебе никто не даст, так как это секретная информация стратегического назначения. И я не шучу. Представь, если бы у террористов к примеру был бы план всех инженерных сетей города? Это не есть гуд.

Ты бы поболее узнал об этом вопросе, тогда я смогу тебе более конкретней помочь.
Но если ты до этого не работал с ГИС, тебе сложно будет самому разобраться самостоятельно.

А вообще ты правильно мыслишь. Координаты можно получить из базы. А потом насколько я понимаю тебе надо будет на МосГИС-овской карте отрисовать объект заражения, над объектом, кооординаты которые ты получил заранее?
Если да, то в принципе проблем нет, только отрисовывать тебе придется средствами той ГИС системы, которая там установлена.

На чем основанна МосГИС, я уже не помню, а журналы о ГИС где это было написано, остались на старой работе.
Но тут выбор не велик, скорее всего ArcInfo. Хотя могу и ошибаться.

Помню какой-то город делал свою ГИС на основе автокада, но не думаю что москвичи были этими извращенцами.

Автор: Mal Hack 25.3.2005, 13:24
Цитата(Pegas @ 25.3.2005, 01:52)
Просто так доступ к базе тебе никто не даст, так как это секретная информация стратегического назначения. И я не шучу. Представь, если бы у террористов к примеру был бы план всех инженерных сетей города? Это не есть гуд.

Ну там внутренняя сеть.
А так-то понятно, что секретная.

Цитата(Pegas @ 25.3.2005, 01:52)
Ты бы поболее узнал об этом вопросе, тогда я смогу тебе более конкретней помочь.

Думаю на следующей недели прояснится.

Цитата(Pegas @ 25.3.2005, 01:52)
Но если ты до этого не работал с ГИС, тебе сложно будет самому разобраться самостоятельно.

Ну не в первой разбираться с нуля... Алгоритмически я вроде как гнеплохо мыслю, а если что литература или форум smile

Цитата(Pegas @ 25.3.2005, 01:52)
А потом насколько я понимаю тебе надо будет на МосГИС-овской карте отрисовать объект заражения, над объектом, кооординаты которые ты получил заранее?

Ага... Т.е. получается как. Есть база с координатами. По хорошему из нее ГИС и Хим программа джолжна брать данные. Потом Хим программа генерит файлик, который импортируется в МосГис.

Цитата(Pegas @ 25.3.2005, 01:52)
На чем основанна МосГИС, я уже не помню

Пытался посмотреть в инфе программы, ничего об этом не сказано. Вообще разработчики скрывают на чем они свою систему построили, как правило?

Цитата(Pegas @ 25.3.2005, 01:52)
Помню какой-то город делал свою ГИС на основе автокада, но не думаю что москвичи были этими извращенцами.

smile Ну не знаю. В хим программе, к примеру, локальная, парадоксовская база судя по всему используется smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)