Координаты углов клеток в очень большом растре

Вопросы по статистическому пакету R. Не обязательно гео.
Ответить
Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

Координаты углов клеток в очень большом растре

Сообщение Odd-Bird » 20 авг 2015, 22:27

Доброй ночи всем! Я пытаюсь решить очень сложную задачу, а именно - извлечь координаты углов клеток в растре GeoTiff. Проблема, собственно, состоит только в том, что растр этот очень большой; конечно, его можно разбить на части, преобразовать их в полигоны функцией rasterToPolygon(){raster} и извлечь из них координаты, но это займет чрезвычайно много времени.

Если кто-нибудь сталкивался с такой задачей - посоветуйте, пожалуйста: стоит ли пытаться решить ее в R или лучше воспользоваться другими программами, и какими именно?..
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Координаты углов клеток в очень большом растре

Сообщение Максим Дубинин » 20 авг 2015, 22:36

Ваша очень сложная задача не выглядит как очень сложная

Если вам нужны координаты углов пикселей, то почему бы вам просто их не нагенерировать циклом, зная координаты верхнего левого угла и разрешение. Это можно сделать абсолютно где угодно, хоть в cmd.

Ну и непонятно в каком виде нужен результат.
пристегивайтесь, турбулентность прямо по курсу

Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

Re: Координаты углов клеток в очень большом растре

Сообщение Odd-Bird » 20 авг 2015, 23:09

Максим Дубинин писал(а): Если вам нужны координаты углов пикселей, то почему бы вам просто их не нагенерировать циклом, зная координаты верхнего левого угла и разрешение. Это можно сделать абсолютно где угодно, хоть в cmd.

Ну и непонятно в каком виде нужен результат.
Я построил простейший цикл, он обсчитывает координаты со скоростью пикселя в секунду; 8 миллиардов пикселей (300-метровая карта мира) будут обсчитываться примерно 130 лет :roll: .

А нужно все в виде простейшей таблицы (четыре строки с координатами углов на пиксель плюс колонки с номером пикселя и значением соответствующей ячейки растра).
Последний раз редактировалось Odd-Bird 20 авг 2015, 23:11, всего редактировалось 1 раз.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<

Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

Re: Координаты углов клеток в очень большом растре

Сообщение Odd-Bird » 20 авг 2015, 23:11

Максим Дубинин писал(а):Ваша очень сложная задача не выглядит как очень сложная

Если вам нужны координаты углов пикселей, то почему бы вам просто их не нагенерировать циклом, зная координаты верхнего левого угла и разрешение. Это можно сделать абсолютно где угодно, хоть в cmd.

Ну и непонятно в каком виде нужен результат.
Да, проблема еще в том, что пиксели на сфере не идеально квадратные, и их размер варьирует в разных широтах.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Координаты углов клеток в очень большом растре

Сообщение Александр Мурый » 20 авг 2015, 23:27

Распишите подробнее, что за растр, какая система координат, какие именно "углы клеток" надо найти?
Редактор материалов, модератор форума

sergsh
Активный участник
Сообщения: 205
Зарегистрирован: 20 фев 2013, 21:48
Репутация: 30

Re: Координаты углов клеток в очень большом растре

Сообщение sergsh » 20 авг 2015, 23:42

8 миллиардов пикселей будут иметь 32 миллиарда координат углов ...

а может проще все же вычислять каждый раз 4 координаты для нужного пикселя, и не хранить их все ?

Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

Re: Координаты углов клеток в очень большом растре

Сообщение Odd-Bird » 20 авг 2015, 23:47

Растр Land Cover Maps отсюда: http://maps.elie.ucl.ac.be/CCI/viewer/download.php (GeoTiff ~4 Гб)

Система координат longlat, эллипсоид wgs84.

Мне нужно, чтобы значения из этого растра можно было бы извлекать средствами базы данных. Для этого нужно преобразовать его в таблицу с координатами углов ячеек или центроидов. Как это сделать на небольшом растре - я знаю, проблема только с повышением эффективности в случае большого файла.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<

Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

Re: Координаты углов клеток в очень большом растре

Сообщение Odd-Bird » 20 авг 2015, 23:48

sergsh писал(а):а может проще все же вычислять каждый раз 4 координаты для нужного пикселя, и не хранить их все ?
Пиксели неравного размера, вычислять их координаты не получится - только считывать.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<

Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

Re: Координаты углов клеток в очень большом растре

Сообщение Odd-Bird » 20 авг 2015, 23:53

В общем, я решил ограничиться координатами центров пикселей.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<

sergsh
Активный участник
Сообщения: 205
Зарегистрирован: 20 фев 2013, 21:48
Репутация: 30

Re: Координаты углов клеток в очень большом растре

Сообщение sergsh » 21 авг 2015, 10:46

Odd-Bird писал(а):Растр Land Cover Maps отсюда: http://maps.elie.ucl.ac.be/CCI/viewer/download.php (GeoTiff ~4 Гб)

Система координат longlat, эллипсоид wgs84.
Спасибо за ссылку, интересные данные.

gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Координаты углов клеток в очень большом растре

Сообщение gamm » 21 авг 2015, 11:26

Odd-Bird писал(а):Проблема, собственно, состоит только в том, что растр этот очень большой;
проблема собственно в том, что никакие координаты ячеек вам хранить не нужно, поскольку растр и придуман для того, чтобы хранить только два 2-3 угла, и шаг сетки, а все остальное вычислять 4 действиями арифметики вместо SQL запросов. Если растр у вас в lon/lat, то достаточно просто перевести координаты в lon/lat, и вычислить номер ячейки/ячеек, куда они попадают. Т.е. от всей сетки вам нужно хранить 8 чисел, независимо от размера растра ... ну, может еще строку проекции. Пересечения ячеек с полигонами тоже быстро вычисляются без запросов (заметанием), с линиями - та же картина.

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей