7 votos

¿Etiquetar una clase de relación de uno a varios utilizando ArcGIS for Desktop?

He creado una clase de característica con una relación de uno a muchos con una tabla.

Un punto muchas clases.

Sin embargo, quiero etiquetar el punto con los atributos de las clases.

Esri escribió VB solución pero no es compatible con la versión 10.1.

8voto

Geog Puntos 1604

he encontrado la respuesta aquí en el blog de wolf mapper - haga clic con el botón derecho del ratón en el shapefile de puntos y seleccione "Propiedades" > pestaña "Etiquetas" > botón "Expresión ". En la ventana "Expresión de la etiqueta" seleccione "Python" como "Parser:" y haga clic en la casilla de verificación junto a "Avanzado". Inserte el siguiente código:

    def FindLabel ( [LocID] ):

   import arcpy
   myDataTable = "data table" #insert data table name
   myComponent = "Arsenic" #insert component name
   myScreeningLevel = "32" #insert exceedance  level
   myQuerySelect = '"location_id"' + " = '" + [LocID] + "' and " + '"component"' + " like '" + myComponent + "%'"
   myFieldsQuerySelect = "OBJECTID; location_id; component; top_depth_inches; bottom_depth_inches; result; units"
   mySortQuerySelect = "top_depth_inches"
   myText = ""

   mxd = mxd = arcpy.mapping.MapDocument("CURRENT")

   for table in arcpy.mapping.ListTableViews(mxd):
     if table.name == myDataTable:
       rows = arcpy.SearchCursor(table, myQuerySelect, "", myFieldsQuerySelect, mySortQuerySelect)
       myText = "<BOL>" + [LocID] + "</BOL>\n" + "<ITA>" + myComponent + "</ITA>" + "\n"
       currentState = ""
       for row in rows:
         if currentState != row.OBJECTID:
           currentState = row.OBJECTID
         if float(row.result) >= float(myScreeningLevel):
           myText = myText + str(int(row.top_depth_inches)) + '&quot;-' + str(int(row.bottom_depth_inches)) + "&quot; <BOL><CLR red = '255'>" + str(row.result) + "</CLR></BOL> " + str(row.units) + "\n"
         else:
           myText = myText + str(int(row.top_depth_inches)) + '&quot;-' + str(int(row.bottom_depth_inches)) + '&quot; ' + str(row.result) + " " + str(row.units) + "\n"

       return myText

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X