Страница 1 из 1
Растр из текстовой матрицы
Добавлено: 18 окт 2011, 08:57
bolotoved
Можно ли в QGIS или напрямую в GDAL преобразовать матрицу с разделителями пробелами в tif? Может ее нужно перед импортом как-то специальным образом подготовить?
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 09:30
Александр Мурый
txt --> CSV --> VRT --> gdal_rasterize
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 11:37
bolotoved
Что-то застрял на стадии CSV --> VRT
В приложении собственно матрица, разделители -- запятые. 360*180.
Прописал команду:
Код: Выделить всё
gdal_rasterize -ts 360 180 matrix.csv matrix.vrt
Спрашивает про параметры -l, -a, как их правильно указать?
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 13:19
Александр Мурый
gdal_rasterize делает
tif уже из готового
vrt. Готовить VRT надо по
этому рецепту.
Матрица довольно ужасная. Хотя нет, не матрица, а то, что это CSV.
Для перевода в VRT текст нужен в несколько полей, желательно XYZ, где Z -- значение, по к-й будем делать растр, а XY -- координаты точек.
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 14:44
bolotoved
Да уж

Полагаю, что должен быть какой-то иной способ преобразования матрицы m*n в растр, пусть и без привязки.
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 15:12
Voltron
Такой способ есть. Матрицу загоняем в массив NumPy, потом это безобразие сохраняется как канал растра. Все
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 15:23
Максим Дубинин
или превратить матрицу в ASCII растр убрав все переводы строки и добавив минимальный заголовок
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 15:42
bolotoved
Максим Дубинин писал(а):или превратить матрицу в ASCII растр убрав все переводы строки и добавив минимальный заголовок
Подытожим.
Чтобы преобразовать матрицу m*n в растр нужно:
1. Представить ее в виде массива где в качестве разделителя используется пробел.
2. Прописать заголовок файла в формате Arc/Info ASCII Grid, который понимает GDAL через драйвер AAIGrid. Для матрицы 360*180, (представляющий массив с разрешением 1 градус на весь мир) он будет выглядеть так:
Код: Выделить всё
ncols 360
nrows 180
xllcorner -180.000000000000
yllcorner -90.000000000000
cellsize 1.000000000000
nodata_value 0
Где:
ncols -- количество колонок матрицы
nrows -- количество строк матрицы
xllcorner -- координаты западной границы участка
yllcorner -- координаты южной границы участка
cellsize -- разрешение растра (в градусах?)
nodata_value -- значение "нет данных".
Примечание: координаты могут указываться в десятичных градусах или в формате DD:MM:SS
3. Поменять расширение текстового файла на asc.
4. Полученный файл можно открыть в QGIS и экспортировать в любой другой растровый формат.
Re: Растр из тектовой матрицы
Добавлено: 18 окт 2011, 19:18
ericsson
То есть, говоря русским языком, добавить заголовок в формате Arc/Info ASCII Grid, который понимает GDAL через драйвер AAIGrid. Там еще всякие параметры имеются.
Re: Растр из текстовой матрицы
Добавлено: 19 окт 2011, 08:18
bolotoved
Спасибо, поправил.
Re: Растр из текстовой матрицы
Добавлено: 19 окт 2011, 09:13
ericsson
Есть "подводный камень".
Те параметры xllcorner, yllcorner, которые предложены, указывают на соответствующие края растра, если природа данных такова, что отсчеты находятся в центрах ячеек, и известны именно их координаты, то использовать надо параметры xllcenter, yllcenter