Các đại diện có thể được sử dụng để bù đắp không gian (phân tán) các điểm XY cho Ứng dụng Bản đồ Web không?


8

Vì vậy, tôi có một chút vấn đề về các điểm có cùng x và y mà tôi cần hiển thị riêng với chúng. Đây là một số lịch sử của vấn đề này:

Tôi có một cơ sở dữ liệu về các sự cố xảy ra trên một quận. Những sự cố này tham gia vào một mảnh vải có mối quan hệ một-nhiều. Vì vậy, một số sự cố xảy ra trên một bưu kiện. Tôi cần các sự cố được hiển thị dưới dạng lớp tính năng điểm cho ứng dụng bản đồ web. Vì vậy, tôi đã thêm x và y centroid của bưu kiện liên quan và tạo lớp tính năng điểm. Điều này dẫn đến một số điểm được vẽ chồng lên nhau như trong hình này: Hình A

Tôi đã chuyển đổi hệ thống ký hiệu thành biểu diễn với khoảng cách tối thiểu 10 mét giữa các điểm dẫn đến kết quả chính xác những gì tôi đang tìm kiếm như trong hình này: Hình B

Bây giờ điều này hoạt động rất tốt trong ArcMap, nhưng khi được tải lên ứng dụng bản đồ web của tôi, các điểm chỉ có thể được xác định tại đó là x và y gốc. Vì vậy, khi bạn xác định các điểm đã được đặt cách nhau, bạn sẽ không nhận được kết quả nào, nhưng khi bạn xác định trung tâm của bưu kiện, bạn sẽ nhận được một số kết quả.

Những gì tôi muốn xảy ra là bằng cách nào đó trả lại xy của các đại diện này và thay đổi xy của từng điểm cho điều đó. Tôi đã thử một vài giải pháp lập trình, nhưng tôi chưa thể giải quyết nó.

Câu trả lời:


6

Tôi cuối cùng đã tìm thấy một cách lập trình khá tốt để làm việc với điều này. Tôi đã sử dụng một mảng để thay đổi x và y trong bảng trước khi chuyển đổi bảng thành điểm. Mảng này đơn giản đặt các điểm xung quanh tâm của bưu kiện. Đây là mã:

for x in output:                  # output is a list of unique ID's of the table
    expr =  "UID like '" + str(x) + "'")
    Z = 0
    B = 1
    X = [0, 0,10,10, 10,  0,-10,-10,-10]
    Y = [0,10,10,00,-10,-10,-10,  0, 10]
    rows = arcpy.UpdateCursor("Table", expr)
    for row in rows:
        row.Northing = row.Northing + (Y[Z]*B)
        row.Easting = row.Easting + (X[Z]*B)
        Z = Z + 1
        if Z == 9:
            Z = 0
            B = B + 1
        rows.updateRow(row)

Đây là những gì nó đã kết thúc giống như: Hình C

Tôi hy vọng điều này sẽ giúp bất cứ ai khác. Nếu bạn có một số câu hỏi cho tôi biết.

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.