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.