Проецировать атрибут из одного слоя многоугольника в другой в QGIS?

16

У меня есть 2 многоугольных слоя, которые можно найти здесь . Два слоя перекрываются. Первый содержит карту графств Германии в 1928 году, а второй округа, как они в 2014 году.

Слой 2014 содержит информацию о населении (в наборе данных это называется Bev). Можно ли проецировать атрибут населения из одного слоя многоугольника в другой?

Чтобы быть более конкретным:

Рассмотрим ситуацию, когда у меня есть 2 округа в слое с атрибутом населения, но в той же области на другом слое есть только 1 округ. Может ли QGIS объединить население двух округов и записать эту информацию в другой слой?

Если это работает, есть ли способ сделать это, когда слой с информацией имеет в определенной области только 1 графство, но в другом слое есть 2 графства? В этом случае я хотел бы разделить население пропорционально размеру округа.

Alex
источник
Этот ответ поможет вам начать общий рабочий процесс: gis.stackexchange.com/a/136820/10919
Том
Я думаю, что упомянутая выше ссылка является хорошей отправной точкой, но (!) она подразумевает, что популяция равномерно распределена в затронутых полигонах. что не факт
Роберт Ту
2
... извините, пропустил 5 минут. продолжение следует: и если вы сравните оба этих файла формы, вы обнаружите существенную разницу в уровне детализации, что приведет к множеству изрезанных многоугольников ... взгляните на [link] ( dropbox.com/sh/7w97kjey33k7jdi/ AAARDwyyMryOBwjtY6IrFsh9a? Dl = 0 ). если бы у вас была какая-либо информация о
населенных пунктах
... например, данные о земном покрове свободной коры могут помочь определить в настоящее время установленную площадь и, таким образом, улучшить результаты распределения населения по районам.
Роберт Ту

Ответы:

8

Отказ от ответственности:

  1. Я полагаю, что в этом конкретном случае было бы гораздо точнее использовать данные о населении за 2014 год в качестве точечного слоя с максимально возможной детализацией (центр тяжести пригородов, городов, деревень ...)

  2. Если BEV_ действительно популяция, то есть некоторые действительно странные значения, такие как GEN = Uelzen, BEV_ = 92553, где этот многоугольник сравнивается с областью спутникового изображения Google размером с грязь максимально нескольких футбольных полей.

Если вы действительно хотите получить числовые значения, основанные на соотношении площадей полигонов, перекрывающихся между слоями (L1 = countties_2014, L2 = German empire 1928):

  1. Перед любыми расчетами я предлагаю использовать проекционные системы координат в единицах метра, соответственно, в квадратных метрах для площади. В этом случае я использовал EPSG: 3857
  2. В L1 используйте Field Calculator , создайте столбец « Area » и заполните $ area
  3. Пересечь слои - Вектор / Инструменты геообработки / Пересечь ... - Input = L1, Intersect = L2
  4. В слое Intersected используйте Field Calculator , создайте столбец для населения, скорректированного с помощью новой области « PopArea », и заполните «Population» * $ area / «Area»
  5. Растворите Пересеченный слой с помощью Инструмента обработки - найдите Растворяющие полигоны
    • выберите столбец уникальных значений многоугольника, такой как «Имя» из L2
    • проверьте Compute min / max / sum ... и вычислите его в « PopArea »
    • в последнем слое будет столбец sum_diss, который вам нужен (в данном конкретном случае скорректированная численность населения для 1928 округов с 2014 года)

Если вы все сделали хорошо, вы должны получить около 77 миллионов человек, распределенных по районам L2 из 81 миллиона в L1.

введите описание изображения здесь

Miro
источник
Спасибо за Ваш ответ. Что касается первых двух пунктов: я также пытался достичь того, что я хочу, с помощью центроидов. Это работало вполне нормально, но особенно для небольших полигонов сопоставление не работало очень хорошо. Я думаю, что данные о населении как-то перепутались. Но это только небольшая проблема, которую я могу решить сам.
Алекс
@ Алекс Я считаю, что использование точек или центроидов в этом случае с моей точки зрения слишком далеко от решения, которое я бы назвал достаточным из-за очень случайного совпадения. Таким образом вы потеряете слишком много данных.
Миро
9

Если я правильно понимаю ваш вопрос, это может решить ваш первый вопрос. Я провел быструю проверку, и, похоже, следующий метод работает, но стоит проверить, верен ли он.

  1. создать случайные точки в слое 1928 года (центроиды могут работать лучше. Вам придется проверить);
  2. пересекают слой точек со слоем 2014 (слой точек должен быть входным слоем);
  3. Присоединяйте атрибуты по местоположению. Целевой слой - это слой 2014 года, а слой точек - это слой соединения. Используйте в качестве геометрического предиката. Оставьте сводку атрибута по умолчанию (первая найденная функция). Сохраните все записи в раскрывающемся списке «Присоединиться к таблице».

Проверьте правильность выходного слоя.

Если возможно, запустите его с помощью панели инструментов обработки в qgis (не нужно сохранять каждый слой, а вместо этого сохраняйте его как временный слой).

Не совсем уверен, что ваш второй вопрос влечет за собой. не могли бы вы уточнить?

PyMapr
источник