Изменение значения атрибута слоя CSV с текста на номер в QGIS?

28

Я прочитал в файле CSV для ссылки на файл .shp.

Все переменные, которые являются просто числами, пришли как текст.

Как изменить текстовые переменные на числовые в QGIS?

HealthMaps
источник

Ответы:

37

У меня когда-то был тот же вопрос. Ответ в том, что вы помещаете файл в ту же папку с окончанием csvt. Например, ваше имя файла xyzdata.csv вы добавляете файл xyzdata.csvt

Этот вы можете редактировать с редактором, например. И в нем вы устанавливаете тип данных следующим образом. "Integer", "String", "Integer", "Integer", "String", "Реал"

Целое число теперь является переменной для первого столбца, строка для второго и т. Д. Убедитесь, что файлы имеют одинаковые имена.

Редактировать: смотрите здесь, если необходимо: http://underdark.wordpress.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/

Shepherdjo
источник
Спасибо большое1, правда ли, что все CSV-файлы будут читаться как текст? Может быть, я себе это представлял, но когда я недавно начал работать с QGIS, я связал файл CSV, и числа были числами. Похоже, эта информация должна быть в руководстве пользователя. (возможно я пропустил это)
HealthMaps
Да, это было довольно странно для меня тоже. Но если у вас всего несколько столбцов, этот метод легко выполнить. Так ... это действительно сработало для вас?
Shepherdjo
Да, работает отлично! Следите за настройкой файла CSVT в Excel; застряли лишние кавычки и т. д. Я использую SAS или R для создания файлов, которые я хочу связать, поэтому не составит труда создать файл CSVT вместе с файлом CSV. Кажется, это нужно исправить. Другая ГИС, которую я использую, видит числа в столбце CSV, она считывает их как числа.
HealthMaps
Я нашел плагин MMQGIS, который изменит текст столбца с плавающего или с плавающего текста. Работает только для файла формы, но не для связанного файла или импортированного файла CSV. См michaelminn.com/linux/mmqgis
HealthMaps
Рад это слышать. И спасибо за подсказку плагина. Буду также признателен, если вы примете мой ответ, хорошо?
Shepherdjo
15

Вместо того, чтобы возиться с входным файлом, пытаясь получить идеальное изображение, просто используйте калькулятор поля, чтобы преобразовать текст в число / вещественное число. Смотрите примеры ниже:

Полевой калькулятор

Калькулятор поля на номер

Полевой калькулятор к реальному

Таблица атрибутов после функции

nagytech
источник
Когда я принес CSV-файл, я не смог его отредактировать. Кнопка редактирования была серой. Как я могу получить его для редактирования?
HealthMaps
Я не уверен, что вы можете редактировать CSV через QGIS. Я думаю, что я неправильно понял ваш вопрос в том, что вы уже импортировали данные CSV в шейп-файл .
nagytech
2
Я сделал ссылку .shp на CSV-файл, который имел числовые столбцы, но был действительно текстовым. Очевидно, что никто не может редактировать файл CSV сам по себе или если он связан с файлом SHP. Итак, я сохранил связанный файл, а затем перезагрузил его и смог отредактировать файлы с текстовыми номерами в целочисленный формат, как вы предложили. Кажется, использование файла .csvt работает лучше всего, если у вас много текстовых столбцов, которые необходимо преобразовать, а затем используйте метод калькулятора полей, если их не так много. Было бы полезно иметь возможность редактировать файл CSV самостоятельно, ни с чем не связываясь.
HealthMaps
11

Вместо загрузки .csv с помощью добавления векторного слоя используйте инструмент «Слой с разделителями». Он попытается определить наиболее подходящий тип данных для каждого столбца.

Для получения дополнительной информации см. Руководство пользователя QGIS .

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

Подземье
источник
Insta-фикс! Спасибо
user94812
5

MMQG вызвал эту проблему, и, как оказалось, он может исправить это.

После того, как вы присоединились к своим Shapefile и CSV Data, используйте инструмент MMQGis Modify> Text to Float.

Как обычно, это оставляет след ненужных промежуточных шейп-файлов, но что еще нового

boulder_ruby
источник
1

В QGIS 3.x распространенным источником ошибок является выбор неправильного десятичного разделителя. Установите или снимите флажок «Десятичный разделитель - запятая» перед загрузкой CSV в QGIS:

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

MrXsquared
источник
-2

Еще одна альтернатива в случае управления большими наборами данных и, очевидно, отнимает много времени, чтобы продолжить работу с калькулятором поля (без зацикливания) или в текстовом редакторе: - сохранить ваши данные как переменную CSV + XY + для соединения с нашим шейп-файлом полугона - загрузить ваш CSV с плагином (импорт CSV) затем сохраните как шейп-файл (точка) - затем закройте q gis - вернитесь в папку с точкой шейп-файла, продублируйте соответствующую таблицу dbf / переименуйте - откройте Qgis - загрузите новый dbf и присоединитесь к шейп-файл (полигональные особенности)

Один камень, два голубя: у вас есть потенциальная возможность: 1) точка шейп-файла со всеми данными и всей возможностью представления 2) и независимый шейп-файл с объединенной таблицей dbf (редактируемой!), Связанной с полигоном для тематической картографии

Это немного грубо, но довольно просто ...

bs_epidemio

bsepidemio
источник
3
Хотя в этом ответе обсуждается, как получить .csvфайл в редактируемом формате, в нем не рассматривается первоначальный вопрос о том, как преобразовать значение атрибута из текста в число . Хотя важно иметь качественные, сфокусированные вопросы, не менее важно, чтобы ответы на эти вопросы были как можно более сфокусированными и относились к тому, что было задано изначально.
Получите Пространство