ดึงข้อมูลจาก NetCDF โดยใช้รูปหลายเหลี่ยม shapefile ใน Python [ซ้ำกัน]


11

ฉันต้องการเซ็ตย่อยข้อมูลจาก NetCDF โดยใช้ shapefile เฉพาะ ข้อมูลคืออุณหภูมิพื้นผิวทะเลและสีของมหาสมุทรที่ความละเอียด 1/4 องศา ฉันมีรูปหลายเหลี่ยม 4 รูปที่อธิบายถึงสหรัฐอเมริกา ไหล่ทวีปของระบบนิเวศทางทะเลขนาดใหญ่ในภาคตะวันออกเฉียงเหนือและเป็นส่วนประกอบย่อยที่ฉันต้องใช้เพื่อดึงข้อมูล ฉันทำงานกับไฟล์คอมโพสิตทุกเดือนตั้งแต่ปีพ. ศ. ไฟล์ได้รับการเซทไปยังกริดพื้นที่ทำงานโดยประมาณของ [35, 45, -80, -60] แล้ว

ป้อนคำอธิบายรูปภาพที่นี่

ก่อนหน้านี้เราแปลงไฟล์ข้อมูล HDF5 เป็น rasters ใน R และประมวลผลด้วยวิธีนี้ แต่วิธีนี้ไม่มีประสิทธิภาพจริงๆและฉันมั่นใจว่ามีวิธีแก้ปัญหาที่ดีกว่าใน Python โดยใช้ไฟล์ NetCDF ปัจจุบัน

ป่านนี้ฉันได้ใช้ GDAL และ Fiona เพื่ออ่านใน shapefiles และ NetCDF4 เพื่อโหลดไฟล์ข้อมูล ฉันไม่แน่ใจว่าจะทำอย่างไรกับการย่อยข้อมูล ฉันพบสิ่งนี้:

GDAL สำหรับ Python: แยกโดเมนย่อยออกจากไฟล์ NetCDF หรือไม่

แต่ฉันไม่มีความคิดที่ผิดพลาดที่สุดเกี่ยวกับวิธีการย่อยไฟล์ NetCDF โดยใช้สิ่งอื่นนอกเหนือจากกล่องขอบอย่างง่ายซึ่งรูปหลายเหลี่ยมเหล่านี้ไม่แน่นอน

จุดในงานประจำรูปหลายเหลี่ยมอาจใช้เวลาชั่วนิรันดร์ในการทำงาน แต่บางทีฉันสามารถย่อยข้อมูลโดยใช้กล่องขอบเขตขนาดเล็กที่หมุนเพื่อให้พอดีกับรูปร่างเหล่านี้เช่นนี้เป็นจุดเริ่มต้นเริ่มต้นจากนั้นทำการค้นหาจุดในโพลี

การจัดประเภทไฟล์ curvilinear netCDF (เอาต์พุตโมเดล ROMS) โดยใช้กล่อง lon / lat bounding

ความคิดใด ๆ

แก้ไข 1:

ฉันเพิ่งเจอแพคเกจ OpenClimateGIS ซึ่งดูเหมือนว่ามันจะพอดีกับบิลอย่างสมบูรณ์แบบ ... ฉันจะไปกับสิ่งนี้เพื่อดูว่าฉันจะได้ไปทำงาน: http://ncpp.github.io/ocgis/examples HTML # ขั้นสูง Subsetting


ลิงก์ล่าสุดของคุณในการแก้ไข 1 ดูเหมือนจะตายแล้วดูเหมือนจะเป็นสิ่งที่ดีที่สุดทดแทน: earthsystemcog.org/projects/openclimategis
Aaron

คำตอบ:


1

สิ่งนี้อาจปรับให้เหมาะกับความต้องการของคุณ

gdalwarp -cutline clip.shp -cl clip -crop_to_cutline input_raster output_raster_clipped.tifหากคุณไม่ทราบเรียกบรรทัดคำสั่งจากหลามคุณสามารถทำสิ่งที่ชอบ -cwhereและ-csqlอาจเป็นตัวเลือก gdalwarpที่เหมาะสมกว่าสำหรับการเลือกรูปหลายเหลี่ยมสี่แบบสำหรับการตัด


1

ลองดูที่: /programming/34585582/how-to-mask-the-specific-array-data-based-on-the-shapefile

สิ่งที่คุณต้องการทราบคือเมื่อคุณโหลด NetCDF ของคุณแล้วคุณกำลังทำงานกับอาร์เรย์ NumPy

คุณพยายามส่งออกอะไร สถิติสรุปขึ้นอยู่กับพื้นที่รูปหลายเหลี่ยม?

อย่างไรก็ตามนี่คือสิ่งที่ฉันต้องการ:

  1. โหลด shapefile ของคุณและทำให้พื้นที่ของคุณอยู่ในรูปแบบที่รองรับ (เล็งกระบวนการ matplotlib ในลิงค์ด้านบนฟังดูดี)
  2. โหลดไฟล์ NetCDF ของคุณและรับข้อมูลลงในอาร์เรย์ X, Y, T แบบเดี่ยว
  3. มาส์กอาร์เรย์นั้นโดยใช้รูปหลายเหลี่ยม (ทีละรูป?)
  4. ส่งออกสถิติสรุปของคุณ

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