Les représentations peuvent-elles être utilisées pour compenser spatialement (disperser) les points XY pour l'application de cartographie Web?


8

J'ai donc un petit problème de points avec les mêmes x et y que je dois afficher séparément d'eux-mêmes. Voici un historique de ce problème:

J'ai une base de données des incidents qui se produisent dans un comté. Ces incidents se joignent à un atelier parcellaire avec une relation un-à-plusieurs. Ainsi, plusieurs incidents se produisent sur un même colis. J'ai besoin que les incidents soient affichés en tant que classe d'entités ponctuelles pour une application de cartographie Web. J'ai donc ajouté le centroïde x et y de la parcelle associée et créé la classe d'entités ponctuelles. Cela a entraîné plusieurs points dessinés les uns sur les autres, comme indiqué sur cette image: Image A

J'ai converti la symbologie en une représentation avec un écart minimum de 10 mètres entre les points, ce qui a donné exactement ce que je cherchais comme le montre cette image: Image B

Maintenant, cela fonctionne très bien dans ArcMap, mais lorsqu'ils sont téléchargés sur mon application de cartographie Web, les points ne peuvent être identifiés qu'à leur x et y d'origine. Ainsi, lorsque vous identifiez des points qui ont été espacés, vous n'obtenez aucun résultat, mais lorsque vous identifiez le centre de la parcelle, vous obtenez plusieurs résultats.

Ce que j'aimerais arriver, c'est de rendre en quelque sorte le xy de ces représentations et de changer le xy de chaque point en cela. J'ai essayé quelques solutions de programmation, mais je n'ai pas encore pu le résoudre.

Réponses:


6

J'ai fini par trouver une bonne méthode de programmation pour travailler avec cela. J'ai utilisé un tableau pour modifier les x et y dans la table avant de convertir la table en point. Ce tableau a simplement placé les points autour du centre de gravité de la parcelle. Voici le 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)

Voici à quoi cela ressemblait: Image C

J'espère que cela aide quelqu'un d'autre. Si vous avez des questions, faites-le moi savoir.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.