Más

¿Mostrando la tabla de atributos de las entidades seleccionadas usando ArcPy?

¿Mostrando la tabla de atributos de las entidades seleccionadas usando ArcPy?


¿Hay alguna forma de mostrar la tabla de atributos de las entidades seleccionadas usando arcpy? ¿Quizás en el módulo de mapeo?

Me gustaría poder seleccionar algunas características y luego tener un botón de complemento que muestre la tabla de atributos solo para las características seleccionadas.

Entiendo que esto parece rudimentario para la gente de SIG, pero estoy tratando de satisfacer las necesidades de una solicitud de trabajo específica.

Ahora puedo hacer esto usando tkinter y solo mostrando los atributos necesarios, pero es un poco complicado y no es estable. Lo sé, el problema de estabilidad es un problema conocido con el uso de tkinter en paralelo con ArcGIS. Entonces ... espero poder mostrar la tabla de atributos en un "pequeño botón ordenado con el logotipo de la empresa" automatizado.


No estoy seguro de cómo hacer esto en Python además de usar ArcObjects directamente a través de la interoperabilidad COM, que no es el enfoque más agradable. Es mucho más fácil de hacer en .NET, aunque por simplicidad querrá el SDK y no está disponible para descargar. Creo que viene con los medios de instalación de ArcGIS Desktop. Y definitivamente con una licencia EDN, por supuesto, pero es de esperar que una licencia de escritorio básica lo incluya.

Para hacer esto en .NET, deberá crear un complemento con un botón. Dentro del botón, deberá obtener las características seleccionadas y las capas que las contienen, luego crear una TableWindow, asignarle la capa y la aplicación y mostrar la ventana. Son aproximadamente 60 líneas de código para escribir después de generar todo lo demás a partir de las plantillas de ESRI. Si no tiene el SDK, aún puede hacer esto, pero creo que el desarrollo de complementos necesita el SDK, por lo que tendría que seguir la ruta de extensión de ArcObjects (extender ICommand, etc.) sin ninguna de las plantillas para ayudar.

Si puede seguir la ruta del complemento, el siguiente código abrirá la tabla de atributos para todas las capas en el mapa que tienen selecciones y las configurará todas para mostrar solo su selección al llamar a ShowTableWindowForAllSelected ():

privado IEnumerable GetFeatureClassesWithSelectedFeatures () {Selección IEnumFeature = ArcMap.Document.ActiveView.FocusMap.FeatureSelection como IEnumFeature; selection.Reset (); Función IFeature; Lista clases = nueva lista(); while ((feature = selection.Next ())! = null) {IFeatureClass fClass = feature.Class as IFeatureClass; if (fClass! = null &&! classes.Contains (fClass)) {classes.Add (fClass); }} clases de retorno; } privado IEnumerable GetFeatureLayersWithSelectedFeatures () {// obtén un enumerador solo para capas de características UID uid = new UIDClass (); uid.Value = typeof (IFeatureLayer) .GUID.ToString ("B"); IEnumLayer layerEnum = ArcMap.Document.ActiveView.FocusMap.get_Layers (uid: uid); // cargarlos en un diccionario con su clase de entidad layerEnum.Reset (); I capa de capa; Diccionario capas = nuevo diccionario(); while ((layer = layerEnum.Next ())! = null) {IFeatureLayer fLayer = (IFeatureLayer) capa; capas.Añadir (fLayer, fLayer.FeatureClass); } // obtener clases de entidades con entidades seleccionadas y unirse a las capas de entidades en el mapa IEnumerable fClasses = GetFeatureClassesWithSelectedFeatures (); IEnumerable capasConFeccionesSeleccionadas = capas.Únase (fClasses, layerEntry => layerEntry.Value, fClass => fClass, (layerEntry, fClass) => layerEntry.Key) .Distinct () return capasWithSelectedFeatures; } Private void ShowTableWindowForAllSelected () {ITableWindow2 attrWindow = null; // ITableWindow2 windowFinder = new TableWindowClass (); IEnumerable capas = GetFeatureLayersWithSelectedFeatures (); foreach (capa IFeatureLayer en capas) {// attrWindow = windowFinder.FindViaLayer (capa); if (foundWindow == null) {foundWindow = new TableWindowClass (); foundWindow.Layer = capa; foundWindow.Application = ArcMap.Application; foundWindow.TableSelectionAction = esriTableSelectionActions.esriSelectFeatures; foundWindow.ShowAliasNamesInColumnHeadings = true; } if (! foundWindow.IsVisible) foundWindow.Show (verdadero); // esto parece que debe hacerse después de que la ventana sea visible o se comporte un poco extraño foundWindow.ShowSelected = true; }}

Si desea utilizar ventanas de atributos existentes en lugar de abrir nuevas cada vez que se presiona el botón, descomente las dos líneas usando 'windowFinder'.


Problemas con las herramientas de suma ponderada y superposición ponderada

No puedo ejecutar una suma ponderada o superposición porque recibo el mensaje de que no tengo el tamaño de celda configurado, pero de hecho lo tengo configurado. Aquí está el python para todo mi proceso (copiado de un modelo), y pueden ver que lo configuré. ¿Alguien más tiene este problema?

. # Proceso: el crimen llama densidad del núcleo

. arcpy.gp.KernelDensity_sa (PolytoPointCensus, "ZCrimeCalls", ZCrimeCalls, "50", "5280", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR")

. # Proceso: Densidad Kernel de Pobreza

. arcpy.gp.KernelDensity_sa (PolytoPointCensus__3_, "ZPovRate", ZPoverty_Rate, "50", "5280", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR")

. # Proceso: Densidad Kernel de Vivienda Pública

. arcpy.gp.KernelDensity_sa (PolytoPointCensus__2_, "ZPublicHousing", ZPublic_Housing, "50", "5280", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR")

. arcpy.env.mask = "Límite municipal de Little Rock"

. arcpy.gp. VALOR 0.33 ", Weighte_ZCri1)

Runtime error Traceback (última llamada más reciente): Archivo "& ltstring & gt", línea 36, ​​en & ltmodule & gt Archivo "c: archivos de programa (x86) arcgis desktop10.4 arcpy arcpy geoprocessing _base.py", línea 506 , en & ltlambda & gt return lambda * args: val (* gp_fixargs (args, True)) ExecuteError: ERROR 010050: El tamaño de celda no está configurado. No se pudo ejecutar (WeightedSum).

por DanPatterson_Re cansado

El modelo está un poco desordenado, lo que sucede cuando exporta un modelo a un script sin reorganizar los parámetros y funciones. Creo que el problema reside hacia el final del guión. Comentaría estas líneas cerca de la parte inferior.

y mueva esto cerca de la parte superior debajo. importar arcpy. arcpy.env.cellSize = "50"

No soy tan bueno en Python. pero asi Si es así, todavía falló. También falla cuando ejecuto las herramientas independientes. ¡Y gracias por tu respuesta!

. # Proceso: el crimen llama densidad del núcleo

. arcpy.gp.KernelDensity_sa (PolytoPointCensus, "ZCrimeCalls", ZCrimeCalls, "50", "5280", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR")

. # Proceso: Densidad Kernel de Pobreza

. arcpy.gp.KernelDensity_sa (PolytoPointCensus__3_, "ZPovRate", ZPoverty_Rate, "50", "5280", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR")

. # Proceso: Densidad Kernel de Vivienda Pública

. arcpy.gp.KernelDensity_sa (PolytoPointCensus__2_, "ZPublicHousing", ZPublic_Housing, "50", "5280", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR")

. arcpy.env.mask = "Límite municipal de Little Rock"

. arcpy.gp. VALUE 0.33 ", Weighte_ZCri1)

Runtime error Traceback (última llamada más reciente): Archivo "& ltstring & gt", línea 35, en & ltmodule & gt Archivo "c: archivos de programa (x86) arcgis desktop10.4 arcpy arcpy geoprocessing _base.py", línea 506 , en & ltlambda & gt return lambda * args: val (* gp_fixargs (args, True)) ExecuteError: ERROR 010050: El tamaño de celda no está configurado. No se pudo ejecutar (WeightedSum).

por DanPatterson_Re cansado

la densidad del kernel necesita números, es decir, KernelDensity ("rec_sites.shp", "NONE", 45, 1200, "SQUARE_KILOMETERS")

¿Qué versión de arcmap? compare su sintaxis con la del archivo de ayuda. Comenzaría con la sintaxis de arcpy que se encuentra en los archivos de ayuda y omitiría la salida del modelo.

Usé la sintaxis del archivo de ayuda y prácticamente obtuve lo mismo. Me pregunto si alguien más tiene problemas para ejecutar la herramienta de suma ponderada. ¿Puedes intentar? Estoy usando 10.4

. WSumTableObj = WSTable ([[inRaster1, "VALUE", 0.33], [inRaster2, "VALUE", 0.33],


Ver el vídeo: Select Features by attribute in ArcMap - ArcGIS for Beginners