Más

Identifique polígonos mayores que el percentil n-ésimo y realice análisis adicionales con arcpy

Identifique polígonos mayores que el percentil n-ésimo y realice análisis adicionales con arcpy


Mi meta es

  1. para identificar tramos que están por encima del percentil 99 de una variable (xvar),
  2. para disolver extensiones contiguas sumando una variable (yvar), y
  3. para obtener las coordenadas de los centroides (longitud y latitud) de los polígonos fusionados.

En la primera etapa para elegir los tractos por encima del percentil 99, tengo algunos errores. El siguiente es mi trabajo actual:

import arcpy import numpy as np input = r'D:  7362.shp 'myarray = arcpy.da.FeatureClassToNumPyArray (input, (' xvar ')) print myarray # Salida impresa: # [(5.204770523,) (8.6471839055,) ( 2.1095837756,)…, (1.4788840302, # (6.24183499,) (3.6710648163,)] p99 = np.percentile (myarray, 99) # use el cursor para crear el campo indicador # ¿Tengo que crear el campo p99 anterior en primer lugar? ?? con arcpy.da.UpdateCursor (entrada, ['xvar', 'abovep99']) como cursor: para la fila en el cursor: si fila [0]> p99: fila [1] = 1 más: fila [1] = 0 cursor.updateRow (fila)

Los mensajes de error en el cálculo de percentilesp99 = np.percentile (myarray, 99)estan siguiendo:

Rastreo (última llamada más reciente): Archivo "", línea 1, en  p99 = np.percentile (myarray, 99) Archivo "C:  Python27  ArcGIS10.3  lib  site-packages  numpy  lib  function_base.py", línea 3096, en percentil return _compute_qth_percentile (ordenado, q, eje, out) Archivo "C:  Python27  ArcGIS10.3  lib  site-packages  numpy  lib  function_base.py", línea 3132, en _compute_qth_percentile return add.reduce (sorted [indexador] * pesos, eje = eje, fuera = out) / sumval TypeError: tipos de operandos no admitidos para *: 'numpy.ndarray' y 'numpy.ndarray'

¿Cómo soluciono este problema para el cálculo de percentiles?


La matriz numpy que está utilizando se compone de elementos de tupla unidimensionales. A diferencia de mi respuesta original, la introducción del argumento del eje producirá el mismo error. Como lo sugiere OP, la matriz numpy debe planificarse antes de aplicar la función de percentil, comomyarray_1 = np.array ([arr [0] para arr en myarray]).

Para disolver las entidades basadas en una variable, eche un vistazo a la herramienta Disolver de ArcGIS. Debe especificar yvar como campo de disolución y también campo de estadísticas con el operador SUM.

Extraer los centroides es bastante sencillo y puede encontrar varias soluciones para esto, como esto y aquello.


Ver el vídeo: Summarizing within polygons in ArcGIS