Страница 1 из 2

Spatial BigData

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

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

Re: Spatial BigData

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

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

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

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

Re: Spatial BigData

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

Re: Spatial BigData

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

Re: Spatial BigData

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

Re: Spatial BigData

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

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

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


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

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

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) 

Re: Spatial BigData

Добавлено: 26 мар 2014, 13:20
Александр Мурый
Владислав, последняя команда выполняется в чистой GRASS? Какая версия? СК в наборе случайно не географическая? Не уверен, влияет ли это, просто у меня в примерах выше СК прямоугольная.

Re: Spatial BigData

Добавлено: 26 мар 2014, 13:22
Филиппов Владислав
GRASS 6.4.3 Win8 64 i7 16gb RAM, места очень много.
СК WGS 84, охват - территория РФ

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

Re: Spatial BigData

Добавлено: 26 мар 2014, 15:04
KolesovDmitry
Какой у вас движок стоит в БД GRASS, часом не dbf? Если действительно dbf, то поменяйте на sqlite или на Postgres.

Re: Spatial BigData

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

Re: Spatial BigData

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

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

Re: Spatial BigData

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