Страница 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