Великий форм-файл до растрових


13

У мене є великий форм-файл (1 гб), і мені потрібно його растершировать. Я вже спробував наступне.

1.) Імпортувати його в GRASS, використовуючи v.in.ogrце не вдалося з повідомленням про помилку: ПОМИЛКА: G_realloc: не вдається виділити 498240036 байт на break_polygons.c: 188

2.) Моєю другою ідеєю було використовувати PostGIS. Імпортуйте файл форми, переупорядкуйте його в місці розташування сітки x, y, а потім експортуйте ці точки та створіть сітку з xyz. Я успішно імпортував формули (багатокутники та точки), але перетинання 1 мільйона полігонів з 300k точок здається дуже повільним. Я використовував наступну форму PostGIS, можливо, є місце для вдосконалення.

select polygons.land_id,grid.geom from grid,polygons where grid.geom && polygons.geom and within(grid.geom,polygons.geom)

3.) Я також намагався використовувати simplify()в PostGIS. Але я втратив багато малих багатокутників (тобто деякі ділянки, які були покриті лише малими багатокутниками, стали нульовими).

Будь-які ідеї будуть дуже вдячні.


1
Яку версію GRASS ви використовували? Він повинен бути не менше 6,4. Зауважте, що в GRASS 7 підтримка великих файлів реалізована також для векторних карт, що повинно допомогти подолати вказану проблему (також це набагато швидше).
markusN

Зараз я використовую GRASS 6.4. Я скоро оновлю до 7, дякую за підказку.
johannes

Отримати останні попередньо складені файли winGRASS 7 можна тут: wingrass.fsv.cvut.cz/grass70
markusN

Відповіді:


14

Ви можете спробувати gdal_rasterize , хоча я не використовував його з таким великим форм-файлом , тому у вас можуть виникнути ті самі проблеми, що і у GRASS. Я вважаю, що щось подібне повинно працювати (з GDAL> = 1.8.0):

gdal_rasterize -a AN_ATTRIB -l THE_LAYER -a_nodata -9999 -a_srs EPSG:27700 -co TILED=YES -tr 10 10 -ot Float32 src.shp dest.tif

Звичайно, вам доведеться пограти з деякими варіантами залежно від вашого вихідного формату файлу. Найважливіший параметр -tr, який визначає роздільну здатність пікселя; без цього ви можете опинитися з дуже великим растром ...

Якщо ви хочете дотримуватися GRASS, спробуйте встановити меншу міру для растеризації та розділіть процес на керовані фрагменти, а потім мозаїкуйте растри на один.


1
gdal rasterize зробив це все приблизно за 5 хв :). Дякую за це!
johannes

Класно! Я радий, що це спрацювало.
MerseyViking

3

Що стосується вашого першого наміру, чи можете ви спробувати запустити команду v.in.ogr на машині, що має більше оперативної пам’яті або поміняти місця на диску?

Якщо ні, то ви можете розділити їх на багато файлів, щоб розтермінувати кожен з них, перш ніж об'єднати їх.


1

Якщо вам потрібен додатковий контроль при проведенні растеризації, ознайомтеся зі сценарієм poly_density.py perrygeo, який використовує GDAL під кришкою, але його можна використовувати для перекриття функцій або додавання умовних оцінок, що перевищують можливі gdal_rasterizeокремо.


0

Як і Джек Розпушувач, робіть це по частинах. З експортування фрагментів даних імпортують у траву та конвертують.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.