As representações podem ser usadas para pontos XY de deslocamento espacial (dispersão) do aplicativo de mapeamento da Web?

8

Então, eu tenho uma questão de pontos com os mesmos xey que preciso exibir separadamente deles. Aqui está um histórico desse problema:

Eu tenho um banco de dados de incidentes que acontecem em um município. Esses incidentes se juntam a uma malha de pacotes com um relacionamento um para muitos. Portanto, vários incidentes ocorrem em uma parcela. Eu preciso que os incidentes sejam mostrados como uma classe de recurso de ponto para um aplicativo de mapeamento da web. Então, adicionei o centróide xey do pacote associado e criei a classe de recurso de ponto. Isso resultou em vários pontos sendo desenhados um sobre o outro, como mostrado nesta figura: Figura A

Eu converti a simbologia em uma representação com um intervalo mínimo de 10 metros entre os pontos, o que resultou exatamente no que eu estava procurando, como mostra a figura: Quadro B

Agora isso funciona muito bem no ArcMap, mas, quando enviados ao meu aplicativo de mapeamento da web, os pontos só podem ser identificados nos xey originais. Portanto, quando você identifica pontos espaçados, não obtém resultado, mas quando identifica o centro da parcela, obtém vários resultados.

O que eu gostaria que acontecesse é, de alguma forma, retornar o xy dessas representações e mudar o xy de cada ponto para isso. Eu tentei algumas soluções de programação, mas ainda não consegui resolvê-lo.

Cody Brown
fonte

Respostas:

6

Acabei encontrando uma maneira muito boa de programação para trabalhar com isso. Eu usei uma matriz para alterar xey na tabela antes de converter a tabela em ponto. Essa matriz simplesmente colocou os pontos ao redor do centróide da parcela. Aqui está o código:

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)

Aqui está como ficou: Imagem C

Espero que isso ajude mais alguém. Se você tiver alguma dúvida, me avise.

Cody Brown
fonte