Tạo shapefile hiển thị dấu chân của Rasters?


33

Tôi có khoảng 1.000 hình ảnh vệ tinh ở định dạng tiff và tôi muốn tạo một shapefile sẽ đóng vai trò là một chỉ mục cho các trình quét. Đây là một cái gì đó tương tự như một danh mục raster, nhưng tôi không muốn xây dựng một danh mục raster.

Một số trở ngại tôi có thể thấy trước, đó là hình ảnh được định vị địa lý, vì vậy chúng không có hình chữ nhật (tôi đang nói về vùng dữ liệu).

Để làm rõ, tôi yêu cầu đa giác chỉ bao gồm các pixel khác không (hoặc không gật đầu) của raster chứ không phải toàn bộ raster hình chữ nhật. Hầu hết các câu trả lời cho đến nay, đưa ra một đa giác hình chữ nhật, bao gồm dữ liệu, cũng như các pixel không dữ liệu.

Hình ảnh của tôi Một hình ảnh vệ tinh mẫu


Kết quả được cung cấp bởi các công cụ tôi đã kiểm tra (như catlog raster, Arcscripts khác nhau, tập lệnh Python tùy chỉnh được đưa ra trong một trong các câu trả lời): Kết quả


Kết quả mà tôi muốn: nhập mô tả hình ảnh ở đây


4
Có vẻ như tạo ra một danh mục raster, thậm chí tạm thời sẽ là một giải pháp tốt để tạo dấu chân. Bạn có thể tạo một danh mục không được quản lý, tạo một bảng tham chiếu, nhưng để các hình ảnh ở vị trí của chúng trên máy chủ. Thật dễ dàng và tương đối nhanh chóng để thực hiện nhập hàng loạt các trình quét vào danh mục. Sau khi tạo, bạn có thể xuất dấu chân sang một chiếc featureclass mới và xóa danh mục raster. Điều này có thể nhanh như các tùy chọn khác.
Nhận không gian

2
Dữ liệu khảm cũng tạo ra dấu chân hình ảnh.
Roy

dữ liệu khảm là con đường để đi. Rất dễ thực hiện
Brad Nesom

Vậy trong hình ảnh cuối cùng, các pixel bên ngoài hộp màu đỏ NoData hay 0? Nếu chúng là 0, có các pixel trong khu vực bạn muốn cũng có giá trị 0 không?
Chad Cooper

1
Các pixel bên ngoài viền đỏ là nốt; Tuy nhiên, dữ liệu đa phổ của tôi có 0,0,0 làm giá trị RGB cho các khu vực gật đầu. Trong cả hai trường hợp, không có pixel nào có giá trị 0 bên trong vùng được yêu cầu.
Devdatta Tengshe

Câu trả lời:


15

Có một plugin trong QGIS được gọi là Image Boundary . Nó là một dụng cụ hữu ích. Trong công cụ này, có một tùy chọn cho "Điểm ảnh hợp lệ", ví dụ như sẽ bỏ qua các cạnh màu đen của hình ảnh vệ tinh.


Plugin này tuyên bố sẽ làm những gì tôi muốn, nhưng nó thất bại trên một hình ảnh mà tôi đã thử nghiệm. Tôi sẽ thử với dữ liệu thực của tôi vào ngày mai.
Devdatta Tengshe

Tôi thấy rằng plugin này hoạt động rất tốt với dữ liệu đa phổ, nhưng đôi khi cho kết quả kỳ lạ với hình ảnh đơn sắc.
Devdatta Tengshe

2
Tôi đồng ý rằng Ranh giới hình ảnh của QGIS hoạt động tốt nhất nhưng có một công cụ để thực hiện việc này cho các tệp vectơ mà chúng ta không cần "hộp giới hạn" hoặc "dấu chân" nhưng là một đa giác phác thảo nơi dữ liệu tồn tại.
GeorgeC

Các công cụ ranh giới hình ảnh rất tuyệt, tuy nhiên, liên kết bạn cung cấp là 404. Tôi tin rằng các công cụ này vẫn khả dụng nếu bạn cho phép các plugin thử nghiệm trong cài đặt plugin. Có lẽ nên sử dụng liên kết này?: Github.com/lmotta/image feetprint_plugin
Aaron

Có tài liệu nào để sử dụng Image Boundary không?
Loonuh

9

Đoạn mã sau sẽ lấy một raster đầu vào, lấy phạm vi của nó và chèn phạm vi đó vào một hình đa giác:

import arcpy

r = arcpy.Raster(in_raster)
point = arcpy.Point()
array = arcpy.Array()

corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]

cursor = arcpy.InsertCursor(fc)
feat = cursor.newRow()
for corner in corners:    
    point.X = getattr(r.extent, "%s" % corner).X
    point.Y = getattr(r.extent, "%s" % corner).Y
    array.add(point)
array.add(array.getObject(0))
print len(array)
polygon = arcpy.Polygon(array)
feat.shape = polygon
cursor.insertRow(feat)
array.removeAll()
del feat
del cursor

Bạn có thể chạy nó trong cửa sổ ArcMap Python bằng cách thiết lập in_rasterfcnhư vậy:

>>> fc = 'r_extent'
>>> in_raster = 'CaliCoast10mNED_HavCurvedPCS'

nơi r_extentcó một đa giác featureclass hiện có. Sau đó, chỉ cần sao chép mã và chạy nó. Tôi nhận được điều này:

nhập mô tả hình ảnh ở đây


1
Tôi đã sử dụng mã trên để làm tương tự cho một thư mục: gist.github.com/4162013
jeb

7

Bạn có thể sử dụng gdaltindex cho việc này: http://www.gdal.org/gdaltindex.html

Tuy nhiên, nó vẫn sẽ tạo ra các hình chữ nhật (ví dụ 4 + 1 điểm) trong cùng hệ thống tham chiếu với hình ảnh. Nhưng tôi tự hỏi liệu đó có thực sự là một vấn đề: hình ảnh của bạn lớn đến mức nào?


Vấn đề với gdaltindex, là nó tạo ra một đa giác hình chữ nhật cho mỗi hình ảnh. Tôi chỉ quan tâm đến các pixel giá trị khác không
Devdatta Tengshe

4

Tôi đã thử công cụ "Ranh giới hình ảnh" trong QGIS nhưng không thành công với một số trình quét.

Một tùy chọn khác phù hợp với tôi là: - 1. Chuyển đổi raster đầu vào thành một số kỹ thuật số bằng cách sử dụng tiện ích dòng lệnh gdal_translate.

gdal_translate -co nén = lzw -b 1 -ot byte -scale 1 1 inp.tif out.tif

Điều này sẽ tạo raster với các giá trị 1 ở mọi nơi inp.tif có các giá trị khác không.

  1. Sau đó, trong ArcMap, bạn có thể sử dụng công cụ "raster to polygon" để lấy đa giác (shapefile).

Shapefile đầu ra sẽ có các ranh giới không phải là tứ giác, với nhiều đỉnh đa giác, theo ranh giới thực của hình ảnh.


3

Nếu bạn quan tâm đến một giải pháp theo kịch bản, hãy thử lệnh gdal nearblack . Bạn cũng có thể sử dụng cờ - để lấy dữ liệu giới hạn bởi khoảng trắng. Bạn có thể đa giác hóa đầu ra để tạo ra một dấu chân không phải hình chữ nhật của dữ liệu raster.

##run nearblack
shellcmds = "nearblack -white -o " + outpath + " " + inpath
os.system(shellcmds)

##run polygonize
shellcmds = "gdal_polygonize.py " + outpath + " -f" + """ "ESRI Shapefile"  """ + outpath2 + " nearblack"
os.system(shellcmds)

1

Tôi tin rằng, trong thế giới ArcGIS, bạn có thể đạt được nó bằng công cụ Phân tích 3D \ Chuyển đổi \ Từ Raster \ Raster Domain .


Nó chỉ hoạt động trên dữ liệu 3D và thậm chí sau đó không cho kết quả như mong đợi. Hoàn toàn không hoạt động với Hình ảnh vệ tinh.
Devdatta Tengshe

Vâng, đó là sự thật. Tôi sẽ để lại câu trả lời cho người khác, để nhận thức được điều đó.
Tomek

0

Có một công cụ trong ArcGIS 3D Analyst gọi là Raster Domain , tạo ra dấu chân đa giác hoặc đa giác của các phần dữ liệu của bộ dữ liệu raster - và bỏ qua các ô NoData. Làm việc tuyệt vời cho tôi.


1
Chào mừng đến với trang web của chúng tôi! Bạn có thể giải thích câu trả lời của bạn khác với Tomek như thế nào không?
whuber

Tên miền raster đã làm việc cho tôi - cảm ơn sự giúp đỡ của bạn!
meryloo

0

Bạn có thể tạo một danh mục raster với tham chiếu không gian được chỉ định, thêm danh mục raster vào ArcMap và sau đó "Xuất dấu chân". Hãy nhớ rằng có tùy chọn để tạo một danh mục raster "UNMANAGED" để bạn không tạo một bản sao của mỗi bộ dữ liệu raster.

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.