Как узнать причину различия атрибутивных таблиц для операции Merge?
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Как узнать причину различия атрибутивных таблиц для операции Merge?
В QGIS есть опция - Data Management tools – Merge.
Она склеивает темы в одну тему. При этом ей требуется точная идентичность атрибутов темы.
Я склеиваю большое число слоев. Конечно перед этим вычищаю их максимально, проверяя по многу раз что их атрибуты идентичны. Какие- то она склеивает, а какие-то, хоть они в упор одинаковые - не берет! Как узнать что ему не нравится?? Вот в примере 2 таких - совершенно (на мой взгляд) одинаковые атрибуты двух слоев.
Может там 1 буква не такая в названии или еще что-то? Есть ли способ быстро выявить эти различия для множества тем? Или есть ли ему более удобная альтернатива для склеивания?
Она склеивает темы в одну тему. При этом ей требуется точная идентичность атрибутов темы.
Я склеиваю большое число слоев. Конечно перед этим вычищаю их максимально, проверяя по многу раз что их атрибуты идентичны. Какие- то она склеивает, а какие-то, хоть они в упор одинаковые - не берет! Как узнать что ему не нравится?? Вот в примере 2 таких - совершенно (на мой взгляд) одинаковые атрибуты двух слоев.
Может там 1 буква не такая в названии или еще что-то? Есть ли способ быстро выявить эти различия для множества тем? Или есть ли ему более удобная альтернатива для склеивания?
- Вложения
-
- example2themes.zip
- (4.04 МБ) 193 скачивания
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Для начала полезно посмотреть в лог QGIS, как советуют в тексте ошибки.
В логе видим:
Вывод: переводим геометрию в 2D, и сшивка получается.
В логе видим:
Ругань в сторону "GEOM_TYPE_MAP" должна насторожить. Смотрим в свойства шейпов, а там "Polygon (WKB type: "PolygonZ")".2017-10-24T16:20:37 2 Uncaught error while executing algorithm
Traceback (most recent call last):
File "/usr/share/qgis/python/plugins/processing/core/GeoAlgorithm.py", line 203, in execute
self.processAlgorithm(progress)
File "/usr/share/qgis/python/plugins/processing/algs/qgis/Merge.py", line 92, in processAlgorithm
layers[0].crs())
File "/usr/share/qgis/python/plugins/processing/core/outputs.py", line 326, in getVectorWriter
crs, options)
File "/usr/share/qgis/python/plugins/processing/tools/vector.py", line 598, in __init__
uri = GEOM_TYPE_MAP[geometryType] + "?uuid=" + unicode(uuid.uuid4())
KeyError: -2147483645
Вывод: переводим геометрию в 2D, и сшивка получается.
Редактор материалов, модератор форума
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
А как вы переводите в 2d геометрию? Я пробую пересохранить слой, убирая галочку на Geometry type - Include Z-dimensions.
В другом случае (для работы плагина) это помогало. Но в этом - нет. У меня после пересохранения эти 2 слоя не склеиваются.
В приложении - мое пересохранение этих слоев.
- Вложения
-
- exam2.zip
- (4.04 МБ) 232 скачивания
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Я прогоняю шейпы через модуль GRASS <v.buffer.distance> (через Processing) с нулевым значением буфера. Это один из вариантов. Кстати, эта операция вообще часто полезна при работе с топологически "грязными" данными.
Редактор материалов, модератор форума
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
А через QGIS это никак не сделать?Александр Мурый писал(а): ↑24 окт 2017, 16:48Я прогоняю шейпы через модуль GRASS <v.buffer.distance> (через Processing) с нулевым значением буфера. Это один из вариантов. Кстати, эта операция вообще часто полезна при работе с топологически "грязными" данными.
Не умею я пока ..как вы сказали. GRASS пока не пользуюсь. А данных таких у меня много. Точнее сейчас не так много (на 21 мб)
Не в первый раз, точно, проблемы из-за этой "грязной" геометрии возникают. Может быть, есть способы почистить ее в QGIS?
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Меню "Processing" ("Анализ данных" в русскоязычном варианте) - это как раз про QGIS. Надеюсь, вы пользуетесь этим творением коллективного гения))
Редактор материалов, модератор форума
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
В QGIS я иду в Processing (верхнее меню) > Comander (строка)>нахожу там Processing algorithm: grass7:v.buffer.distanceАлександр Мурый писал(а): ↑24 окт 2017, 16:48Я прогоняю шейпы через модуль GRASS <v.buffer.distance> (через Processing) с нулевым значением буфера. Это один из вариантов. Кстати, эта операция вообще часто полезна при работе с топологически "грязными" данными
Открывается окно. В нем:
Buffer distance in map units вписываю « 0»
Maximum distance between theoretical ar and polygon segments as multiple of buffer - оставляю по умолчанию 0.01
Остальные настройки не трогаю - по умолчанию.
При этом перегоняю 2 темы. Да, после этого они склеиваются в Merge.
Но они утеряли все свои атрибуты!! Так не годится в моем случае. А есть ли способ, чтобы он очищал геометрию, но не удалял атрибутивную таблицу?
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Помимо этого, он еще и склеил как-то каждую тему внутри (где у меня объекты были разделены смежной линией - он их склеил в один).. То есть не просто очистил, и видоизменил геометрию.. Или я не те настройки использую, или этот метод не подходит в моем случае.
Хм... может быть, вернуться к тому, почему когда я просто пересохраняю слой без 3d , почему ему этого не достаточно для того, чтобы склеить слои?
Хм... может быть, вернуться к тому, почему когда я просто пересохраняю слой без 3d , почему ему этого не достаточно для того, чтобы склеить слои?
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Нашла плагин MMQGIS.
А вот он взял все и склеил.... причем (т.к. для пробы делала ) в одном поле одного слоя были целые значения (7, 9) а в этом же поле другого слоя значения со знаком после запятой (7.17 9.12) - так и склеил. И плевать он хотел на грязную геометрию..
не знаю...надеюсь, с данными все нормально.
А вот он взял все и склеил.... причем (т.к. для пробы делала ) в одном поле одного слоя были целые значения (7, 9) а в этом же поле другого слоя значения со знаком после запятой (7.17 9.12) - так и склеил. И плевать он хотел на грязную геометрию..
не знаю...надеюсь, с данными все нормально.
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Вообще, хорошо понимать, что делает машина и что происходит с данными. Вот почему плагин MMQGIS склеил без проблем все слои (ед. условие, чтобы поля назывались одинаково). И опция Merge запнулась на чем-то , причину чего даже выявить было нельзя? Я так и не поняла, в чем там дело. Поскольку пересохранение без 3d не помогло. А очистка геометрии - тоже не выход (или я не так делала, но удалять атрибуты и сращивать объекты уж точно нельзя).Александр Мурый писал(а): ↑24 окт 2017, 16:48Я прогоняю шейпы через модуль GRASS <v.buffer.distance> (через Processing) с нулевым значением буфера. Это один из вариантов. Кстати, эта операция вообще часто полезна при работе с топологически "грязными" данными.
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Золотые слова. Вот потому и нужно изучать технологию, а не просить пошаговые инструкции, которые дают ноль к пониманию.Natalia Novoselova писал(а): ↑24 окт 2017, 19:16Вообще, хорошо понимать, что делает машина и что происходит с данными.
Я вот не пользуюсь GRASS, но первый же беглый взгляд на документацию к v.buffer говорит мне, что там есть опция переноса атрибутов на создаваемую геометрию. А понимание алгоритма построения буфера подсказывает, что чтобы для соприкасающихся полигонов не создавался общий буфер, нужно создавать буфер внутри, а не снаружи.
-
- Гуру
- Сообщения: 5286
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
это можно решить используя только SQL
- Natalia Novoselova
- Гуру
- Сообщения: 3020
- Зарегистрирован: 15 янв 2013, 20:14
- Репутация: 69
- Ваше звание: Лиса
- Откуда: **
- Контактная информация:
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как узнать причину различия атрибутивных таблиц для операции Merge?
Каюсь, с ходу не заметил такого непристойного поведения модуля. Поспешил с советом. Для чистки геометрии в вашем случае модуль вообще не подходит, т.к. объединяет смежные полигоны.Natalia Novoselova писал(а): ↑24 окт 2017, 18:02Но они утеряли все свои атрибуты!! Так не годится в моем случае. А есть ли способ, чтобы он очищал геометрию, но не удалял атрибутивную таблицу?
Да, однако кугисовская версия оказалась урезанной, там нет такого параметра.
Оказалось, проще всего сделать 2D-геометрию простым конвертированием с добавлением параметра "dim":
Код: Выделить всё
ogr2ogr -f "ESRI Shapefile" BH_fragm_2d.shp BH_fragm.shp -dim 2
- Вложения
-
- Convert format_035.png (91.53 КБ) 5657 просмотров
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей