Відображення згенерованих рядків за межами карти за допомогою QGIS?


12

Я намалював карту потоку OD за допомогою генератора геометрії QGIS, використовуючи таке вираження:

make_line( centroid( $geometry ),
centroid( geometry( get_feature( 'Layer2', 'Attribute1', attribute(
           $currentfeature, 'Attribute2') ) ) ) )

У мене все добре, визначаючи ширину ліній відповідно до атрибутів.

Але коли я збільшую масштаб "хабу", лінії, пов'язані з місцями поза полотном карти, не відображаються. Я думаю, це тому, що функції не повинні з’являтися на карті.

Я спробував зняти прапорець "Розділити функції для розміру полотна" в розширеному меню, як в "Генераторі геометрії", так і в рівнях "Лінія", але він все ще не відображається.

При збільшенні масштабу на маточині

При невмілому стані

Я хотів би, щоб усі мої лінії з'являлися, навіть коли масштабували концентратор.


Це не буде корисним ... але я отримую те саме питання з підходом до планування потоку Underdark. Це повинно бути щось про те, як надається щільна геометрія ... Єдина пропозиція - грати з атрибутом шириною для локальної карти рівня ... зробити ширину меншою?
Ендрю Тіс

Можливо, ви можете завантажити свої дані (shp ...), щоб мати можливість повторити свої кроки та спробувати отримати відповідь.
César Arquero

1
Shapefile походить звідси: IGN та приєднана таблиця від INSEE
mamouthautapis

Можливо, сегментація лінії може стати хаком, щоб вона з’явилася на карті, якщо лише рядки показують ib, обидва кінці близькі до масштабу карти. Трав'яний інструмент 'v.split.length', можливо, справляється із цією справою.
Джуліан

1
Це та сама проблема, як у мене (якщо це дає простий спосіб зрозуміти цю проблему - якщо ні, ігноруйте мене): я хотів показати точний набір даних із усім набором згенерованих точок, зміщених на 300 км на схід і 600 км північ порівняно з фактичними точками. Це працює - але лише при зменшенні масштабу, щоб початкові точки знаходилися в межах картини. Щойно ви збільшуєте набір створених точок (переміщуючи фактичні місця точок за межами полотна), створені точки зникають. (QGIS 2.14)
Ространмін

Відповіді:


2

Проблема тут полягає в тому, що фактичних даних немає: "Тут є рядок". Вираз є частиною стильового шару, і він зустрічається лише в процесі візуалізації, коли також надаються дві застосовні точки.

Спробуйте скористатися інструментом " Відстань до найближчого концентратора" , який знаходиться в панелі інструментів для обробки в розділі Інструменти векторного аналізу. Зауважу, що ви вибираєте конкретні багатокутники для своїх спиць і стилізуєте лінії відповідно до інших атрибутів. Це можливо, але вам потрібно зробити кілька речей, щоб підготуватися до цього. На щастя, інструмент автоматично використовує центроїди при виборі полігонових входів.

  1. Інструменти для вибору вектора > Витяг за атрибутом
    • Вхідний шар: "LAYER_1"
    • Атрибут вибору: "ATTRIBUTE_1"
    • Оператор: =
    • Значення: 'значення, що відноситься до полігону концентратора'
    • Витяг (атрибут): 'HUB'

  2. Інструменти для вибору вектора > Витяг за атрибутом
    • Вхідний шар: "LAYER_1"
    • Атрибут вибору: "ATTRIBUTE_2"
    • Оператор: вибирається за потребою
    • Значення: 'значення (значення), що стосуються спікунних багатокутників'
    • Витягнутий (атрибут): 'SPOKES'

  3. Інструменти векторного аналізу > Відстань до найближчого центру
    • Шар вихідних точок: "SPOKES"
    • Рівень призначення центрів: "HUB"
    • Атрибут імені шару концентратора: створює поле "Ім'я концентратора" у висновку на основі вибраного атрибута, якщо у вхідному шарі вказано кілька концентраторів
    • Тип форми виводу: Рядок до концентратора
    • Одиниця вимірювання: Метри
    • Відстань концентратора: "OUTPUT_LAYER_NAME"

Отриманий результат зберігає всі атрибути введення рівня "SPOKES", тому атрибути, необхідні для стилізації рядків, все ще будуть присутніми. Як власний векторний шар, лінії залишатимуться видимими на всіх рівнях збільшення, незалежно від видимості будь-якої кінцевої точки.

Якщо вам комфортно з графічним моделером, ви можете навіть побудувати ці кроки в єдиний процес, щоб не захаращувати робочу область зайвими шарами.


3

Виявив таку обхід: Використовуйте додатковий віртуальний шар замість генератора геометрії для відображення ліній.

Визначення віртуального шару:

select m.FID, make_line(.....) as geometry from my_layer m

(на оригінальну геометрію можна посилатися m.geometry)

Щоб переконатися, що віртуальний шар оновлюється під час редагування my_layer, перейдіть до властивостей шару | залежності та переконайтесь, що мій_шаєць встановлений (що за замовчуванням є сірим).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.