ไฟล์รูปร่างขนาดใหญ่ถึงแรสเตอร์


13

ฉันมีไฟล์รูปร่างขนาดใหญ่ (1 gb) และจำเป็นต้องทำการแรสเตอร์อีกครั้ง ฉันได้ลองสิ่งต่อไปนี้แล้ว

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 มีการรองรับไฟล์ขนาดใหญ่สำหรับแผนที่เวกเตอร์ซึ่งน่าจะช่วยแก้ปัญหาที่ระบุได้ (ยังเร็วกว่ามาก)
markus

ฉันกำลังใช้ GRASS 6.4 ฉันจะอัปเดตเป็น 7 เร็ว ๆ นี้ขอบคุณสำหรับคำใบ้
johannes

คุณสามารถรับ winGRASS ที่คอมไพล์แล้วล่าสุดได้ที่นี่: 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บนเครื่องที่มี RAM หรือพื้นที่ดิสก์สว็อปเพิ่มขึ้นได้หรือไม่?

หากไม่ใช่คุณสามารถแบ่งเป็นหลาย ๆ ไฟล์ให้แรสเตอร์แต่ละไฟล์ก่อนรวมเข้าด้วยกันอีกครั้ง


1

หากคุณต้องการการควบคุมมากขึ้นเมื่อทำแรสเตอร์ให้ตรวจสอบ perrygeo ของสคริปต์ poly_density.pyซึ่งใช้ GDAL ภายใต้ประทุน แต่สามารถใช้สำหรับการทับซ้อนกันหรือการเพิ่มคุณสมบัติการประเมินผลตามเงื่อนไขที่นอกเหนือจากที่เป็นไปได้ด้วยgdal_rasterizeคนเดียว


0

เช่นเดียวกับแจ็คเดอะริปเปอร์ทำตามส่วนต่างๆ จากการส่งออกชิ้น postgis ของการนำเข้าข้อมูลในหญ้าและแปลง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.