Hướng dẫn raster to shapefile python - raster để shapefile trăn
Tôi có nhiều tệp raster (RGB, 255) và tôi muốn chuyển đổi các tệp raster đó thành Shapefiles nhưng tôi chỉ muốn khu vực đó như một đa giác nơi có dữ liệu, có nghĩa là tôi muốn loại trừ các giá trị bằng không Show
Như được minh họa dưới đây, tôi chỉ muốn đa giác của dải nơi có một số giá trị khác ngoài số không dưới dạng Shapefile. Tôi cần một giải pháp Python vì có quá nhiều tệp raster và thực hiện nó với QGIS hoặc ArcGIS không phải là một giải pháp khả thi. Mẫu raster: Tệp raster Nỗ lực 1: Cho đến nay tôi chỉ có thể nhận được hộp giới hạn của toàn bộ raster không phải là giải pháp lý tưởng nhưng nó hoạt động, sau khi tạo ra Shapefile từ các cửa hàng raster trong Python So far I am only able to get the bounding box of the whole raster which is not the ideal solution but it works, following Make shapefile from raster-bounds in Python
Nỗ lực 2: Sau đó, tôi đã thử giải pháp được đề cập tại cách đa giác raster thành đa giác định hình Then I tried the solution mentioned at How to polygonize raster to shapely polygons Tôi nghĩ trước tiên tôi sẽ cố gắng viết mảng rasterio-numpy như nó là và sau đó sẽ thử áp dụng các bộ lọc nhưng giải pháp này không hiệu quả với tôi, đã thử nhiều điều chỉnh nhưng không hoạt động. Đối với một raster mảng = hình dạng băng tần duy nhất: (8343, 11370) Nó mất mãi mãi để chạy và tôi không nhận được bất kỳ đầu ra nào
Nỗ lực 3: Sau đó, tôi đã thử áp dụng một bộ lọc vào một mảng để chỉ có những cái và số không trong raster để nó có thể giúp tạo đa giác dễ dàng hơn. Ở đây có một vấn đề rằng Len (MyPoly) = 13102, nhưng tôi nghĩ rằng nó sẽ chỉ là hai đa giác. Then I tried applying a filter to an array so that there will be only ones and zeros in the raster so it could make it easier for making polygons. Here there is an issue that len(mypoly) = 13102, but I thought it would be only two polygons.
Cho đến nay tôi đã trải qua các hướng dẫn và câu hỏi khác nhau về GIS SE nhưng tôi bị mắc kẹt mà không có bất kỳ giải pháp nào. Cũng không quá mạnh mẽ kiến thức lập trình và hiểu biết về các thư viện này, vì vậy có thể câu trả lời đã nằm trong các liên kết nêu trên nhưng tôi cần một chút trợ giúp với những gì tôi đang làm sai ở đây.
Trong các bài học trước, bạn đã phân loại lại một raster trong Python; Tuy nhiên, các cạnh của bộ dữ liệu raster của bạn không đồng đều.Python; however, the edges of your raster dataset were uneven. Trong bài học này, bạn sẽ học cách cắt ra raster - để tạo một đối tượng / tệp raster mới mà bạn có thể chia sẻ với các đồng nghiệp và / hoặc mở trong các công cụ khác như công cụ GIS trên máy tính để bàn như QGIS. Về cây trồng không gianCắt xén (đôi khi còn được gọi là cắt), là khi bạn tập hợp con hoặc làm cho một bộ dữ liệu nhỏ hơn, bằng cách loại bỏ tất cả dữ liệu bên ngoài khu vực cây trồng hoặc phạm vi không gian. Trong trường hợp này, bạn có một raster lớn - nhưng hãy để giả vờ rằng bạn chỉ cần làm việc với một tập hợp con nhỏ hơn của raster. Bạn có thể sử dụng chức năng 4 để xóa tất cả dữ liệu bên ngoài khu vực nghiên cứu của bạn. Điều này hữu ích như nó:
Nói chung khi bạn có thể, nó thường là một ý tưởng tốt để cắt dữ liệu raster của bạn! Để bắt đầu, hãy để tải các thư viện mà bạn sẽ cần trong bài học này. Tải thư viện
Mở các lớp raster và vectorTrong các bài học trước, bạn đã làm việc với một lớp raster trông giống như lớp bên dưới. Lưu ý rằng dữ liệu có cạnh không đều ở phía bên trái. Hãy để giả vờ cạnh này nằm ngoài khu vực nghiên cứu của bạn và bạn muốn loại bỏ nó hoặc cắt nó bằng cách sử dụng phạm vi khu vực nghiên cứu của bạn. Bạn có thể làm điều này bằng cách sử dụng hàm 5 trong 6.
Lớp vector mởĐể bắt đầu clip của bạn, hãy mở một lớp vector chứa mức độ cây trồng mà bạn muốn sử dụng để cắt dữ liệu của mình. Để mở ShapeFile, bạn sử dụng chức năng 7 từ Geopandas. Bạn sẽ tìm hiểu thêm về dữ liệu vector trong Python trong một vài tuần.
Tiếp theo, xem Hệ thống tham chiếu tọa độ (CRS) của cả hai bộ dữ liệu của bạn. Hãy nhớ rằng để thực hiện bất kỳ phân tích nào với hai bộ dữ liệu này cùng nhau, chúng sẽ cần phải ở trong cùng một CRS.
Biểu đồ của Shapefile mà bạn sẽ sử dụng để cắt dữ liệu CHM. Phạm vi không gian của một Shapefile đại diện cho "cạnh" địa lý hoặc vị trí là miền Bắc, Đông Nam và Tây xa nhất. Do đó, đại diện cho phạm vi địa lý tổng thể của đối tượng không gian. Nguồn hình ảnh: Colin Williams, neon.The spatial extent of a shapefile represents the geographic "edge" or location that is the furthest north, south east and west. Thus is represents the overall geographic coverage of the spatial object. Image Source: Colin Williams, NEON.Bây giờ bạn đã nhập Shapefile. Bạn có thể sử dụng chức năng 4 từ 6 để cắt dữ liệu raster bằng vector Shapefile. 0 Mô hình chiều cao tán với lớp phủ của cây trồng. Lưu ý hình ảnh này chỉ là một minh họa về những gì hai lớp trông giống nhau. Dưới đây bạn sẽ tìm hiểu cách nhập dữ liệu và che giấu nó thay vì sử dụng phương thức .read ().Clip dữ liệu raster bằng Rioxarray import rasterio import rasterio.features from shapely.geometry import shape ds = rasterio.open('20211124_092953_Data-001.jpg') ds2 = rasterio.open('20211124_092953_Data-001.vrt') band = ds2.read(1) # make a copy of original single band numpy array raster_array = band.copy() # replace multiple values with 1 to speed up the process of polgenizing raster_array = np.where(raster_array>0,1,raster_array) # numpy array binary mask loaded however needed maskShape = rasterio.features.shapes(raster_array.astype('uint8')) mypoly=[] for vec in maskShape: mypoly.append(vec[0]) 0Nếu bạn muốn cắt dữ liệu, bạn có thể sử dụng chức năng 1. Khi bạn cắt dữ liệu, sau đó bạn có thể xuất nó và chia sẻ nó với các đồng nghiệp. Hoặc sử dụng nó trong một phân tích khác.Để thực hiện clip bạn:
0 có một số tham số mà bạn có thể xem xét bao gồm cả
Dưới đây bạn cắt dữ liệu đến mức của AOI GeodataFrame được nhập ở trên. Dữ liệu sau đó được vẽ. 1
Cắt cuối cùng mô hình chiều cao tán cây.Tùy chọn - xuất khẩu raster mới cắtKhi bạn đã cắt dữ liệu của mình, bạn có thể muốn xuất nó sang một tệp địa lý mới, giống như bạn đã làm trong các bài học trước. Bạn cũng có thể sử dụng Rioxarray! 2 3 Cốt truyện cho thấy mô hình chiều cao tán cây cuối cùng của bạn.Thử thách tùy chọn: Thay đổi cây trồng theo các lớp thời gianTrong bài học trước, bạn đã tạo 2 lô:
Tạo hai lô giống nhau ngoại trừ lần này cắt mỗi người trong số các Rasters mà bạn đã vẽ bằng cách sử dụng Shapefile: 7Đối với mỗi lô, hãy chắc chắn:
Bạn sẽ bao gồm những lô này trong báo cáo cuối cùng của bạn vào tuần tới. |