28/10/2023

 Макрос VBA для простановки номеров в поворотных точках контура, для полигонов.

+ добавляет в четвертый столбец дистанции  между точками.

Пробегается по списку X и Y, в случае, если находит повторяющиеся координаты (замыкающие контур) ставит в первый столбец номер начала контура и начало следующего контура делает жирным шрифтом.

Принимает перечень со первой/второй строки, столбцы 2 и 3 с координатами XY и берет за начало первого контура.

* Дополнение от декабря 2024: Делает отдельную запись с номером контура для целей QGIS (точки в путь)

* Дополнение от марта 2025: Без разницы, с первой или второй строки начало координат, расстояние между точками округлено до 2 знаков после запятой.

 

Sub CounterPolygons()

    Dim Distance As Double

    Dim Count, tmpCount As Integer

    Dim PolyCount As Integer

    PolyCount = 1 'Counter of polygons

    Count = 1 'Main counter

    CellNum = 2

    tmpCount = Count

    If IsEmpty(Cells(1, 2)) Then CellNum = 2 Else CellNum = 1  'what first line number of XY?

    myX = Cells(CellNum, 2)

    myY = Cells(CellNum, 3)

        Do While Cells(CellNum, 2) > 0

            Cells(CellNum, 1) = Count

            CellNum = CellNum + 1

            ' distance calc

            X1 = Cells(CellNum - 1, 2)

            X2 = Cells(CellNum, 2)

            Y1 = Cells(CellNum, 3)

            Y2 = Cells(CellNum - 1, 3)

            Distance = ((X2 - X1) ^ 2) + ((Y2 - Y1) ^ 2)

            Cells(CellNum, 4) = Round(Sqr(Distance), 2)

            'end of distance calc

            Cells(CellNum, 5) = PolyCount

           

            If Cells(CellNum, 2) = myX And Cells(CellNum, 3) = myY Then

                PolyCount = PolyCount + 1

                Cells(CellNum, 1) = tmpCount

                'Bold

                Cells(CellNum + 1, 1).Font.Bold = True

                Cells(CellNum + 1, 2).Font.Bold = True

                Cells(CellNum + 1, 3).Font.Bold = True

                'end Bold

                myX = Cells(CellNum + 1, 2)

                myY = Cells(CellNum + 1, 3)

                Cells(CellNum + 1, 5) = PolyCount

                Count = Count + 1

                tmpCount = Count

                CellNum = CellNum + 1

            Else

                Count = Count + 1

            End If

        Loop

End Sub


29/06/2023

Быстрое копирование папки, расположенной на Yandex Disk без использования штатного клиента

 В силу ряда причин иногда возникает необходимость быстро получить достаточный объем с Yandex диска, но обычный метод, через браузер, ограничен двумя гигабайтами в zip-архиве (это системное ограничение размера архива).

Яндекс в таких случаях предлагает ставить официальный клиент (~300 Мб), он прописывается в системе, и лично мне доставляет неудобства.

Решение достаточно быстро найдено, оно на поверхности, это бесплатная утилита командной строки Rclone (https://rclone.org/). 

Основное предназначение этой программы - работа с облаками, не только Yandex.

Я опишу быстрое описание установки и некоторые особенности.

Скачиваем, копируем программу в любую папку (например, D:\temp\rclone\)

Запускаем командную строку Пуск - выполнить - cmd.exe

Переходим в папку, пишем cd D:\temp\rclone\

Запускаем настройку подключения к Yandex disk, пишем rclone.exe config - происходит запуск мастера, надо отвечать на вопросы:

No remotes found, make a new one?
n) New remote
s) Set configuration password
n/s> n

Тут спрашивает создание нового подключения к облаку, пишем n - новое подключение:

Type of storage to configure.
Choose a number from below, or type in your own value

Тут предлагает типы облаков, прямо пишем следующее, со всеми знаками / Yandex Disk

Далее два вопроса, просто нажимаем два раза Enter, пишем Y и откроется страница в браузере, где надо будет пройти аутентификацию.

Storage> yandex
Yandex Client Id - leave blank normally.
client_id>
Yandex Client Secret - leave blank normally.
client_secret>
Remote config
Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.

Настройка закончена, выходим, пишем Q, опять попадаем в командную строку, но уже с настроенным доступом.

Далее можно проверить доступ:

Пишем rclone.exe ls yandex:

Если все нормально покажет файлы на Яндексе.

Далее копируем конкретную папку себе на компьютер:

rclone.exe copy yandex:"Загрузки/1 школа" /temp/yandex/

Обратите внимание на кавычки, то, что слэш в папке обратный /, а не как обычно в windows прямой \, и то, что можно смело писать название папок на русском языке.

В процессе выполнения этой команды ничего не происходит, но файлы достаточно резво копируются на этот же диск, в папку D:\temp\yandex\

Если надо видеть прогресс копирования, то пишите rclone.exe copy -P yandex:"Загрузки/1 школа" /temp/yandex/

За остальными командами программы в https://rclone.org/commands/