Làm cách nào để thay đổi màu địa lý không có dữ liệu Màu sắc thành màu trắng / trong suốt thay vì màu đen?


17

Tôi đang chuẩn bị dữ liệu để đưa vào nút mạng địa lý, nơi các bản đồ được hiển thị qua máy chủ địa lý.

Vấn đề là các ô không có "dữ liệu" sẽ hiển thị màu đen trong bảng địa lý và tôi muốn màu được đặt thành màu trắng hoặc trong suốt.

Tôi đang sử dụng ArcView và không có quyền truy cập vào Nhà phân tích không gian hoặc Nhà phân tích 3D.

Tôi không muốn phải gán tệp sld mới và hiện đang sử dụng "Sử dụng bản đồ màu" khi xuất từ ​​ArcGIS Desktop.


Câu trả lời:


7

Về khái niệm, bạn cần tìm ra giá trị pixel nào đại diện cho các ô không có dữ liệu và sau đó chỉnh sửa bảng màu của bạn để gán các giá trị ĐỎ, XANH, XANH (RGB) trong bảng màu là 255.255.255 cho giá trị ô đó.

Nếu bạn không có giấy phép phù hợp để làm điều này trong Arc, bạn có thể sử dụng công cụ gdal_translate (một trong những công cụ dòng lệnh gdal / ogr)

  1. xuất bảng màu cho tif của bạn dưới dạng tệp XML.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. mở tệp .vrt trong trình soạn thảo văn bản và tìm mục nhập cho giá trị không có pixel dữ liệu của bạn. Không có số chỉ mục cho các giá trị ô, vì vậy bạn phải đếm ngược đến mục chính xác.

  3. chỉnh sửa giá trị này thành <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. Bây giờ, tạo một tif mới dựa trên bảng màu mới
    gdal_translate outColorTable.vrt newCorrected.tif

(ví dụ được thêm vào dựa trên bình luận bên dưới)

Khi tôi chạy lệnh trong mục số 2 ở trên và mở tệp .vrt trong trình soạn thảo văn bản, tôi thấy nội dung XML.

Một phần của tập tin bao gồm các dòng trông như thế này, tôi đã loại bỏ hầu hết chúng.


Xin chào DavidF. Cảm ơn đã trả lời câu trả lời mà tôi đã cố gắng thực hiện với FWTools (dễ dàng hơn một chút để điều hướng cho người mới). Nhưng tôi gặp khó khăn khi tìm "giá trị" trong tệp vrt vì khi tôi mở tệp bằng notepad, giờ đây chúng là các từ có thể nhận thấy và nó được cấu tạo chủ yếu từ văn bản ngẫu nhiên (mã). Tôi có làm điều gì sai? - bất kỳ trợ giúp bổ sung đánh giá rất cao.
lập bản đồ

@ user1106 - Thử lại các lệnh trên, tôi đã bỏ tùy chọn định dạng đầu ra. Nó nên hoạt động ngay bây giờ!
DavidF

9

Tôi đã viết một tập lệnh python gdal nhỏ cho việc này, gdalsetnull.py , một chương trình dòng lệnh đơn giản để đặt giá trị raster NODATA được chỉ định, mà không tạo raster mới. Cách dễ nhất để cài đặt GDAL trên windows là thông qua OSGeo4W . Ví dụ:

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

Nếu bạn không bận tâm đến việc xử lý và tạo một hình ảnh mới thay vì chỉnh sửa tại chỗ thì cũng có gdal_calc cho phép thực sự thay đổi các giá trị ô thay vì chỉ cập nhật siêu dữ liệu.

Đặt giá trị từ 0 trở xuống thành null:

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

Làm tốt lắm Matt!
DavidF

Điều này thực sự trả lời câu hỏi? Kịch bản (đẹp!) Của bạn sẽ đặt màu thành NULL, nhưng tôi đoán nó vẫn là đặc trưng của WMS, trong đó màu (giả sử trong suốt cũng là màu), các giá trị NODATA được hiển thị.
alfonx

@alfonx, vâng, có một sự khác biệt giữa một ô được ghi là nodatavà ô nói rằng tôi0 và ứng dụng quyết định liệu nó hoặc một số giá trị khác có nên bị bỏ qua hay không. ArcGIS không tôn trọng kết quả của gdalsetnull.py; Tôi chưa có kinh nghiệm với GeoServer.
matt wilkie

1
Có vẻ như nó đã di chuyển một lần nữa, bây giờ tại: github.com/maphew/maphew-gcode-archive/blob/ mẹo
Steve Bennett

liên kết cố định, cảm ơn đã lưu ý! @SteveBennett chúng ta nên xóa những bình luận meta này ngay bây giờ.
matt wilkie

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.