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

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

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

Сообщение Odd-Bird »

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

Если кто-нибудь сталкивался с такой задачей - посоветуйте, пожалуйста: стоит ли пытаться решить ее в R или лучше воспользоваться другими программами, и какими именно?..
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

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

Сообщение Максим Дубинин »

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

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

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

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

Сообщение Odd-Bird »

Максим Дубинин писал(а): Если вам нужны координаты углов пикселей, то почему бы вам просто их не нагенерировать циклом, зная координаты верхнего левого угла и разрешение. Это можно сделать абсолютно где угодно, хоть в 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 »

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

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

Ну и непонятно в каком виде нужен результат.
Да, проблема еще в том, что пиксели на сфере не идеально квадратные, и их размер варьирует в разных широтах.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<
Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 792
Ваше звание: званий не имею
Откуда: Москва

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

Сообщение Александр Мурый »

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

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

Сообщение sergsh »

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

а может проще все же вычислять каждый раз 4 координаты для нужного пикселя, и не хранить их все ?
Odd-Bird
Интересующийся
Сообщения: 29
Зарегистрирован: 29 окт 2014, 17:48
Репутация: 0

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

Сообщение Odd-Bird »

Растр 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 »

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

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

Сообщение Odd-Bird »

В общем, я решил ограничиться координатами центров пикселей.
>>> Odd-Bird.do.am — Библиография научных работ о птицах России <<<
sergsh
Активный участник
Сообщения: 205
Зарегистрирован: 20 фев 2013, 21:48
Репутация: 30

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

Сообщение sergsh »

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

Система координат longlat, эллипсоид wgs84.
Спасибо за ссылку, интересные данные.
gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm »

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

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

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

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