(не знаю как на форуме заставить работать форматирование кода...мда)
Простая автоматизация для КМ
Полно статей про безопасность и тд - а вот про возню с фото/координатами я не видел
Расскажу как я работаю и экономлю кучу времени ( про безопасность использования windows тут речи не идет - не про это речь)\\
Используется powershell
1) Обновляю AGPS данные . Я делаю это через GPS Status and toolbox -из-за санкций без впн или без такого софта - AGPS будет старый
2) Делаем фото кладов. Стандартный вариант - notecam
Пара моментов -
- Прозрачность фона для текста ставим на ноль
- Настройки GPS - самый частый режим
Последнее даст точность 3-4-5 метров - клиенты скажут спасибо
3) Загружаем фотки на комп
Надо выдрать с фото координаты. Finereader для этого излишен да и точность у него так себе
У современной windows есть свой движок для OCR
4) Запускаем powershell.
должен быть установлен модуль
Код:
Install-Module -Name PsOcr -Scope CurrentUser
На выходе будет что-то вроде
Указываем папку с фотками в скрипте. Запускаем
Код:
$images = gci 'R:\all\photos' -include *.jpg,*.png -Recurse
foreach ($image in $images)
{
$words = Convert-PsoImageToText $image.FullName
$a = $words.text -like '*55*' ; $a = $a -replace 'Latitude: ',''
$b = $words.text -like '*37*' ; $b = $b -replace 'Longitude: ',''
"$a,$b"
}
Далее скрипт с неплохой точностью и быстро возьмет координаты
Поправляем, проверяем
Далее загоняем в скрипт который проверит дистанцию между кладами
Код:
$kords = "55.89,37.55
55.89,37.55
55.89,37.55
55.89,37.56
55.89,37.56
55.89,37.56
55.89,37.56
55.89,37.56
55.89,37.56" -split [System.Environment]::NewLine
Add-Type -AssemblyName System.Device
$count = $kords.Count-1
foreach ($kord in $kords)
{
$i = 0
DO
{
$a = $kord.Split(',')[0]
$b = $kord.Split(',')[1]
$c = $kords[$i].Split(',')[0]
$d = $kords[$i].Split(',')[1]
if ($a -eq $c -and $b -eq $d)
{
#to log?
}
else
{
$start = New-Object System.Device.Location.GeoCoordinate $a,$b
$end = New-Object System.Device.Location.GeoCoordinate $c,$d
$dist= $start.GetDistanceTo($end);
if ($dist -le 26)
{
"внимание.расстояние между $a,$b и $c,$d = $dist"
}
}
$dist
$i++
}Until ($i -eq $count)
}
запускаем. он выдаст предупреждение если клады слишком близко
Что это дает
1) не попадете на штраф по дистанции кладов
2) можно пополнять локации если там уже лежат ваши клады - просто нужно добавить координаты старых кладов