Können Darstellungen verwendet werden, um XY-Punkte für Web-Mapping-Anwendungen räumlich zu versetzen (zu verteilen)?


8

Ich habe also ein Problem mit Punkten mit demselben x und y, die ich getrennt von sich selbst anzeigen muss. Hier ist eine Geschichte dieser Ausgabe:

Ich habe eine Datenbank mit Vorfällen, die in einem Landkreis auftreten. Diese Vorfälle verbinden sich zu einer Paketstruktur mit einer Eins-zu-Viele-Beziehung. Auf einem Paket ereignen sich also mehrere Vorfälle. Ich muss die Vorfälle als Punkt-Feature-Class für eine Web-Mapping-Anwendung anzeigen. Also habe ich den x- und y-Schwerpunkt des zugehörigen Pakets hinzugefügt und die Punkt-Feature-Class erstellt. Dies führte dazu, dass mehrere Punkte übereinander gezeichnet wurden, wie in diesem Bild gezeigt: Bild A.

Ich habe die Symbologie in eine Darstellung mit einem Mindestabstand von 10 Metern zwischen Punkten umgewandelt, was genau das ergab, wonach ich gesucht habe, wie in diesem Bild gezeigt: Bild B.

Dies funktioniert in ArcMap hervorragend, aber beim Hochladen in meine Web-Mapping-App können die Punkte nur an den ursprünglichen x und y identifiziert werden. Wenn Sie also Punkte identifizieren, die beabstandet sind, erhalten Sie kein Ergebnis. Wenn Sie jedoch die Mitte des Pakets identifizieren, erhalten Sie mehrere Ergebnisse.

Was ich gerne tun würde, ist, das xy dieser Darstellungen irgendwie zurückzugeben und xy jedes Punktes dahin zu ändern. Ich habe einige Programmierlösungen ausprobiert, konnte sie jedoch noch nicht lösen.

Antworten:


6

Am Ende fand ich einen ziemlich guten Programmierweg, um damit zu arbeiten. Ich habe ein Array verwendet, um das x und y in der Tabelle zu ändern, bevor ich die Tabelle in point konvertierte. Dieses Array platzierte einfach die Punkte um den Schwerpunkt des Pakets. Hier ist der Code:

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)

So sah es letztendlich aus: Bild C.

Ich hoffe das hilft jemand anderem. Wenn Sie Fragen haben, lassen Sie es mich wissen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.