เป้าหมายของ Chewie คือการทำให้การดาวน์โหลดข้อมูล GEDI ง่ายที่สุดเท่าที่จะเป็นไปได้ ซึ่งรวมถึงผลิตภัณฑ์ระดับจุด: 1B, 2A, 2B และ 4A ต่อไปนี้เป็นบทสรุปโดยย่อของตัวเลือกการออกแบบที่ช่วยให้ {chewie} บรรลุเป้าหมายนี้:
ข้อมูลจะถูกดาวน์โหลดและแปลงเป็นไฟล์ไม้ปาร์เก้ ซึ่งสามารถอ่านได้โดยใช้ {arrow} และแปลงเป็นวัตถุ sf วิธีการนี้มีประสิทธิภาพเนื่องจากต้องการให้โหลดแต่ละแกรนูลทั้งหมดลงในหน่วยความจำเพียงครั้งเดียว (เมื่อแปลงจาก hdf5 เป็นปาร์เก้) จากนี้ไปเราสามารถใช้คำกริยา dplyr (หรือฐาน R) เพื่อ filter
mutate
และ select
ข้อมูลตามต้องการโดยไม่จำเป็นต้องโหลดช็อตทั้งหมดจากแกรนูลที่กำหนดลงในหน่วยความจำ
แคชระดับระบบใช้เพื่อจัดเก็บข้อมูล ซึ่งหมายความว่าเมื่อดาวน์โหลดไฟล์แล้ว จะไม่ดาวน์โหลดอีกแม้ว่าจะทำงานในโปรเจ็กต์อื่นก็ตาม (ยังสามารถระบุตำแหน่งแคชที่ไม่ซ้ำกันสำหรับแต่ละโปรเจ็กต์ได้ด้วย)
มีการรองรับการกรองเชิงพื้นที่ของแกรนูลที่ตัดกับพื้นที่ที่สนใจและไม่ใช่เพียงกล่องที่มีขอบเขตเท่านั้น ซึ่งมักจะลดปริมาณข้อมูลที่ไม่เกี่ยวข้องที่ถูกดาวน์โหลด
คุณสามารถติดตั้ง Chewie เวอร์ชันพัฒนาได้ดังนี้:
# install.packages("pak")pak::pkg_install("Permian-Global-Research/chewie")
ก่อนอื่นเรามาโหลดไลบรารี่กันก่อน {dplyr} ไม่จำเป็น แต่ขอแนะนำเนื่องจากเป็นตัวเลือกที่ยอดเยี่ยมและมีประสิทธิภาพสูงสำหรับการทำงานกับชุดข้อมูลลูกศร
ห้องสมุด(ชิววี่) ห้องสมุด(dplyr) ห้องสมุด(เอสเอฟ)
ต่อไปนี้เป็นฟังก์ชันตัวช่วยที่มีประโยชน์ในการตั้งค่าข้อมูลรับรองของคุณ (โดยใช้ chewie_creds()
) และตรวจสอบว่าข้อมูลรับรองเหล่านั้นและแคชได้รับการตั้งค่าอย่างถูกต้อง (โดยใช้ chewie_health_check()
) ตามค่าเริ่มต้น แคชจะถูกตั้งค่าไว้ในโฟลเดอร์ .chewie
ในโฮมไดเร็กตอรี่ของคุณ คุณสามารถเปลี่ยนสิ่งนี้ได้ด้วยการรัน chewie_cache_set()
Chewie_creds() # เพื่อตั้งค่าข้อมูลประจำตัวของคุณschewie_health_check() # เพื่อตรวจสอบข้อมูลประจำตัวและการตั้งค่าแคช
ตอนนี้ เรามาค้นหาข้อมูล GEDI 2A ที่ตัดกับ Prairie Creek Redwoods State Park แคลิฟอร์เนียกัน (ชุดข้อมูลรวมอยู่ในแพ็คเกจ) จากนั้นเราจะวาดรอยเท้าของเม็ดเล็กๆ ที่ตัดกับบริเวณนี้เพื่อดูว่าเรามีอะไรบ้าง โปรดทราบว่าตามค่าเริ่มต้น ทั้ง find_gedi
และ grab_gedi
จะแคชเอาต์พุต ดังนั้นเมื่อฟังก์ชันเหล่านี้ถูกรันอีกครั้ง ข้อมูลจะถูกโหลดจากแคชแทนที่จะดาวน์โหลดอีกครั้ง แม้จะอยู่ในเซสชัน R ที่แตกต่างกันก็ตาม
Prairie_creek <- sf::read_sf(system.file( "geojson", "prairie-creek.geojson", package = "chewie"))gedi_2a_search <- find_gedi(prairie_creek, gedi_product = "2A", date_start = "2023-01 -01", date_end = "2023-01-31")#> ✔ การใช้ GEDI ที่แคชไว้ ค้นหาผลลัพธ์การพิมพ์(gedi_2a_search)#> #> ──chewie.find ──────────────── ────────────────────────────────────────────────── ─────────────────────────────────────────────────# > • GEDI-2A#> id time_start time_end url cached#>#> 1: G2754665065-LPCLOUD 2023-01-25 05:14:31 2023-01- 25 06:47:21 https://data.lpdaac.earthdatacloud.nasa.gov/lp-pro... TRUE#> ไม่ได้แสดงตัวแปร 1 รายการ: [เรขาคณิต ]#> #> ─── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ───────────────────────────
แม้ว่าจะมีวิธี plot
สำหรับวัตถุ ของ Chewie.find แต่ทางเลือกที่ดีก็คือการลงจุดแผนที่แผ่นพับด้วย chewie_show
ซึ่งสามารถเป็นแบบคงที่หรือโต้ตอบได้ (ซึ่งใช้ {mapview} ที่ยอดเยี่ยมภายใต้ประทุน)
Chewie_show( gedi_2a_search, ซูม = 8)
ตอนนี้เราใช้ grab_gedi
เพื่อดาวน์โหลดข้อมูล - ฟังก์ชันนี้จะแปลงข้อมูลเป็นรูปแบบไม้ปาร์เก้ภายในและเก็บไว้ในแคช ค่าที่ส่งคืนคือวัตถุ arrow_dplyr_query จากนั้นเราสามารถใช้คำกริยา {dplyr} เพื่อ filter
/ select
ข้อมูลตามที่เราต้องการ ก่อนที่จะใช้ collect_gedi
เพื่อแปลงข้อมูลเป็นวัตถุ sf ในที่สุด หากไม่มีการดำเนินการกรอง/การเลือก ดังนั้น collect_gedi
จะส่งคืนคอลัมน์/แถวที่มีอยู่ทั้งหมดสำหรับ AOI
gedi_2a_sf <- Grab_gedi(gedi_2a_search) |> ตัวกรอง (quality_flag == 1, degrade_flag == 0 - เลือก (ลำแสง, date_time, lat_lowestmode, lon_lowestmode, elev_highestreturn, elev_lowestmode, rh0, rh25, rh50, rh75, rh95, rh100 - collect_gedi(gedi_find = gedi_2a_search)#> ✔ ข้อมูลทั้งหมดที่พบใน cacheprint(gedi_2a_sf)#> การรวบรวมคุณสมบัติอย่างง่ายพร้อมคุณสมบัติ 884 รายการและ 10 ฟิลด์#> ประเภทเรขาคณิต: POINT#> ขนาด: XY#> กล่องขอบเขต: xmin: -124.069 ymin: 41.3609 xmax: -123.9959 ymax: 41.43904#> Geodetic CRS: WGS 84#> # A tibble: 884 × 11#> ลำแสง date_time elev_highestreturn elev_lowestmode rh0 rh25#> *#> 1 0 2023-01-25 06:09:05 -19.6 -23.8 -3.55 -1.12 #> 2 0 2023-01-25 06:09:05 -20.7 -24.2 -3.89 -1.27 #> 3 0 2566-01-25 06:09:05 -20.7 -24.2 -3.93 -1.27 #> 4 0 2023-01-25 06:09:05 -2.29 -23.3 -3.37 -0.0300#> 5 0 2023-01-25 06:09:05 27.7 -15.0 -2.54 9.70 #> 6 0 2023-01-25 06:09:05 35.8 4.55 -3.74 12.1 #> 7 0 2023-01-25 06:09:05 55.9 12.2 -1.57 16.8 # > 8 0 2566-01-25 06:09:05 94.6 41.0 -1.53 25.8 #> 9 0 2023-01-25 06:09:05 95.3 42.5 -3.78 6.06 #> 10 0 2566-01-25 06:09: 05 98.3 33.8 -2.32 29.9 #> # ℹ อีก 874 แถว#> # ℹ ตัวแปรอีก 5 รายการ: rh50 , rh75 , rh95 , rh100 ,#> # เรขาคณิต
ในที่สุดเราก็สามารถพล็อตข้อมูลได้ เราสามารถใช้ฟังก์ชัน chewie_show
ทั่วไปได้อีกครั้ง
Chewie_show( gedi_2a_sf, zcol = "rh95", ซูม = 13, อัลฟา = 0.5, aoi_color = "สีขาว")
gedi-subsetter มีเครื่องมือหลามให้เลือกมากมายสำหรับการสืบค้นและดาวน์โหลดข้อมูล GEDI ขอบเขตของมันคล้ายกับ {chewie} แต่ยังให้การเข้าถึงโดยตรงไปยังไฟล์ hdf5 สำหรับบริษัทในเครือ NASA ด้วยการเข้าถึงแพลตฟอร์ม MAAP
{rGEDI} ให้ความสามารถในการดาวน์โหลดข้อมูล GEDI แต่ยังมีฟังก์ชันเพิ่มเติมมากมายสำหรับการแสดงภาพ ขั้นตอนหลังการประมวลผล และการสร้างแบบจำลอง
{GEDI4R} ซึ่งมีชุดเครื่องมือสำหรับการดาวน์โหลด การแสดงภาพ และการสร้างแบบจำลองข้อมูล GEDI ในทำนองเดียวกัน แต่มุ่งเน้นไปที่ผลิตภัณฑ์ 4A
pyGEDI เป็นแพ็คเกจ Python สำหรับการดาวน์โหลดและแสดงข้อมูล GEDI
GEDI-Data-Resources คือชุดของสคริปต์สำหรับทั้ง Python และ R ที่ให้ตัวอย่างวิธีดาวน์โหลดและประมวลผลข้อมูล GEDI
แหล่งข้อมูลเหล่านี้เป็นแรงบันดาลใจที่ยอดเยี่ยมสำหรับ {chewie}; เราขอขอบคุณผู้เขียนสำหรับผลงานที่ยอดเยี่ยมของพวกเขา!