ERROR

ArcGIS API for Python GeoEnrichment Error: El modo de agregación de países solamente admite capturas de datos globales

Last Published: July 22, 2021

Mensaje de error

La función de Python de ArcGIS enrich_layer (módulo arcgis.features.enrich_data) se utiliza para enriquecer varias ubicaciones de puntos con información demográfica utilizando el siguiente fragmento de código:

from arcgis.gis import GIS from arcgis.features.enrich_data import enrich_layer # Conectar a GIS gis = GIS("Pro") # Usar variables de análisis disponibles para los países de interés analysis_variables = [ "KeyFacts.TOTPOP_CY", "HouseholdTotals.AVGHHSZ_CY", "KeyFacts.PP_CY", "Spending.CS01_CY" ] points = [ {"country": "Australia", "coords": (-33.918199,151.202186)}, {"country": "Bélgica", "coords": (51.051012,4.335651)}, {"country": "Netherlands", "coords": (51.848607,4.669177)} ] for point in points: country = point['country'] coords = point['coords'] pt_enrich = enrich_layer( coords, analysis_variables=analysis_variables, distance=30, units='Kilometers', buffer_type='StraightLine', return_boundaries=True, ) print(pt_enrich.layer.featureSet.features[0].attributes)

Esto funciona bien para algunos países, pero falla con otros con el mensaje de error:

{"messageCode": "AO_100000", "message": "El modo de agregación de países solamente admite capturas de datos globales. No se pudieron procesar las siguientes capturas de datos: 'KeyFacts', 'HouseholdTotals', 'Spending'".}

Según el Explorador de datos en la siguiente dirección URL, https://la.arcgis.com/databrowser/index.html, todos los países de la prueba (Australia, Bélgica y Países Bajos) deben admitir estas variables de análisis.

Causa

El mensaje de error "El modo de agregación de países solamente admite capturas de datos globales" indica que la distancia de zona de influencia desde las coordenadas de entrada da como resultado una entidad de entrada poligonal para el enriquecimiento que se interseca con más de un país, lo cual solo se admite con capturas de datos globales y no con variables de análisis.

Dependiendo de dónde se encuentre la coordenada de punto, una zona de influencia de 30 kilómetros desde las coordenadas de entrada puede intersecar con varios países, motivo por el cual el error solo se encuentra en algunos casos.

Solución o solución alternativa

Existen dos posibles soluciones alternativas a este error:

Definir el parámetro opcional denominado country en el método enrich_layer para limitar el enriquecimiento a un solo país para cada punto de entrada en el que se cree una zona de influencia

from arcgis.gis import GIS from arcgis.features.enrich_data import enrich_layer # Conectar a GIS gis = GIS("Pro") # Probando las variables de análisis a partir de una variedad de colecciones analysis_variables = [ "KeyFacts.TOTPOP_CY", "HouseholdTotals.AVGHHSZ_CY", "KeyFacts.PP_CY", "Spending.CS01_CY" ] points = [ {"country": "Australia", "code": "AU", "coords": (-33.918199,151.202186)}, {"country": "Bélgica", "code": "BE", "coords": (51.051012,4.335651)}, {"country": "Países Bajos", "code": "NL", "coords": (51.848607,4.669177)} ] for point in points: country = point['country'] coords = point['coords'] code = point['code'] pt_enrich = enrich_layer( coords, analysis_variables=analysis_variables, country= code, distance=30, units='Kilometers', buffer_type='StraightLine', return_boundaries=True, ) print(pt_enrich.layer.featureSet.features[0].attributes)

Usar el módulo arcgis.geoenrichment para que todos los KeyGlobalFacts se puedan agregar para todos los países

from arcgis.gis import GIS from arcgis.geoenrichment import enrich, BufferStudyArea from arcgis.geometry import Point gis = GIS("Pro") points = [] points.append(Point({"x" : 4.335651, "y" : 51.051012, "spatialReference" : {"wkid" : 4326}})) points.append(Point({"x" : 151.202186, "y" : -33.918199, "spatialReference" : {"wkid" : 4326}})) points.append(Point({"x" : 4.669177, "y" : 51.848607, "spatialReference" : {"wkid" : 4326}})) points.append(Point({"x" : 114.125105, "y" : 22.343511, "spatialReference" : {"wkid" : 4326}})) for pt in points: buffered = BufferStudyArea(area= pt, radii=[30], units='Kilometers', overlap=False) enriched = enrich( study_areas=[buffered], data_collections=['KeyGlobalFacts'], ) print(enriched)

Id. de artículo:000025443

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Información relacionada

Descubrir más sobre este tema