Обновить ответ (версия QGIS> = 2.14)
Начиная с QGIS 2.14 , вы можете использовать операторы запуска SQL на любом загруженном векторном слое, используя виртуальные слои .
- Загрузив слой в QGIS, перейдите в Layer> Add Layer> Add / Edit Virtual Layer ;
В диалоговом окне «Создать виртуальный слой» введите оператор SQL в поле «Запрос». Что-то вроде:
ВЫБЕРИТЕ DISTINCT название города ОТ имени слоя
Для геометрии установите No Geometry
- Нажмите Ok, и таблица загрузится в QGIS с желаемыми уникальными значениями.
Примечание: эта таблица будет обновлена, если новые значения будут добавлены в столбец city_name.
Устаревший ответ (версия QGIS <2.14)
У вас есть несколько вариантов сделать то, что вы просите.
- Импортируйте свой шейп-файл в базу данных Spatialite или Postgis, и затем вы сможете запросить таблицу, используя полные операторы SQL;
- Используйте инструмент «Растворение» («Вектор»> «Инструменты геообработки»> «Растворение»), чтобы растворить ваши шейп-файлы, используя поле «имя-города». Хотя это странный метод, файл dbf результирующего шейп-файла предоставит вам необходимый список;
- Взгляните на плагин групповой статистики (1.6) , вы можете использовать «city_name» в качестве поля классификации и нажать «Рассчитать». Он рассчитает некоторые статистические данные о каждом городе, затем вы можете скопировать результат и извлечь список городов.
Я только что заметил, что в Vector> Analysis Tools есть инструмент List уникальных значений , который именно то, что нужно для этой задачи. Так просто ... нет обходных путей и не нужны плагины.