¿Se pueden utilizar las representaciones para compensar espacialmente (dispersar) los puntos XY para la aplicación de mapeo web?


8

Así que tengo un problema con los puntos con los mismos x e y que necesito mostrar por separado. Aquí hay algunos antecedentes de este problema:

Tengo una base de datos de incidentes que ocurren en un condado. Estos incidentes se unen a una estructura de paquetes con una relación de uno a muchos. Por lo tanto, se producen varios incidentes en una parcela. Necesito que los incidentes se muestren como una clase de entidad de puntos para una aplicación de mapeo web. Así que agregué el centroide x e y de la parcela asociada y creé la clase de entidad de punto. Esto resultó en varios puntos dibujados uno encima del otro como se muestra en esta imagen: Cuadro A

Convertí la simbología en una representación con un espacio mínimo de 10 metros entre puntos que resultó exactamente lo que estaba buscando como se muestra en esta imagen: Imagen B

Ahora, esto funciona muy bien en ArcMap, pero cuando se carga en mi aplicación de mapeo web, los puntos solo se pueden identificar en sus xey originales. Entonces, cuando identifica puntos que han sido espaciados, no obtiene ningún resultado, pero cuando identifica el centro de la parcela, obtiene varios resultados.

Lo que me gustaría que sucediera es devolver de alguna manera la xy de estas representaciones y cambiar xy de cada punto a eso. He probado algunas soluciones de programación, pero aún no he podido resolverlo.

Respuestas:


6

Terminé encontrando una muy buena forma de programación para trabajar con esto. Utilicé una matriz para alterar las x e y en la tabla antes de convertir la tabla a punto. Esta matriz simple coloca los puntos alrededor del centroide de la parcela. Aquí está el 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)

Así es como terminó pareciendo: Imagen C

Espero que esto ayude a alguien más. Si tiene alguna pregunta, hágamelo saber.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.