Más

Crear capas para cada valor de atributo a través del script Arcpy

Crear capas para cada valor de atributo a través del script Arcpy


Tengo problemas para iniciar este script. No estoy seguro de cómo comenzar, ya que tengo que crear / generar capas para cada valor de atributo de una determinada columna nombrada que tiene números enteros. Todos son valores únicos.

Mi primer pensamiento fue usar MakeFeatureLayer de alguna manera, pero, de nuevo, ¿cómo se crean las capas sin hacer innumerables variables locales con el nombre de la capa?

Otra idea sería usar SearchCursor para iterar cada valor y colocar una capa para cada uno, pero de nuevo, ¿cómo haría eso?

Esperando algunas sugerencias.

importar arcpy desde arcpy import env #environnement de travail env.workspace = "D: / M1 Geomatique / Programmation II / Dossier" #variables locales in_features = "ELYTR_TR_BUREAU_VOTE_2015_polygon.shp" field = ".S CODE_SECTE "con arcpyor. field) como cursor: para la fila en el cursor: nombre = fila to_output = arcpy.SelectLayerByAttribute_management (fila) arcpy.MakeFeatureLayer_management (to_output, name)

Obteniendo un RuntimeError: Error al ejecutar la herramienta, pero esto probablemente se deba a no usar SelectLayer y MakeFeatureLayer correctamente, supongo que el orden no es bueno, pero nuevamente la entrada para MakeFeatureLayer no es buena.


No es necesario escribir ningún código, un modelo muy simple como se muestra a continuación podría hacer todo esto. Establece el grupo por campo para que sea su campo entero y el iterador creará un subconjunto que guardará usando la herramienta de selección.


He estado trabajando en algo similar, en este momento lo tengo hasta el punto en que hay un script que se puede ejecutar desde IDLE.

Lo que sucede es que crea una capa de entidades temporal y luego necesita guardar para tener su capa.

El segundo enlace a continuación, save_to_layer_file tiene un ejemplo de código Python.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000006p000000

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Save_To_Layer_File/001700000070000000/

import arcpy desde arcpy import env ## Aquí es donde se guarda el archivo que se va a procesar arcpy.env.workspace = "S:  AppsData  GIS  PROJECT  EMPRESAS  SHAPEFILES " # El archivo para ser procesado dentro del arcp.env que ha sido configurado Source_File = "SDE_COMPANY_LIST.shp" # El atributo que se está mirando en este caso es "COMPANY" feild_to_be_used = "COMPANY" # El cursor de búsqueda, pasa por el campo dado y extrae todos los valores all_values_in_field = [fila [0] para la fila en arcpy.da.SearchCursor (Source_File, feild_to_be_used)] Unique_values ​​= set (all_values_in_field) imprime UniqueCompany # para que el bucle recorra cada unique_value en el campo. Toma este valor y lo aplica dentro de una consulta de definición / where cláusula # para mostrar solo esos valores únicos para un_item en Unique_values: temp_name = str (a_item) + "lyr" out_layer = temp_name + "lyr" #MakeFeatureLayer variables Source_File = "SDE_COMPANY_LIST. shp "# El atributo que se está analizando se repite aquí where_clause = '"' + feild_to_be_used + '"" =' + "'" + consulta_empresa + "'" print where_clause espacio de trabajo = "S:  AppsData  GIS   PROJECT  EMPRESAS  SHAPEFILES  "intente: # Ejecutar MakeFeatureLayer arcpy.MakeFeatureLayer_management (Source_File, out_layer0, where_clause) # cambiar el entorno de salida arcpy.env.workspace =" S:  AppsData  GIS  PROJECT   EMPRESAS  SHAPEFILES  "# Ejecute SaveToLayerFile arcpy.SaveToLayerFile_management (temp_name, out_layer," ABSOLUTE ") excepto: print arcpy.GetMessages ()

Mi código puede tener algunos errores, pero si cambia donde lo necesita, puede ejecutarlo desde IDLE, no es necesario estar en ArcGIS. Las cosas a tener en cuenta son el formato de la cláusula where y asegurarse de que sus entornos sean correctos, para la parte correcta del proceso.


En cualquier caso, eventualmente resolví el problema con algo de ayuda. También puede consultar la comunidad de Geonet en ESRI para ver mi solución si alguien tiene curiosidad.

Implica usar el SearchCursor para obtener los valores únicos, seguido de un bucle para obtener cada valor de una lista que se utiliza como entrada en MakeFeatureLayer herramienta.


Esta respuesta se basa en la respuesta proporcionada por @BERA: guarde una fila seleccionada en un nuevo shapefile con arcpy

Los scripts leen la clase de entidad y exportan cada una de las filas como shapefile único en tres pasos:

  1. utilice "arcpy.da.SearchCursorrecorrer cada fila en una clase de entidad para obtener unaOBJECTID '
  2. utilizarOBJETOpara crear una nueva consulta para crear un subconjunto de la fila
  3. guardar nuevo shapefile usandoarcpy.Select_analysisherramienta.

Sin necesidad de intermedioMakeFeatureLayeroSaveToLayeroCopyFeatureClassinstrumentos.

importar arcpy, os input_fc = r'C:  TEST  Shape.shp 'outfolder = r'C:  folder' # obtener ID única por OID @ token con arcpy.da.SearchCursor (input_fc, 'OID @') como cursor : # recorrer el shapefile para guardar el ID de fila único y guardarlo en un formato correcto para la consulta de la fila en el cursor: # Crear consulta, fila [0] = OID @ "{0} = {1}" "". formato ( arcpy.AddFieldDelimiters (input_fc, arcpy.Describe (input_fc) .OIDFieldName), fila [0]) arcpy.Select_analysis (in_features = input_fc, out_feature_class = os.path.join (outfolder, 'Shapefile_ {0} .shp' fila [0])), where_clause = sql)

Los valores únicos en el campo Identificador de ruta se escriben en la Clase de entidad de ruta de salida.

Utilice las herramientas Crear capa de entidades o Crear tabla de consultas para reducir eficazmente la cantidad de líneas que se utilizarán para crear rutas.

Si la clase de entidad de ruta de salida se escribirá en una geodatabase, se debe establecer una tolerancia M, una resolución M y un entorno de dominio M adecuados.

Utilice un factor de medida para convertir entre unidades de medida de ruta. Por ejemplo, para convertir de pies a millas, use un factor de 0,00018939394.

Utilice una compensación de medida en aplicaciones donde la medida de inicio de cada ruta debe ser un valor distinto de 0.

El parámetro Ignorar espacios espaciales no se utiliza cuando se ha especificado la opción Fuente de medida TWO_FIELDS. Esto se debe a que los valores de medida vienen dictados por los valores de Campo de medida y Campo de medida.

Cuando se usa la opción LENGTH o ONE_FIELD Measure Source, la prioridad de coordenadas se determina colocando el rectángulo delimitador mínimo alrededor de las entidades de entrada que se fusionarán para crear una ruta.

Cuando se utiliza la opción Fuente de medida de DOS_CAMPOS, no es necesario especificar una prioridad de coordenadas porque la dirección de la medida está implícita en los valores del campo Desde medida y el campo Hasta medida.

Un índice de atributo en el campo del identificador de ruta acelera el proceso de segmentación dinámica. Si va a utilizar la clase de entidad de ruta de salida para la segmentación dinámica, se recomienda que elija crear un índice de atributo.

Si la herramienta Crear rutas rechaza alguna característica, se crea un archivo de texto en la ruta del archivo temporal para almacenar información sobre esas características. Por ejemplo, C: Documents and Settings patrickb Local Settings Temp Create_Output0.txt (donde Create_Output es el nombre de la clase de entidad de ruta de salida).

La configuración del entorno Salida tiene valores M se ignorará. La clase de entidad de ruta de salida tendrá valores M (medida).


1 respuesta 1

Los operadores [*] y. * Están pensados ​​para su uso con listas únicamente. Debido a que este recurso usa for_each en lugar de count, su valor en otras expresiones es un mapa, no una lista.

Para que su configuración funcione, deberá decidir si es mejor devolver un mapa de nombres donde las claves son las claves var.bridge_domains, o devolver solo un conjunto de identificadores donde la persona que llama no pudo determinar a qué nombre pertenece cuál de los elementos de var.bridge_domains:

Esto se utiliza para expresiones, que son la contraparte más general de las expresiones splat que funcionan con colecciones de cualquier tipo y que pueden producir tanto secuencias como asignaciones como resultado, mientras que las expresiones splat solo funcionan con listas.


3.3.1 Actualización de registros existentes

Utilice el cursor de actualización para modificar los registros existentes en un conjunto de datos. Estos son los pasos generales para usar el cursor de actualización:

  1. Cree el cursor de actualización llamando a arcpy.da.UpdateCursor (). Opcionalmente, puede pasar una expresión SQL como argumento a este método. Esta es una buena manera de reducir las filas que desea editar si no está interesado en modificar todas las filas de la tabla.
  2. Utilice un bucle for para recorrer las filas y para cada fila.
  3. Modifique los valores de campo en la fila que necesita actualizar (ver más abajo).
  4. Llame a UpdateCursor.updateRow () para finalizar la edición.

Modificar valores de campo

Cuando crea un UpdateCursor y recorre las filas usando una variable llamada fila, puede modificar los valores de campo realizando asignaciones usando la fila de sintaxis [& ltindex del campo que desea cambiar & gt] = & ltthe nuevo valor & gt. Por ejemplo:

Es importante señalar que el índice que se encuentra en el [. ] para determinar qué campo se cambiará con respecto a la tupla de campos proporcionada cuando se crea UpdateCursor. Por ejemplo, si creamos el cursor usando el siguiente comando

la fila [0] se refiere al campo llamado "CompanyName" y la fila [1] se refiere al campo que tiene el nombre "Propietario".

Ejemplo

El siguiente script realiza una operación de "buscar y reemplazar" en una tabla de atributos. Por ejemplo, suponga que tiene un conjunto de datos que representa a las empresas locales, incluidos los bancos. Recientemente, otro banco compró uno de los bancos. Debe encontrar todas las instancias del nombre del banco anterior y reemplazarlo con el nuevo nombre. Este script podría realizar esa tarea automáticamente.

Tenga en cuenta que este script es relativamente flexible porque obtiene todos los parámetros como texto. Sin embargo, esta secuencia de comandos solo se puede ejecutar en variables de cadena debido a la forma en que se configura la cadena de consulta. Observe que el valor anterior se pone entre comillas, así: "'" + oldValue + "'". El manejo de otros tipos de variables, como números enteros, habría alargado el ejemplo.

Nuevamente, es fundamental comprender la tupla de campos afectados que pasa cuando crea el cursor de actualización. En este ejemplo, solo hay un campo afectado (que llamamos campo afectado), por lo que su posición de índice es 0 en la tupla. Por lo tanto, establezca ese valor de campo usando la fila [0] = newValue.

La última línea con updateRow (.) Es necesaria para asegurarse de que la fila modificada se vuelva a escribir en la tabla de atributos. Tenga en cuenta que la fila de la variable debe pasarse como parámetro para updateRow (.).

Bloqueo de conjunto de datos de nuevo

Como mencionamos, ArcGIS a veces coloca bloqueos en conjuntos de datos para evitar la posibilidad de conflictos de edición entre dos usuarios. Si cree por alguna razón que un bloqueo de su secuencia de comandos está afectando su conjunto de datos (evitando que lo vea, haciendo que parezca que se han eliminado todas las filas, etc.), debe cerrar Spyder para eliminar el bloqueo. Si cree que Pro tiene un bloqueo en sus datos, verifique si hay una sesión de edición abierta en los datos, los datos se muestran en la Vista / Panel de catálogo, o si una capa basada en los datos es parte de un abrir mapa.

Como dijimos, la limpieza del cursor debería Sucederá a través de la creación del cursor dentro de una declaración "con", pero agregar líneas para eliminar la fila y los objetos del cursor asegurará que se liberen los bloqueos.

Para obtener una explicación de Esri sobre cómo funciona el bloqueo, puede revisar la sección "Cursores y bloqueo" en el tema Acceder a datos mediante cursores en la Ayuda de ArcGIS Pro.


Clasificación y predicción

La clasificación es el proceso de encontrar un modelo que describa las clases de datos o los conceptos. El propósito es poder utilizar este modelo para predecir la clase de objetos cuya etiqueta de clase se desconoce. Este modelo derivado se basa en el análisis de conjuntos de datos de entrenamiento. El modelo derivado se puede presentar en las siguientes formas y menos

  • Reglas de clasificación (SI-ENTONCES)
  • Árboles de decisión
  • Fórmulas matemáticas
  • Redes neuronales

La lista de funciones involucradas en estos procesos son las siguientes y menos

Clasificación & minus Predice la clase de objetos cuya etiqueta de clase se desconoce. Su objetivo es encontrar un modelo derivado que describa y distinga clases o conceptos de datos. El modelo derivado se basa en el conjunto de análisis de datos de entrenamiento, es decir, el objeto de datos cuya etiqueta de clase es bien conocida.

Predicción & menos Se utiliza para predecir valores de datos numéricos faltantes o no disponibles en lugar de etiquetas de clase. El análisis de regresión se utiliza generalmente para la predicción. La predicción también se puede utilizar para identificar las tendencias de distribución en función de los datos disponibles.

Análisis de valores atípicos & minus Los valores atípicos se pueden definir como los objetos de datos que no cumplen con el comportamiento general o el modelo de los datos disponibles.

Análisis de evolución & menos El análisis de evolución se refiere a la descripción y modelo de regularidades o tendencias para objetos cuyo comportamiento cambia con el tiempo.


Eliminación de riesgos mediante iteraciones anidadas

La construcción de un almacén de datos empresarial siguiendo técnicas tradicionales conlleva muchos riesgos, ya que los estudios empíricos han demostrado que estos proyectos fracasan con más frecuencia de lo que tienen éxito. Las técnicas ágiles de almacenamiento de datos empresariales (EDW) mitigan este riesgo mediante el uso de tres tipos de iteraciones, una apilada dentro de otra, con cada estilo de iteración diseñado para detectar un tipo diferente de peligro. En el nivel más bajo, los equipos emplean iteraciones de desarrollo de Scrum para que los propietarios de productos puedan revisar regularmente la aplicación en busca de errores de conceptos de codificación. En el siguiente nivel, los equipos ágiles de EDW llevan a cabo una revisión del candidato de la sub-publicación después de cada tres o cuatro iteraciones para que las partes interesadas cercanas del proyecto puedan revisar cómo las características de la aplicación se asignan a los problemas comerciales que necesitan resolver. Por último, los equipos de EDW promueven la producción de candidatos de sublanzamiento exitosos para que los usuarios finales puedan operar el software como parte de sus actividades diarias, revelando fallas en los conceptos comerciales que sirven como objetivos comerciales de alto nivel del proyecto.


Sintaxis

Una clase de entidad que contiene una distribución de entidades para las que se calculará la elipse de desviación estándar.

Una clase de entidad poligonal que contendrá la entidad elipse de salida.

El tamaño de las elipses de salida en desviaciones estándar. El tamaño de elipse predeterminado es 1; las opciones válidas son 1, 2 o 3 desviaciones estándar.

El campo numérico utilizado para ponderar ubicaciones según su importancia relativa.

Campo utilizado para agrupar entidades para cálculos de distribución direccional separados. El campo del caso puede ser de tipo entero, fecha o cadena.


3 respuestas 3

Encontré una manera realmente fácil de hacer esto.

Ahora obtendrá cuatro ventanas diferentes: R, G, B y A.

Ahora haga clic de nuevo en el menú y elija Combinar canales.

Escoger RGB como el modo de combinación.

Confirmar que cada canal está en la posición correcta.

Ahora tiene un archivo RGB "sin transparencia" con un archivo adicional con la transparencia original que se utilizará como máscara de capa.

Esta máscara de capa se puede usar para pintar y trabajar como hacía mi pregunta original.

Para agregar la máscara.

Seleccione la imagen en escala de grises (Ctrl + A) y cópiela en el portapapeles.

En la imagen en color en el cuadro de diálogo de la capa, haga clic en "Agregar máscara"

(Alt + Clic) en la máscara y pegue el Portapapeles.

La respuesta corta no es realmente.

La única forma que conozco de recuperar píxeles que son transparentes es duplicar la capa y fusionarla una y otra vez.

  1. Seleccione la capa en el panel de capas
  2. Presione CMD / CTRL + J - para duplicar la capa
  3. Presione CMD / CTRL + E - para fusionar la capa hacia abajo
  4. Repita los pasos 2 y 3 hasta que no haya más transparencia

Luego, puede hacer una máscara de capa y pintar la transparencia como le guste. Aquí hay una gran respuesta sobre cómo trabajar con máscaras de capa.

No, pero hay máscaras de capa, que es lo que necesitará utilizar para la eliminación no destructiva.

En Photoshop, agregue una máscara de capa a la capa que desea borrar. En el panel de capas, haga clic en la máscara de capa para seleccionarla. Elija la herramienta Pincel, presione D para elegir los colores de fondo y primer plano en blanco y negro predeterminados. Pinte sobre la imagen en negro para agregar transparencia, pinte sobre la imagen en blanco para volver a opacar. Puede cambiar entre los colores de primer plano blanco y negro presionando la tecla X. Si cambia la opacidad del pincel a menos del 100%, puede reducir la cantidad de blanco o negro que aplica a la máscara, con cada trazo.


Se buscan: nuevas arquitecturas para IoT y realidad aumentada

La tecnología del software cambia rápidamente. Muchas herramientas y técnicas nuevas llegan al ámbito de la ingeniería de software para abordar problemas nuevos y antiguos. Aún quedan grandes lagunas en la arquitectura y la implementación por abordar. Por ejemplo, a medida que algunos miles de millones de teléfonos inteligentes, tabletas y dispositivos de detección conectados a Internet se encuentren en línea en todo el mundo, ¿cómo van a descubrir y utilizar todos los recursos disponibles de manera colaborativa?

Uno de los problemas actuales con la mayoría de las arquitecturas existentes es que los datos se enrutan a través de servidores centrales en un centro de datos en algún lugar. Normalmente, los sistemas de software todavía se construyen utilizando arquitecturas cliente / servidor. Incluso si una aplicación utiliza múltiples fuentes remotas para los datos, en realidad es solo una pequeña variación. Las búsquedas de servicios y datos se realizan utilizando una dirección definida estáticamente en lugar de mediante el descubrimiento. Incluso los dispositivos de teledetección y automatización del hogar apenas colaboran localmente y requieren un enrutador local para comunicarse con un servidor remoto en un centro de datos.

El mes pasado, estuve tanto en Internet of Things World como en Augmented World Expo (AWE). En estas dos excelentes conferencias, hubo al menos un debate sobre la necesidad de una mejor infraestructura.

  • para conectar dispositivos de manera que sean más útiles mediante la colaboración de recursos y
  • para conectar dispositivos para proporcionar capacidades para compartir experiencias en tiempo real.

Pero era solo hablar de la necesidad. Nadie todavía está demostrando ninguna capacidad funcional de esta manera.

En una nota al margen: vi solo a una persona, de cada 3000 aproximadamente, en la conferencia AWE usando un dispositivo de aumento. Fue Steve Mann quien es considerado el padre de los wearables. Me atrevería a decir que la mayoría de los defensores de la tecnología no están preparados para exhibirla ni tampoco la infraestructura para respaldar su uso de manera eficaz. Sin embargo, hay un gran trabajo en progreso.

Las arquitecturas peer-to-peer utilizadas en el intercambio de archivos y la arquitectura que usa Skype comienzan a proporcionar una guía direccional para lo que vendrá en arquitecturas verdaderamente distribuidas. Aún es necesario mejorar estas arquitecturas para incluir el descubrimiento dinámico de recursos de software y hardware y orquestar la utilización dinámica de recursos.

Hay algunos esfuerzos en desarrollo que comienzan a abordar algunas de las plataformas informáticas distribuidas en Internet necesarias para el intercambio de datos, la realidad aumentada y el aprendizaje automático. Aquellos de ustedes que estén pensando en trabajos por lotes o en conectar servicios comerciales como computación distribuida, no es de esto de lo que estoy hablando. Estoy hablando de una pequeña pila de software que se puede ejecutar en muchos dispositivos de hardware diferentes con la capacidad de que esos dispositivos se comuniquen directamente entre sí.

Si sabe acerca de los esfuerzos de desarrollo en vano, me gustaría escucharlos.


Admite puntos, multipuntos, líneas y geometrías poligonales.

La elevación de cada entidad se derivará del valor obtenido en el campo de altura especificado.

Las entidades de línea pueden proporcionar opcionalmente un segundo campo de altura. El uso de dos campos de altura dará como resultado que cada entidad de línea comience desde el valor Z obtenido en el primer campo de altura y termine en el valor Z del segundo campo de altura. Las alturas de los vértices intermedios se interpolarán en función de la pendiente de la línea entre los dos puntos finales.


Uso de WLST (sin conexión) para la configuración del clúster de coherencia

WebLogic Scripting Tool (WLST) es una interfaz de línea de comandos que puede utilizar para automatizar las tareas de configuración del dominio, incluida la configuración y la gestión de los clústeres de Coherence. Para obtener más información sobre WLST, consulte Descripción de la herramienta de secuencias de comandos de WebLogic.

Los siguientes ejemplos demuestran el uso de WLST en modo fuera de línea para crear y configurar un clúster de Coherence. Se asume que ya se ha creado un dominio y que los ejemplos se completan en el orden en que se presentan. Además, los ejemplos solo crean un nivel de datos. Se pueden crear niveles adicionales según sea necesario. Por último, los ejemplos no pretenden demostrar todos los métodos de Coherence. Para obtener una lista completa de los mbeans de Coherence, consulte Referencia de MBean para Oracle WebLogic Server.