Rastere büyük şekil dosyası


13

Büyük bir şekil dosyam var (1 gb) ve rasterleştirmem gerekiyor. Şunu zaten denedim.

1.) Bunu kullanarak v.in.ogrhata mesajıyla GRASS'a aktarın: ERROR: G_realloc: break_polygons.c adresinde 498240036 bayt ayrılamadı.: 188

2.) İkinci fikrim PostGIS kullanmaktı. Şekil dosyasını içe aktarın, ızgaranın x, y konumunda yeniden örnekleyin ve ardından bu noktaları dışa aktarın ve xyz'den bir ızgara oluşturun. Şekil dosyalarını (çokgenler ve noktalar) başarıyla içe aktardım, ancak 300k noktalı kesişen 1 milyon çokgen çok yavaş görünüyor. Aşağıdaki PostGIS doygunluğunu kullandım, belki iyileştirme için yer var.

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

3.) simplify()PostGIS'te de kullanmaya çalıştım. Ama birçok küçük çokgene kaybettim (yani sadece küçük çokgenlerle kaplı bazı alanlar geçersiz hale geldi).

Herhangi bir fikir büyük mutluluk duyacağız.


1
Hangi GRASS Sürümünü kullandınız? En az 6.4 olmalıdır. GRASS 7'de, belirtilen sorunun üstesinden gelmeye yardımcı olması gereken vektör haritaları için de büyük dosya desteğinin uygulandığını unutmayın (ayrıca çok daha hızlıdır).
markusN

Şu anda GRASS 6.4 kullanıyorum. Yakında 7'ye güncelleyeceğim, ipucu için teşekkürler.
johannes

En son önceden derlenmiş winGRASS 7 ikili dosyalarını buradan edinebilirsiniz: wingrass.fsv.cvut.cz/grass70
markusN

Yanıtlar:


14

Bu kadar büyük bir şekil dosyasıyla kullanmadığım halde gdal_rasterize'yi deneyebilirsiniz , bu yüzden GRASS ile aynı sorunlara sahip olabilirsiniz. Aşağıdaki gibi bir şey (GDAL> = 1.8.0 ile) çalışması gerektiğini düşünüyorum:

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

Tabii ki, kaynak şekil dosyanıza bağlı olarak bazı seçeneklerle oynamak zorunda kalacaksınız. En önemli parametre bir pikselin çözünürlüğünü belirten -tr'dir; onsuz, kendinizi çok büyük bir tarama ile bulabilirsiniz ...

GRASS ile yapışmak istiyorsanız, rasterleştirme için daha küçük bir boyut ayarlamayı deneyin ve işlemi yönetilebilir parçalara ayırın, ardından rasterleri bir tanesine mozaikleyin.


1
gdal rasterize hepsini yaklaşık 5 dakika içinde yaptı :). Bunun için çok teşekkürler!
johannes

Güzel! Çalıştığına sevindim.
MerseyViking

3

İlk niyetinizle ilgili olarak, daha fazla RAM veya takas alanı olan bir makinede v.in.ogr komutunu çalıştırmayı deneyebilir misiniz ?

Değilse, bir çok dosyaya bölebilirsiniz. Yeniden birleştirmeden önce her birini rasterleştirin.


1

Bir rasterleştirme yaparken daha fazla kontrole ihtiyacınız varsa, perrygeo'nun başlık altında GDAL kullanan, ancak örtüşen özellikler veya tek başına mümkün olanların ötesinde koşullu değerlendirmeler eklemek için kullanılabilen poly_density.py betiğine göz atın gdal_rasterize.


0

Karındeşen Jack gibi parçalara ayır. Postgis veri dilimleri ihracat çim gelen ve dönüştürmek.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.