Я знаю, мой вопрос похож на некоторые старые на этом сайте.
У меня много CSV-файлов (географических координат) для импорта в qgis (а затем для их преобразования), и обычный способ не самый лучший способ сделать это (слишком долго).
У меня есть почти 500 файлов CSV (координаты wgs84), и это то, что я хочу сделать:
- Импортируйте все файлы CSV одновременно в QGIS
- Проецируйте их
- Экспортируйте их в файлы CSV (снова), но с другими координатами (преобразование в UTM33N)
Я пытаюсь понять, как использовать консоль Python, но я не двигаюсь дальше :(
Может кто-нибудь объяснить мне, как это сделать шаг за шагом?
Ответы:
Если вы хотите перепроектировать CSV-файлы из консоли Python в QGIS, вы можете использовать следующий скрипт. Все, что вам нужно изменить, это три пути, которые упоминаются в комментариях.
По сути, скрипт импортирует ваши CSV-файлы в QGIS как шейп-файлы (при условии, что ваши геометрические поля названы
X
иY
). Затем он используетqgis:reprojectlayer
иqgis:fieldcalculator
алгоритмы из Processing Toolbox для перепроецировать и обновленияX
иY
поля с новыми координатами. Затем он сохраняет их в папке и преобразует их в CSV-файлы по указанному вами пути. Итак, в конце вы обновили шейп-файлы и CSV-файлы в отдельных папках.Надеюсь это поможет!
источник
Быстрое решение для преобразования файла, разделенного пробелом, содержащего «lon lat» в WGS84, в UTM33N, но вы не получите никаких других данных:
Это работает, и это сохраняет порядок данных, так что, может быть, другой цикл, используя, например, awk, чтобы объединить описательные данные с координатами?
Редактировать. Из-за грязных комментариев, которые я сделал ниже, я вместо этого отредактирую ответ.
Следующий скрипт должен выполнять чтение нескольких файлов CSV, добавляя новые столбцы координат в каждый файл.
В OSX вам нужно будет установить последнюю версию sed (2009) и использовать первую некомментированную строку в цикле. Для Linux закомментируйте первое и используйте второе. Отрегулируйте в
-F " "
соответствии с форматом разделителя в ваших CSV-файлах, например, через-F ","
запятую. Также обратите внимание, что преобразование высот относится к эллипсоиду, а не к геоиду, поэтому обязательно измените высоту соответствующим образом.источник
paste -d',' ${i} <(awk -v OFS="," -F " " 'NR>1 {print $1 " " $2}' ${i} | gdaltransform -s_srs EPSG:4326 -t_srs EPSG:32633 | awk '{gsub(" ",",",$0); print $0}' | /usr/local/bin/sed "1i\X,Y,Z") > utm${i}
Замените / usr / local / sed на просто sed, если вы не используете OSX. Это не идеально, если ваши CSV-файлы разделены пробелом, как предполагает приведенная выше строка, но это работает. Если вы разделяете запятую, измените-F " "
на-F ","
Использование qgis или даже OGR для этого излишне.
Используйте
pyproj
( https://pypi.python.org/pypi/pyproj ) в сочетании с Python Csv Writer и несколько стандартных библиотечных приемов. Вам не нужно устанавливать ничего, кроме какpyproj
для этого!источник
pyproj
нужно ли устанавливать отдельно для плаката или уже есть.Вам не нужен питон. Просто используйте командную строку и ogr2ogr. В вашем случае наиболее важным является параметр -t_srs srs_def.
Это уже объясняется в этом ответе на вопрос Как я могу преобразовать файл Excel с столбцами x, y в шейп-файл?
ОБНОВЛЕНИЕ У меня нет времени, чтобы написать вам ваш полный код. Но проблема будет в том, что ему нужно немного больше кода на python, чем вы думаете.
Ваша главная проблема будет в том, что работать с CSV-файлами не так удобно, как с использованием шейп-файлов. Таким образом, вам сначала нужно будет преобразовать CSV в форму, для которой нужен файл VRT. Это объясняется в первой ссылке. Здесь вам нужно написать скрипт Python, который просматривает ваши файлы и автоматически генерирует файлы vrt.
Это сценарий, который я использовал сам. Вы должны проверить, работает ли это для вас. Я уже включил преобразование из WGS 84 в UTM 33N
Вам необходимо настроить параметры для поля Имя , src , x и y в соответствии с вашим CSV-файлом.
UPDATE2
Подумав немного, я спрашиваю себя, почему вы вообще хотите использовать QGIS? Вы можете использовать питон скрипт , как это напрямую конвертировать ваши координаты из WGS в UTM. В этом случае это просто открыть CSV, прочитать координаты, преобразовать координаты и сохранить его в новый файл.
источник