Làm cách nào để phân chia điểm theo đa giác bằng ArcGIS Desktop?


8

Tôi đang tìm cách phân chia điểm theo lớp tính năng đa giác của quận. Hình ảnh đính kèm cho thấy hai lớp đối tượng: một lớp gồm các điểm và lớp kia là lớp đối tượng đa giác của hạt. Công cụ phân chia sẽ là lý tưởng nếu nó cho phép điểm. Tôi muốn một đầu ra sạch mà không cần thêm các trường vào các thuộc tính điểm. Ngoài ra, tôi muốn có tên quận từ lớp tính năng đa giác xác định các lớp đối tượng điểm mới (ví dụ: Kiowa, Clark, Comanche). Tôi đánh giá cao bất kỳ giải pháp và lời khuyên.

Trong ví dụ này, sản phẩm cuối cùng phải là các lớp tính năng ba điểm có tên là "Kiowa", "Clark" và "Comanche" được sản xuất từ ​​một, lớp tính năng điểm lớn hơn. Một giải pháp tự động sẽ là lý tưởng, vì tôi có nhiều, rất nhiều FC điểm được hợp nhất qua hàng chục quận để làm việc (xấp xỉ với trạng thái của KS).

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


3
Hoạt động này được người dùng phần mềm ESRI biết đến như là một phép nối không gian . Đồng thời xem gis.stackexchange.com/questions/11047gis.stackexchange.com/questions/23398 .
whuber

@whuber Tôi hình dung ít nhất 5 bước với cách tiếp cận tham gia không gian: 1) tham gia không gian 2) chọn điểm dựa trên quận 3) tạo FC mới dựa trên lựa chọn, 4) Đổi tên FC dựa trên Quận 5) Xóa các trường mới (ví dụ: "Join_count "). Tôi cần tìm cách tự động hóa quy trình (một trong những liên kết của bạn đầy hứa hẹn). Tôi cũng hy vọng rằng tôi đang xem xét một cách tiếp cận đơn giản hơn tương tự như việc "chia" sẽ thực hiện cho các lớp đối tượng đa giác. Tôi sợ rằng tôi có thể phải đi con đường con trỏ.
Aaron

Puis-je avoir le lien en langue française?

Aaron, bình luận của bạn không hoàn toàn phù hợp với câu hỏi của bạn. Câu hỏi không xuất hiện để chỉ ra rằng bạn muốn có một FC đầu ra cho mỗi hạt. Các bước khác là không cần thiết: một lần và mãi mãi, tạo một bản sao của quận FC có thuộc tính duy nhất là tên quận. Các không gian tham gia để điểm của bạn kết thúc công việc. Nếu trước tiên bạn đã hợp nhất tất cả các bộ dữ liệu điểm (nói chung là thiết kế cơ sở dữ liệu thông minh) thì toàn bộ dự án của bạn có thể được hoàn thành chỉ trong hai bước: (1) nối không gian (2) chia đầu ra theo tên quận: xem câu trả lời của blah238.
whuber

@KhalilouWAGUE le lien de la khớp nối không gian en fr help.arcgis.com/fr/arcgisdesktop/10.0/help/index.html#//
geogeek

Câu trả lời:


4

Sau khi sử dụng Spatial Join hoặc Intersect để đưa thuộc tính tên Quận vào từng điểm, hãy thử sử dụng công cụ Split Layer by Attribution của Dan Patterson có sẵn trên Thư viện công cụ mô hình và công cụ mã hóa .

Ngoài ra, bạn có thể sử dụng ModelBuilder để tự động hóa việc này bằng cách sử dụng một cách tiếp cận khác liên quan đến Chọn lớp theo vị trí (nhấp vào hình thu nhỏ cho hình ảnh đầy đủ).

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

Được nâng lên từ chuỗi này trên các diễn đàn ESRI: Chọn hàng loạt theo vị trí và xuất Shapefiles


3

Dễ dàng hơn nhiều để sử dụng lệnh giao nhau.
Tắt các trường không mong muốn.
1. Giao nhau với một đầu ra mới.
2. Tham gia đầu ra với oid ban đầu.
3. Tính toán một trường mới với tên cnty.

Kiểm tra ettools cho một số phiên bản nâng cao của tham gia không gian và phân chia theo vị trí.


2

Từ những gì tôi đọc được, tôi sẽ chỉ chạy một lớp phủ (Công cụ phân tích ArcToolbox - Lớp phủ - và Nhận dạng, Giao lộ hoặc Tham gia không gian) của các điểm của bạn bằng bộ dữ liệu đa giác của quận. Trong ArcMap, bạn có thể giới hạn các trường được hiển thị trong lớp quận thành trường có tên quận và chỉ trường đó mới được thêm vào kết quả. Nếu thậm chí trường được thêm đó quá nhiều, hãy tính các giá trị của nó vào trường khớp trong bảng điểm và sau đó xóa trường đã thêm.


2

Sử dụng Python, bạn có thể lặp "Chọn lớp theo vị trí" để lấy các điểm chồng lấp lên từng quận, sau đó lưu nó dưới dạng Shapefile. Nó sẽ là một cái gì đó như thế này:

import arcgisscripting
# starts geoprocessing
gp = arcgisscripting.create()
gp.OverWriteOutput = 1

# Variable iniciation
points = u"Path for your point shape"
counties = u"Path for counties shape"
outDir = u"path for output directory"

#Load points as a layer
gp.MakeFeatureLayer(points, "points")

# Go county by county
rows = gp.searchcursor(counties)
row = rows.next()

# loop County by county overlap
while row.countyName: #adapt to your countie table of attributes
    # Make a layer from the feature class
    gp.MakeFeatureLayer(counties, "counties lyr", "[countieName]='" + row.countieName + "'")
    # Select all points that intersect the current countie polygon
    gp.SelectLayerByLocation(points, "intersect", "counties_lyr", 0, "new_selection")
    outSHP = outDir + row.counties + u".shp"
    gp.CopyFeatures_management(points, outSHP)
    print(outSHP)
    row = rows.next()
 # End of loop

 del rows, row, gp

 #END

Tôi chưa kiểm tra nó, Bạn có thể phải điều chỉnh nó cho trường hợp của bạn.

Chỉnh sửa: Đã thay đổi Chọn_analysis bằng CopyFeatures_man quản lý theo lời khuyên @ blah238.


1
Tôi có thể sẽ thay đổi Chọn_analysis thành CopyFeatures_man quản lý hoặc tương tự - bạn đã thực hiện lựa chọn để nó là dự phòng.
blah238

Bạn đã đúng, tho kết quả là như nhau, tôi đã chỉnh sửa nó để làm cho nó rõ ràng hơn.
Alexandre Neto

Cảm ơn kịch bản này. Có cách nào để làm điều này ngoài bộ nhớ cục bộ? Vấn đề tôi gặp phải với bộ dữ liệu của mình là 7,5 triệu điểm không muốn được thêm dưới dạng một lớp.
Aaron

Bạn sẽ thêm dưới dạng một lớp chỉ một phần của các điểm (từ mỗi hạt). Chạy tập lệnh bên ngoài ArcMap, bạn thậm chí sẽ không cần hiển thị chúng để nó có thể hoạt động theo bất kỳ cách nào. Nhưng bạn có thể thử một điều khác. Bắt đầu bằng cách tạo một không gian (hoặc giao nhau) giữa các điểm và đa giác, điều này sẽ tạo ra một tệp tạm thời với thông tin điểm + tên quận. Sau đó, bạn lặp lại các hạt và sử dụng Chọn_analysis (SpatialJoint_temp, outSHP, "[CountieName] = '" + row.countieName + "'"). Tôi nghĩ rằng nó cũng sẽ hoạt động, nhưng tôi không biết nó hiệu quả hơn hay kém hơn giải pháp đầu tiên.
Alexandre Neto

0

Hiện tại có một video hướng dẫn eLearning (không miễn phí, nhưng tương đối rẻ) được gọi là Sử dụng con trỏ ArcPy để phân chia theo thuộc tính và vị trí bao gồm hiển thị cách:

Viết tập lệnh Python để phân chia một lớp đối tượng bằng lớp tính năng đa giác thành một lớp đối tượng cho mỗi tính năng được tìm thấy trong mỗi vị trí đa giác của nó

Tôi nghĩ rằng nó giải quyết các yêu cầu của câu hỏi này.

Tuyên bố miễn trừ trách nhiệm : Tôi là tác giả và người dẫn chương trình video hướng dẫn eLearning này

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.