Страница 1 из 3

Утилиты от Mr_Weegley - красивости, автоматизация, проверки

Добавлено: 06 окт 2008, 14:46
Mr_Weegley
MP_Dublicator 1.6 от 10.06.2012






предлагаю на ваш суд пробную бету утилиты написанной по просьбе GuSeAn
Назначение: Удаление лишних точек из полигонов, с дальнейшей ректификацией(Выравниванием углов) оных.
При выравнивании углов сохраняется площадь и общее направление полигона. Работа ведется только с координатами - все остальные поля не трогаются.
Из описания вставленного в программу:
Работа ведется с исходниками карт в польском формате.
По умолчанию, после прогонки файла на выходе получается файл с
именем <Исходное имя>_normalized.mp и дальнейшую работу нужно
вести с ним. Таким образом, исходный файл остается не тронутым.
Для повторной прогонки нужно использовать результирующий файл
от предыдущей прогонки.
Например: файл Проба.mp - открываем, Программа предлагает сохранить его как Проба_normalized.mp - сохраняем. для второй прогонки используем уже Проба_normalized.mp и получаем на выходе Проба_normalized_normalized.mp
и тд.

Ограничения:
Работа должна вестись только с исходниками карт имеющими один
нулевой слой. Иначе, в выходном файле полигоны будут
продублированы и наложены друг на друга.
Так как работа с файлами ведется напрямуй в одном потоке, имена входного и выходного файлов не должны совпадать! Не
пытайтесь сохранить выходной файл в тот, который нужно
обработать.

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

Лишними точками считаются точки в которых разница азимутов на
следующую точку, и от предыдущей на текущую составляет меньше
некоторого количества градусов (по умолчанию 6)
Например, имеется точка, азимут следующей по обходу равен 70, а
азимут этой точки из предыдущей равен 71. Разница составляет
всего
1 градус, что вероятнее всего указывает на то, что в этой точке
полигон должен иметь ровную линию (стена дома, и пр.)

Следующий этап - Выравнивание четырехугольных полигонов с
приведением углов к прямым и сохранением площади и
ориентации оных. (Аналог Rectify polygon в Mapedit)
Эта работа ведется с полигонами, у которых после удаления лишних
точек осталось 4 вершины.
Программа вычисляет центр полигона и генеральное направление
как среднее направление двух длиннейших сторон
Далее проверяется, не имеет ли одна из этих длиннейших сторон
прямых углов с одной из примыкающих
Если такой угол имеется, то генеральное генеральным принимается
направление этой стороны.

Работа с более сложными полигонами извините, пока не
планируется, я
не сильно крутой програмист, и уж тем более не математик :)

Если вам хоть чем то поможет эта программка, достаточно сказать
спасибо Сергею Самсонову (Mr.Weegley), то есть мне :)
Ну а меценаты, чтобы подбодрить, и стимулировать более активное
развитие могут кинуть пару центов на кошелек Z308071843952 :)


Обновлено 2008-11-22:

Добавлено: возможность заменять маленькие полигоны (например менее 100кв.м) на квадратные с той же или заданной площадью, или удалять их.
Добавлено: многопроходность при удалении лишних точек. теперь не нужно один и тот же файл гонять несколько раз.
+мелочи всякие не особо важные

2009-01-15
Добавлена ПРОБНАЯ версия для удаления близлежащих точек "mp-Align-neighbours"
Добавлена возможность удаления близлежащих точек. Если расстояние между двумя точками менее заданного, то они удаляются, и вместо них ставится средняя точка.
Пока что алгоритм не отработан на 100%, а так же пока я не внедрил еще пару задумок на эту же тему, выкладываю ее отдельным файлом. Пользовать с осторожностью и проверкой результатов.
Еще совет: я обратил внимание, что удалять сразу 4-метровые расстояния не есть хорошо. поэтому желательно делать это последовательно - 1 прогон - 1м, потом результирующий файл прогоняем на 2-м и тд. в будущих версиях исправлю это и сделаю такой принцип автоматическим.

Добавлено: 09 окт 2008, 22:50
GuSeAn
Mr_Weegley,
Большое спасибо очень выручил :!:

Добавлено: 10 окт 2008, 17:05
Mr_Weegley
Пользуйтесь :) вот вот соберу моск в кучу и сделаю вторую прогу :)

MP Dublicator

Добавлено: 13 окт 2008, 18:35
Mr_Weegley
Предлагаю потестить MP_Dublicator.
Основная задача - создание массивов одинаковых полигонов.

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


Из описания:

Ограничения:
Работа ведется с исходниками карт в польском формате.
Программа понимает только один формат координат - он указан в
окне ввода координат. Если у Вас в настройках стоит
другой формат, то придется его переключить.

Входные данные
Входными данными являются:
Координаты начала и конца главной линии (формат указан в окне
ввода координат)
Количество необходимых полигонов при расположении их вдоль линии,
или количество полигонов с каждой стороны от линии
Справа или слева от линии строить полигоны
Длина и ширина нужных полигонов
Дистанция между полигонами
Расстояние между линией и полигонами
Угол поворота полигонов относительно основной линии
Параметры нумерации
Тип полигонов
Улица, к которой они будут принадлежать
Можно автоматически расположить полигоны по всей длине линии, задав расстояние между ними или нужное их количество

Дистанция между полигоном и линией есть рассояние от линии до стороны полигона при их параллельном расположении(по умолчанию)
В случае поворота полигонов необходимо учитывать что один из углов будет ближе к линии


Работа с программой. (обновлено 10.06.2012 Под последнюю версию программы)
1. Рисуем в редакторе линию, вдоль которой нужно выстроить полигоны
2. Заходим в ее свойства, копируем пары координат, либо всю строку Data0 и вставляем их в окно ввода координат.
Во избежание ошибок лучше поле предварительно очистить.
2. Настраиваем параметры создания полигонов
3. Жмем "Получить [IMG ID]" и выбираем карту, в которую будут вставлены домики. Из нее программа вычитает список городов и улиц, а так же шапку.
3. Жмем "Создать полигоны" и сохраняем карту в файл с предложенным, либо своим именем.
4. Открываем полученную карту редактором (отдельно) и проверяем результат.
Если все нормально, то в Редакторе жмем Add.. и добавляем к карте результат работы
программы.

Версия 1.6 от 10.06.2012 (Версии пишу от балды, чисто чтобы следить что новее)
MP_Dublicator 1.6.rar
[Новое]Теперь можно рисовать вдоль ломанных линий. Проверяем, отписываем о результатах. Алгоритм пока не учитывает крутых поворотов, и на них могут быть наложения.
[Новое]При сохранении файла с новосозданными домами предлагается имя в формате "Мате-Залки ул.1-26.mp" т.е. название, и с какого по какой номера домов.
[Новое]Кнопка "Создать полигоны" не активна, пока не будет прочитана шапка-шаблон из карты, в которую домики будут вставлены.
Следующая версия:
1.будет связывать списки улиц и городов. Т.е. при выборе города в списке улиц будут только те, что есть в городе.(Сейчас все что есть в карте)
2.будет распознавать формат CityName или CityIdx и записывать файл соответственно.
3.выйдет хз когда.



Версия 1.5 от 27.05.2012
MP-dublicator 1.5.rar
+Добавлено чтение шапки из файла, к которому будут добавляться домики. Шапку давать программе обязательно. А может и нет - пусть знатоки скажут - критично ли добавлять в карту куски без шапки. Если ее не прочесть то файл создан будет, адреска в нем заполнена будет, но я не знаю, как это воспримет редактор. Так что, для совместимости лучше давать.
+Теперь можно просто скопировать строку Data0 линии из соответствующей вкладки МГЕ, или тупо скопипастить из исходника. Оно поймет. И вообще, теперь она ищет просто пары координат, без всяких букв. Лишь бы это были широта и долгота в формате dd.dddd, dd.ddddd
Индикатором того, что координаты найдены и восприняты будет соответствующая строка в статусбаре.
НО ИСПОЛЬЗУЕТ ВСЕ РАВНО ПЕРВУЮ И ПОСЛЕДНЮЮ ПАРЫ КООРДИНАТ! Когда-нибудь научу ее рисовать вдоль ломанных - тогда и будет счастье.

При чтении исходника так же заполняются поля Страна-Регион-Город-Улица. Из них, соответственно, можно выбрать то что нужно. А можно и самому вписать нужные данные. Никаких проверок и установлений зависимостей программа не делает!(пока) Следите, чтобы улица находилась в нужном городе и районе! Работа ведется с исходниками, сохраненными с параметром CityName, а не CityIdx. При создании полигонов адреска им задается соответствующими данными из выпадающих списков, или не пишется вообще, если в них пусто.

Эта версия - переходная. Следующая, возможно, научится рисовать домики вдоль ломанных линий.

Версия 1.1.3 от 17.10.2008
MP-Dublicator 1.1.3.zip
Добавил сохранение настроек между сеансами работы проги.

ВНИМАТЕЛЬНО С КООРДИНАТАМИ ЛИНИИ!!!
Запись пары координат должна выглядеть так:
N45.049454° E35.374847°
Буквы N и E в записи координат обязательны!

Баги прошу на [email protected] с описанием, координатами и параметрами.

Re: MP Dublicator

Добавлено: 16 окт 2008, 00:20
GuSeAn
Mr_Weegley писал(а):Предлагаю потестить мою вторую прогу MP_Dublicator.
Основная задача - создание массивов одинаковых полигонов.
В переводе на русский :) - эта программка весьма быстро и успешно позволяет автоматизировать нанесение "жилых" полигонов в частном секторе: присваивает название улицы и номер дома.

Автору огромный респект!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Добавлено: 22 окт 2008, 10:43
IgorA100
Имею такой список координат:
N51.474380° E46.094620°
N51.475605° E46.096508°
N51.476292° E46.097454°

Жмакаю "Создать полигоны" - реакции нет, внизу написано: "Координаты не найдены". В чем засада?
Собсно вообще никакие координаты не воспринимает

Добавлено: 22 окт 2008, 11:20
AGurov
координаты должно быть 2 (начало и конец линии)

Добавлено: 22 окт 2008, 15:37
Mr_Weegley
AGurov писал(а):координаты должно быть 2 (начало и конец линии)
Именно! причем, тут такая штука: прога ищет в строчках пары координат. Если имеется 2 правильных строки, то получается 2 широты и 2 долготы. и того 4 параметра. Если в результате парсинга получается отличное от 4 число параметров, то такая ситуация считается ошибочной. В вышеописанном случае их получается 6. потому и пишет что не найдено.

Добавлено: 22 окт 2008, 18:24
IgorA100
AGurov писал(а):координаты должно быть 2 (начало и конец линии)
Но это немного не интересно получается. Ведь дороги имеют св-во быть изогнутыми ;)

Добавлено: 22 окт 2008, 19:54
GuSeAn
IgorA100 писал(а):
AGurov писал(а):координаты должно быть 2 (начало и конец линии)
Но это немного не интересно получается. Ведь дороги имеют св-во быть изогнутыми ;)
Имеют конечно :), НО в данной программе это реализовано только двумя координатами по прямой. Для тех кто рисовал руками это мелочи :)

Добавлено: 22 окт 2008, 21:28
Mr_Weegley
IgorA100 писал(а):
AGurov писал(а):координаты должно быть 2 (начало и конец линии)
Но это немного не интересно получается. Ведь дороги имеют св-во быть изогнутыми ;)
Имеют. И я уже думал над тем, чтобы сделать рисование по кривым. но тут есть проблемы. В первую очередь возможность наезда друг на друга домиков во внутренней части изгиба равно как и их большое растяжение во внешней. Либо, усложнение алгоритма настолько, насколько мой мозг не способен :)

Так что извините, уж что осилил :) ИМХО то что есть - уже большая помощь в работе с частным сектором.
Единственное, что подумываю добавить - присвоение города. Сразу не вышло - оказалось что простое присвоение CityIdx не катит.

Добавлено: 24 окт 2008, 12:22
IgorA100
Имеют. И я уже думал над тем, чтобы сделать рисование по кривым. но тут есть проблемы. В первую очередь возможность наезда друг на друга домиков во внутренней части изгиба равно как и их большое растяжение во внешней.
ИМХО - это допустимо ;) Т.к. дорога ну не так уж сильно будет изгибаться. Если изгиб нрадусоф 70 и больше, да, могут быть накладки, но в этом случае поправить пару домиков на изгибе не будет сильно сложно и ручками ;)

Добавлено: 24 окт 2008, 22:21
Mr_Weegley
ясно. ну, я попробую это сделать. но обещать не буду, ибо во первых со временем уже не так свободно, а во вторых - это сложнее чем просто по линии :)

нашел еще пару интересных утилит

Добавлено: 02 ноя 2008, 23:32
Mr_Weegley
Вот тут нашел еще пару интересных утилиток

Re: MP Dublicator

Добавлено: 16 ноя 2008, 17:15
OldMan
Mr_Weegley писал(а):Предлагаю потестить мою вторую прогу MP_Dublicator.
Основная задача - создание массивов одинаковых полигонов.
Сергей, спасибо большое. Утилита шибко полезнючая.
Одно пожелание (пока :) ) - возможность автоматически присваивать вновь созданным полигонам полную адресную инфу, т.е. добавлять CityIdx=N (наверное через окно, ручками). Для копи-паста такой вариант пройдёт.

Но для сохранения результатов, похоже, надо спрашивать из какого файла брать секции
[Countries]
[Regions]
[Cities]
и эти секции сохранять в выходном файле.
А может сразу брать всю шапку из главного файла (спросив из какого) и просто добавлять её в выходной файл?