Утилиты от Mr_Weegley - красивости, автоматизация, проверки
Добавлено: 06 окт 2008, 14:46
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-м и тд. в будущих версиях исправлю это и сделаю такой принцип автоматическим.
предлагаю на ваш суд пробную бету утилиты написанной по просьбе 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-м и тд. в будущих версиях исправлю это и сделаю такой принцип автоматическим.