Spatial BigData

Кроме QGIS
Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Spatial BigData

Сообщение Филиппов Владислав » 26 мар 2014, 08:14

Доброго дня всем.
Каким образом можно сгенерировать большой объём пространственных данных на большую территорию?
Пробовал на территорию близкую к территории РФ (шейп в WGS82 с одним объектом) в QGIS 2 Вектор\Выборка\Случайные точки и Вектор\Выборка\Регулярные точки.
Снимок.PNG
Снимок.PNG (59.02 КБ) 11675 просмотров
Создаётся шейп объёмом 6Gb за час и QGIS потом висит и шейп не увеличивается. При открытии шейпа, он выглядит как пустой.
Нашёл вот это. Но что если без кода?

Win8 64 QGIS 2.2
Ubuntu 64 13.10/14.04b QGIS 2.0.1

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: Spatial BigData

Сообщение bolotoved » 26 мар 2014, 09:44

1. Шейп для такого не годится (там ограничение на объем данных), нужно писать в БД, например, SpatiaLite или др.
2. Думаю GRASS потянет, с использованием модуля r.random, например:

Код: Выделить всё

r.random input="маскирующая карта" vector_output="слой случайных точек" n=2000000
n - количество точек

Достоинство GRASS в скорости, плюс он пишет в свою векторную БД, а не в шейп.

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

Re: Spatial BigData

Сообщение Александр Мурый » 26 мар 2014, 10:03

В GRASS, кроме <r.random>, можно ещё исп-ть <v.random>, для векторов он может быть получше.
P.S. Потестировал <v.random>: 1 млн. точек сделались за 27 сек.
Редактор материалов, модератор форума

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Spatial BigData

Сообщение Филиппов Владислав » 26 мар 2014, 10:08

да, нужно писать в БД.
С БД GRASS'а что-то связываться не хочется.
Мне это нужно для сравнения SQL и NoSQL-хранилищ, а так же наличие геосервера или прямой доступ к пространственным данным в векторе по REST (в OpenLayers в формате JSON из Mongo, например)

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

Re: Spatial BigData

Сообщение Александр Мурый » 26 мар 2014, 10:11

Филиппов Владислав писал(а):да, нужно писать в БД.
С БД GRASS'а что-то связываться не хочется.
Оттуда легко вынуть данные куда угодно, в те же PostGIS/SpatiaLite.
Редактор материалов, модератор форума

bolotoved
Гуру
Сообщения: 920
Зарегистрирован: 30 дек 2008, 14:11
Репутация: 236
Откуда: Ханты-Мансийск
Контактная информация:

Re: Spatial BigData

Сообщение bolotoved » 26 мар 2014, 10:15

Александр Мурый писал(а):
Филиппов Владислав писал(а):да, нужно писать в БД.
С БД GRASS'а что-то связываться не хочется.
Оттуда легко вынуть данные куда угодно, в те же PostGIS/SpatiaLite.
См. v.out.ogr в качестве выходных форматов поддерживаются основные свободные БД.

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Spatial BigData

Сообщение Филиппов Владислав » 26 мар 2014, 10:17

Уговорили.

сделал на 1 000 000 точек.
но на 10 000 000 точек вышло вот что:
v.random n=100000000 zmin=0.0 zmax=0.0 output=points2

Создание точек...


Невозможно записать объект (отрицательное смещение)
Завершено с ошибкой

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

Re: Spatial BigData

Сообщение Александр Мурый » 26 мар 2014, 12:26

При таком большом числе точек надо использовать флаг "-b" для <v.random>, чтобы не строилась топология:

Код: Выделить всё

time v.random -b out=rand n=100000000 --o
WARNING: Vector map <rand> already exists and will be overwritten
Generating points...
  96%
real	4m14.366s
user	1m14.992s
sys	2m49.024s
Редактор материалов, модератор форума

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Spatial BigData

Сообщение Филиппов Владислав » 26 мар 2014, 13:06

всё ясно. это QGIS GUI не показывает все опции. в самом GRASS это доступно.

сто миллионов:

Код: Выделить всё

v.random -b --overwrite --verbose output=point100 n=100000000                   
Создание точек...
ERROR: Невозможно записать объект (отрицательное смещение)
(Wed Mar 26 17:07:39 2014) Операция завершена (3 min 34 sec) 

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

Re: Spatial BigData

Сообщение Александр Мурый » 26 мар 2014, 13:20

Владислав, последняя команда выполняется в чистой GRASS? Какая версия? СК в наборе случайно не географическая? Не уверен, влияет ли это, просто у меня в примерах выше СК прямоугольная.
Редактор материалов, модератор форума

Аватара пользователя
Филиппов Владислав
Гуру
Сообщения: 1035
Зарегистрирован: 17 фев 2006, 06:28
Репутация: 144
Ваше звание: Геннадич
Откуда: Новосибирск
Контактная информация:

Re: Spatial BigData

Сообщение Филиппов Владислав » 26 мар 2014, 13:22

GRASS 6.4.3 Win8 64 i7 16gb RAM, места очень много.
СК WGS 84, охват - территория РФ

а 10 млн точек создались и даже импортировались в PostGIS

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Spatial BigData

Сообщение KolesovDmitry » 26 мар 2014, 15:04

Какой у вас движок стоит в БД GRASS, часом не dbf? Если действительно dbf, то поменяйте на sqlite или на Postgres.

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

Re: Spatial BigData

Сообщение Александр Мурый » 26 мар 2014, 15:09

KolesovDmitry писал(а):Какой у вас движок стоит в БД GRASS, часом не dbf? Если действительно dbf, то поменяйте на sqlite или на Postgres.
Кстати да, я совсем забыл об этом, т.к. почти всегда меняю дефолтный DBF на SQLite.
Редактор материалов, модератор форума

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

Re: Spatial BigData

Сообщение gamm » 26 мар 2014, 15:44

Филиппов Владислав писал(а):ERROR: Невозможно записать объект (отрицательное смещение)
я практически уверен, что вы где-то перевалили за максимальный положительный int (это 2147483647 байтов), возможно при создании файла - какая у вас ОС? некоторые не поддерживают файлов более 2Гб, особенно 32-битовые, а может внутри указатель в программе int был на смещение в файле. В общем, пишите лучше в СУБД, ORACLE все переварит, PostGIS, думаю, тоже.

P.S. я бы таки просто запустил генератор в R, и писал в файл кусками, W7 x64 точно такое переварит в виде файла ...

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

Re: Spatial BigData

Сообщение Александр Мурый » 26 мар 2014, 15:46

gamm писал(а):я практически уверен, что вы где-то перевалили за максимальный положительный int (это 2147483647 байтов), возможно при создании файла - какая у вас ОС?
Полезно-таки читать предыдущие сообщения :)
Филиппов Владислав писал(а):Win8 64
Редактор материалов, модератор форума

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»

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

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