06 April 2025, 16:12:18
⁣ ⁣
For the past 24 hours: 103 objects added, 240 objects edited, 38 objects removed.

Author Topic: Программа для обнаружения дублей при слиянии разных SpeedCam.txt  (Read 10608 times)

HaRpY

  • Постоялец
  • ***
  • Posts: 10
  • Карма: 14
    • View Profile
Приветствую всех, читающих данную тему!
Пытался найти на форуме простую утилитку, которая могла бы находить одинаковые и «почти одинаковые» камеры (предупреждения) в текстовом файле Навителовского спидкама, но ничего подходящего не нашел…
Скорее всего потому, что для данных с этого ресурса эта задача не актуальна и mapcam.info отдает инфу без дублей.
Собственно, проблема хорошо известна тем, кто пытается свести в единый файл спидкам данные из разных источников. Тогда велика вероятность появления дублей и обнаружить их «глазами» не так-то просто. В общем,  поставил перед собой задачу отыскания дублей по принципу: «как я это вижу и как мне это нужно» и реализовал на скорую руку…


Немного технических подробностей:
Вкладка «Список»
1. Для работы программы необходим установленный на компьютере .NET Framework 3.5
2. Никаких «особенных» оптимизированных алгоритмов не используется, все реализовано по-простому и почти не тестировалось ;) Поэтому на больших спидкамах  будет работать  долго, а  в случае непредусмотренных ситуаций возможны «вылеты с ошибками»
3. Программа «заточена» на чтение «стандартного» Навителовского формата спидкама, где первой строкой идет: IDX,X,Y,TYPE,SPEED,DirType,Direction - далее следуют данные именно  в такой последовательности. Изменение очередности следования полей не допускается.
По использованию программы:
1 Кнопкой «Открыть файл...» файл считывается для последующий обработки, если ранее был открыт другой файл, то  предыдущий список объектов очищается.
2 Кнопка «+ еще из файла...» добавляет к текущему списку объектов данные из открываемого файла (также в формате Навител SpeedCam)
3 Кнопка «Найти дубли» - производит поиск в соответствии с установленными флагами «Сравнение»
4 Кнопка  «Показать дубли» отображает найденное в виде текстовых блоков. Каждый блок начинается со строки состоящей из тире. Далее (первой) идет исходная строка, а за ней (начиная со второй и до конца блока)  строки-дубли. Данные этого окна можно скопировать в Clipboard стандартными средствами Windows.
5 Кнопка «Удалить дубли» удаляет ВСЕ объекты в списке, показанные как строки-дубли. (см. п4.)
6. Кнопка «Сохранить объекты в файл...» сохраняет данные в текстовом файле в формате Навител SpeedCam. Обратите внимание -  координаты  будут записаны в том же виде, как они были представлены в исходном файле спидкама т.е. без дополнительного форматирования.
Cсылка на скачивание: (нужна регистрация)
http://4pna.com/showthread.php?t=14090
« Last Edit: 22 May 2018, 11:14:04 by HaRpY »

yuryleb

  • Ветеран
  • *****
  • Posts: 1112
  • Карма: 335
  • Garmin DriveAssist 50 - nüvi 2497
    • View Profile
    • Русские TTS-голоса для навигаторов Garmin
Не совсем понятно, зачем выгружать и сравнивать точки с рейтингом -1 ;)

HaRpY

  • Постоялец
  • ***
  • Posts: 10
  • Карма: 14
    • View Profile
Не совсем понятно, зачем выгружать и сравнивать точки с рейтингом -1 ;)
Тут как в меме: "мопед не мой я просто разместил объяву".
Мне надо было оценить быстродействие и результат на сравнительно большом объеме данных, безотносительно их качества. Что нашел в свободном доступе, на том и проверял. ;)
« Last Edit: 22 April 2016, 08:05:41 by HaRpY »

HaRpY

  • Постоялец
  • ***
  • Posts: 10
  • Карма: 14
    • View Profile
Обновил утилиту скачать можно по ссылке:  http://sendfile.su/1394232



Добавлена вкладка «Фильтр» - основное назначение фильтрация общего списка на основе выражений пользователя или географических регионов. Разбор выражений пользователя для фильтрации «самописный» без использования дополнительных специализированных 
библиотек и SQL, поэтому есть ряд ограничений:
1 Каждое  выражение обязательно должно быть заключено в круглые скобки – ()
2 Выражения комбинируются при помощи логических операторов OR (логическое ИЛИ) AND (логическое И)  и также заключаются в круглые скобки
3 Выражение состоит из трех частей: левая часть – наименование параметра; средняя часть – операнд сравнения; правая часть – значение параметра
3.1. Левая часть – наименование параметра, должно быть заключено в квадратные скобки
Обрабатываются следующие наименования параметров: [IDX], [X], [Y], [TYPE], [SPEED], [DIRTYPE], [DIRECTION]
3.2. Типы параметров следующие:
[IDX], [TYPE], [SPEED], [DIRTYPE], [DIRECTION] – целое число
[X], [Y] – строка или вещественное число
3.3. Средняя часть – операнд сравнения, зависит от типа параметра. Допускаются следующие операнды:
=  (равно)  для всех типов
<> (не равно)  для всех типов
> (больше)  для числовых типов
< (меньше) для числовых типов
>= (больше или равно) для числовых типов
<= (меньше или равно) для числовых типов
3.4.  Правая часть – значение параметра,  значения для строковых параметров заключаются в двойные кавычки;  у вещественных чисел целая часть от дробной отделяется точкой. Для координат [X] и [Y] строковый тип введен с целью удобства фильтрации. Например, в выражении ([X] = “56.123”)  при отборе в фильтр будут включены все объекты, у которых для координаты Х – целочисленная часть  равна 56 и первые три разряда дробной части равны 123 (т.е. 56.123000; 56.123567; 56.123999 и т.п.)
Если  указывать значение параметра без двойных кавычек, то тип считается вещественным (числовым) и сравнение осуществляется математически. Например, в выражении ([X] = 56.123) будут отфильтрованы только объекты с координатой X равной 56.123000 (дробная часть числа дополняется нулями)
Примеры:
([Speed]<=5) AND (([Type]<>5) AND ([Type]<>3)) 
Фильтр - все типы предупреждений кроме 5 и 3 со скоростью меньше или равно 5
([Speed]<=5) AND (([Type]=5) OR ([Type]=3))
Фильтр - типы предупреждений  5 или 3 у которых скорость меньше или равна 5

Фильтр по географическим регионам – позволяет отфильтровать из общего списка объекты входящие в выбранный полигон.
Вызывается нажатием  на кнопку «Сохраненные…», затем нажатием на кнопку «Открыть фильтр по географическим регионам». Будет построено дерево по данным из всех файлов с расширением .poly , находящихся в папке Polygons
Как строится это иерархическое дерево, сообразите сами. Файлы можно дополнять и изменять на свое усмотрение, от этого зависит точность границ географических регионов. Поддерживаются "дыры" - если имя секции начинается с символа !
Исходные файлы-полигоны взяты с ресурса http://gis-lab.info
« Last Edit: 26 January 2018, 17:33:35 by HaRpY »

zaza45

  • Новичок
  • *
  • Posts: 1
  • Карма: 0
    • View Profile
 С помощью рекомендаций ув. HaRpY изготовил и исправил:
1. сделал полигон Польши (просто добавить в папку "Polygons")
http://sendfile.su/1386525
2. исправил неработающий полигон Литвы (добавить в ту же папку с заменой)
http://sendfile.su/1386526

HaRpY

  • Постоялец
  • ***
  • Posts: 10
  • Карма: 14
    • View Profile
Обновил утилитку и соответственно ссылки на нее.
Подробнее о изменениях можно узнать здесь: http://4pna.com/showthread.php?t=14090
« Last Edit: 30 March 2018, 13:38:46 by HaRpY »