表現を使用して、WebマッピングアプリケーションのXYポイントを空間的にオフセット(分散)できますか?


8

したがって、xとyが同じで、ポイントとは別に表示する必要があるポイントの問題が少しあります。この問題の歴史は次のとおりです。

私は郡で起こった事件のデータベースを持っています。これらのインシデントは、1対多の関係でパーセルファブリックに加わります。したがって、1つの区画で複数のインシデントが発生します。インシデントをWebマッピングアプリケーションのポイントフィーチャクラスとして表示する必要があります。そこで、関連する区画のxとyの重心を追加し、ポイントフィーチャクラスを作成しました。これにより、次の図に示すように、いくつかの点が互いに重なり合って描画されます。 写真A

シンボルを、ポイント間に最小10メートルのギャップがある表現に変換しました。これにより、この画像に示すように、まさに私が探していたものが得られました。 写真B

これはArcMapでうまく機能しますが、私のWebマッピングアプリにアップロードすると、ポイントは元のxとyでしか識別できません。したがって、間隔をあけたポイントを特定しても結果は得られませんが、パーセルの中心を特定すると、いくつかの結果が得られます。

私が起こりたいのは、これらの表現のxyを何らかの形で返し、各点のxyをそれに変更することです。いくつかのプログラミングソリューションを試しましたが、まだ解決できていません。

回答:


6

私は結局これを扱うためのかなり良いプログラミング方法を見つけました。テーブルをポイントに変換する前に、配列を使用してテーブルのxとyを変更しました。この配列は、単純に小包の重心の周りにポイントを配置しました。コードは次のとおりです。

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)

最終的には次のようになります。 画像C

これが他の人の役に立つことを願っています。質問がある場合はお知らせください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.