Це можна зробити за допомогою Python, але це знадобиться певний час, щоб виписати це.
Я думаю, що найшвидший спосіб реалізувати його без Python - це мати шаблон SHP-файлу цих паралельних рядків. У вас є кілька, якщо вам потрібна різна ширина, і просто використовуйте відповідну для цього Полігона. Зробіть так, щоб лінії шаблону охоплювали достатню площу для покриття найбільшого багатокутника, з яким ви зіткнетеся.
- Під час редагування переміщуйте лінії по полігону.
- Використовуйте інструмент "Поворот", перемістіть точку прив’язки до місця, де паралельна лінія та край Полігону збігаються, і обертайте лінії так, щоб вони притискалися до краю Полігону, на якому ви його вишикували.
- Перетворіть багатокутник у полілінію
- Буфер полілінієва незалежно від відстані, яку ви хочете, щоб паралельні лінії були від краю полігону.
- Використовуйте інструмент "Стерти", щоб стерти полілінії, які охоплені буферизованим полігоном
- Виберіть за місцем розташування всі лінії, які не знаходяться всередині полігону, та видаліть їх. Або я думаю, що інструмент "Кліп" теж працював.
- Виділіть за атрибутом всі рядки, менші за певну довжину (занадто короткі, щоб зберегти, хоча, можливо, спочатку потрібно буде додати поле та обчислити геометрію), і більше певної довжини (занадто довго, щоб зберегти, якщо це те, що ви хочете ), видаліть їх.
- Промийте і повторіть ...
Етапи від 3 до 7 можна моделювати без необхідності писати будь-який код.
Приблизно той самий процес може бути використаний для кодування процесу, але замість того, щоб мати лінії шаблону, ви могли б мати код малювати лінії під прямим кутом, відстань один від одного і т. Д. Я цього не робив деякий час, але я думаю, що Бібліотека Python як струнко допомогла б. Просто переконайтеся, що він охоплює більшу площу, ніж Полігон, і використовуйте інструменти для автоматичного перетворення на полілінію, буфер, стирання, виберіть лінії, які не знаходяться всередині полігону, та видаліть їх.