ฉันจะเปลี่ยนพิกัด "ไม่มีข้อมูล" เป็นสีขาว / โปร่งใสแทนที่จะเป็นสีดำได้อย่างไร


17

ฉันกำลังเตรียมข้อมูลเพื่อรวมเข้ากับโหนดเครือข่าย geonetwork ซึ่งแผนที่จะแสดงผ่าน geoserver

ปัญหาคือเซลล์ที่มี "ไม่มีข้อมูล" แสดงเป็นสีดำใน geotiff และฉันต้องการให้สีถูกตั้งค่าเป็นสีขาวหรือโปร่งใส

ฉันใช้ ArcView และไม่สามารถเข้าถึงนักวิเคราะห์เชิงพื้นที่หรือนักวิเคราะห์สามมิติ

ฉันไม่ต้องการกำหนดไฟล์ sld ใหม่และตอนนี้ใช้ "ใช้ colormap" เมื่อส่งออกจาก ArcGIS Desktop


คำตอบ:


7

ในแนวคิดคุณต้องคิดออกว่าค่าพิกเซลใดแสดงถึงเซลล์ที่ไม่มีข้อมูลแล้วแก้ไขตารางสีของคุณเพื่อกำหนดค่า RED, GREEN, BLUE (RGB) ในตารางสีให้เป็น 255,255,255 สำหรับค่าเซลล์นั้น

หากคุณไม่มีใบอนุญาตที่เหมาะสมในการทำเช่นนี้ใน Arc คุณสามารถใช้เครื่องมือ gdal_translate (หนึ่งในเครื่องมือบรรทัดคำสั่ง gdal / ogr)

  1. ส่งออกตารางสีสำหรับ tif ของคุณเป็นไฟล์ XML
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. เปิดไฟล์. vrt ในเท็กซ์เอดิเตอร์และค้นหารายการสำหรับค่าที่ไม่มีพิกเซลข้อมูลของคุณ ไม่มีหมายเลขดัชนีสำหรับค่าเซลล์ดังนั้นคุณต้องนับรายการที่ถูกต้อง

  3. แก้ไขค่านี้เป็น <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. ตอนนี้สร้าง tif ใหม่ตามตารางสีใหม่
    gdal_translate outColorTable.vrt newCorrected.tif

(ตัวอย่างเพิ่มตามความคิดเห็นด้านล่าง)

เมื่อฉันรันคำสั่งในรายการ # 2 ด้านบนและเปิดไฟล์. vrt ในเท็กซ์เอดิเตอร์ฉันเห็นเนื้อหา XML

ส่วนหนึ่งของไฟล์รวมถึงบรรทัดที่มีลักษณะเช่นนี้ฉันได้ตัดออกส่วนใหญ่แล้ว


สวัสดี DavidF ขอบคุณ fot คำตอบที่ฉันได้พยายามดำเนินการกับ FWTools (ง่ายขึ้นเล็กน้อยเพื่อนำทางสำหรับสามเณร) แต่ฉันมีปัญหาในการค้นหา "ค่า" ในไฟล์ vrt เพราะเมื่อฉันเปิดไฟล์ที่มีแผ่นจดบันทึกตอนนี้พวกเขาเป็นคำที่มองเห็นได้และมันประกอบด้วยข้อความสุ่ม (รหัส) เป็นส่วนใหญ่ ฉันกำลังทำอะไรผิดหรือเปล่า? - ความช่วยเหลือเพิ่มเติมใด ๆ ที่ชื่นชมอย่างมาก
แมป

@ user1106 - ลองคำสั่งด้านบนอีกครั้งฉันเลือกตัวเลือกรูปแบบผลลัพธ์ มันควรจะทำงานตอนนี้!
DavidF

9

ฉันเขียนสคริปต์หลาม gdal ขนาดเล็กสำหรับสิ่งนี้gdalsetnull.pyโปรแกรมบรรทัดคำสั่งง่าย ๆ เพื่อตั้งค่าแรสเตอร์ที่ระบุ NODATA โดยไม่ต้องสร้างแรสเตอร์ใหม่ เส้นทางที่ง่ายที่สุดในการติดตั้งบน Windows GDAL ผ่านOSGeo4W ตัวอย่าง:

python gdalsetnull.py foobar.tif 0            # pure black is transparent
python gdalsetnull.py foobar.tif 0 255 0      # pure green is
python gdalsetnull.py foobar.tif 50 23 77 100 # arbitrary value in 4 band image

หากคุณไม่สนใจค่าใช้จ่ายในการประมวลผลและสร้างภาพใหม่แทนที่จะแก้ไขให้ถูกต้องก็มีgdal_calcซึ่งช่วยให้สามารถเปลี่ยนค่าของเซลล์ได้แทนที่จะอัปเดตข้อมูลเมตา

ตั้งค่าเป็นศูนย์และต่ำกว่าเป็นโมฆะ:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0

ทำได้ดีมาก!
DavidF

สิ่งนี้ตอบคำถามได้จริงหรือ สคริปต์ (nice!) ของคุณจะตั้งค่าสีเป็น NULL แต่ฉันคิดว่ามันยังคงใช้งานเฉพาะ WMS ซึ่งสี (สมมติว่าโปร่งใสเป็นสีด้วย) ค่า NODATA จะถูกแสดงผล
alfonx

@alfonx ใช่มีความแตกต่างระหว่างเซลล์ที่บันทึกเป็นnodataและเซลล์ที่บอกว่าฉัน0และแอปพลิเคชันจะตัดสินว่าควรจะละเว้นหรือมีค่าอื่น ๆ ArcGIS เคารพผลลัพธ์ของ gdalsetnull.py; ฉันไม่มีประสบการณ์กับ GeoServer
matt wilkie

1
ดูเหมือนว่ามันจะถูกย้ายอีกครั้งตอนนี้ที่: github.com/maphew/maphew-gcode-archive/blob/ …
Steve Bennett

ลิงก์คงที่ขอขอบคุณที่ทราบ! @SteveBennett เราควรลบความคิดเห็น meta เหล่านี้ทันที
แมตต์วิลคี

2

นอกจากนั้นคุณไม่ต้องการสร้างไฟล์ SLD ใหม่นี่คือรายการบล็อกเกี่ยวกับวิธีแปลงตารางสีภายในของ GeoTIFF เป็น SymbologyEncoding / SLDและกำหนดสีอื่นที่นั่น ใน SLD ที่ได้รับมันง่ายในการกำหนดค่าที่จะแสดงด้วยสีโปร่งใส 100%


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