Trích xuất các giá trị đến các điểm mà không cần phân tích không gian ArcGIS?


8

Tôi có một DEM raster & nhiều điểm. Tôi muốn xác định độ cao DEM tại mỗi điểm. Khác với việc kiểm tra DEM thủ công tại mỗi điểm, (rất tốn thời gian với rất nhiều điểm) có cách nào để thực hiện việc này mà không cần truy cập vào công cụ Giá trị trích xuất phân tích không gian? Tôi có quyền truy cập vào Phân tích 3d nếu điều đó có ích.


Điều này có thể hữu ích: gis.stackexchange.com/questions/46893/ Kẻ
Aaron

Câu trả lời:


6

Thêm thông tin bề mặt của nhà phân tích 3D sẽ thêm trường Z vào dữ liệu vectơ của bạn với giá trị dữ liệu từ lớp raster chồng chéo:

Nội suy các thuộc tính độ cao bề mặt cho các tính năng điểm, đa điểm và đa tuyến.

Đó là phiên bản v10, tôi không nắm bắt được phiên bản ArcGIS nào bạn đang sử dụng.


10

Kịch bản:

import arcpy, traceback, sys, os

pntFile=arcpy.GetParameterAsText(0)
rasters=arcpy.GetParameterAsText(1)

rasters=rasters.split(';')
theFields=[x.name.lower() for x in arcpy.ListFields(pntFile)]
result=arcpy.GetCount_management(pntFile)
nF=int(result.getOutput(0))
p=arcpy.Point()
try:
    def showPyMessage():
        arcpy.AddMessage(str(time.ctime()) + " - " + message)
    for raster in rasters:
                desc=arcpy.Describe(raster)
                theFLD=raster.lower()
                arcpy.AddMessage("Sampling "+theFLD)
                if not(theFLD in theFields):
                        try:arcpy.AddField_management(pntFile, theFLD, "FLOAT")
                        except:
                                aF=raster.split(os.sep)[-1]
                                theFLD=aF.split(".")[0]
                                theFLD="F"+theFLD
                                arcpy.AddField_management(pntFile, theFLD, "FLOAT")
                arcpy.SetProgressor("step", "", 0, nF)
                with arcpy.da.UpdateCursor(pntFile,("SHAPE@XY",theFLD)) as rows:
                        for row in rows:
                                p.X,p.Y=row[0]
                                myArray = arcpy.RasterToNumPyArray(raster,p,1,1,-9999)
                                row[1]=myArray[0,0]
                                rows.updateRow(row)
                                arcpy.SetProgressorPosition()
                        del row,rows
except:
    message = "\n*** PYTHON ERRORS *** "; showPyMessage()
    message = "Python Traceback Info: " + traceback.format_tb(sys.exc_info()[2])[0]; showPyMessage()
    message = "Python Error Info: " +  str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n"; showPyMessage()

Giao diện:

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

Thông số:

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

để làm việc từ mxd. Đặt tên raster (s) ngắn duy nhất trong bảng nội dung. Script sẽ tạo cùng một trường tên và cố gắng điền nó với các giá trị ô.

Nó chậm, do đó tôi sử dụng nó với ít hơn 1000 điểm


Xin chào, cảm ơn về kịch bản. Tôi đã thử chạy nó một vài lần nhưng nó vẫn báo lỗi này: "dòng 27, trong <mô-đun> cho hàng theo hàng: Thứ ba ngày 17 tháng 12 năm 2015: >: Một cột được chỉ định không tồn tại. " có ý kiến ​​gì không cảm ơn.
Matt

Bạn gọi raster này trong bảng nội dung mxd là gì?
FelixIP

Tôi đã thử DEMH và DEMH_copy dưới dạng tên raster.
Matt

Bạn có thể thấy trường demh trong bảng shapefile sau sự cố không?
FelixIP

trường "demh_copy_tif" được thêm vào bảng thuộc tính nhưng với các giá trị NULL.
Matt

4

Bạn có thể làm điều này với Môi trường mô hình không gian địa lý miễn phí của Hawthorne , (GME, trước đây gọi là Công cụ của Hawth). Có một công cụ trong đó, Intersect Points With Raster , đúng như tên gọi của nó, hoạt động giống như công cụ Intersect trong ArcGIS nhưng cho phép bạn giao một lớp điểm với raster, như công cụ Extract Values ​​to Points. Bạn cũng có thể áp dụng truy vấn SQL cho lớp điểm của mình để chỉ trích xuất các giá trị raster cho một tập hợp con các điểm. Bạn cũng sẽ cần cài đặt hoặc nâng cấp R trên PC và GME (nó phụ thuộc vào ArcGIS nhưng nó có thể chạy độc lập với phiên ArcGIS).


Tại thời điểm này, bạn cũng có thể sử dụng R. Bao gồm thêm thư viện và đọc dữ liệu, chỉ mất khoảng 4 dòng mã để thực hiện việc này và bạn có thể truy vấn dữ liệu một cách nhanh chóng bằng cú pháp chỉ mục.
Jeffrey Evans

1

Một tùy chọn khác để trích xuất các giá trị raster để trỏ shapefile là sử dụng QGIS, một phần mềm nguồn mở miễn phí. Từ trình quản lý plugin trong tải xuống QGIS Plugin: Công cụ lấy mẫu điểm , có thể trích xuất nhiều giá trị raster để shapefile tương tự như Trích xuất nhiều giá trị thành các điểm yêu cầu mở rộng Spatial Analyst trong ArcGIS.

Công cụ này hoạt động hoàn hảo nếu hình chiếu của dữ liệu raster (s) và shapefile giống nhau. Làm việc với các phép chiếu khác nhau cho (các) dữ liệu raster và shapefile sẽ tạo ra một shapefile với các cột trống của các giá trị 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.