Killing Godzillas using Arcpy

2449855712_7f12111bc7_z

According to Esri , Godzillas are those geometries with too many vertices that cause errors like out-of-memory, system crashes or the “famous”  999999 : Error executing function.

To avoid that problem you will have to use the Dice tool. That tool “Subdivides a feature into smaller features based on a specified vertex limit*. (Only available to  “Arcinfo” , “ArcGIS for Desktop Advanced”  or “Arcgis for Server Advanced” users).

For example, if you have some geometries like these:

despues (1)

and apply them the Dice tool, you will get results like these:

despues_dice (1)

The only problem is that the Dice tool could generate some invalid geometries (and the docs don’t tell you about it).  Alternatives?  Python / Arcpy to the rescue.

The following script does the following:

  • Convert you features from multipart to singlepart.
  • Dice your geometries
  • Teplace the old data with the new generated features
  • Check and  repair the new  invalid features

Easy, isn’t it?. You can tame those ugly godzillas with a little bit of python / arcpy.

2449853812_9a3578720f_m

If you need to do something similar using open source software, probably the best option is the function “ST_SubDivide” from postgis. The following post from Paul Ramsey gives you more details about it: “Subdivide All the Things“.

 

Anuncios

Arcgis 10 y Python: Automatizar Compress y Analyze

Una de las tareas que todo administrador de bases de datos geográficas ArcGis/SDE debería realizar con frecuencia (e incluso a diario), es la ejecución el proceso de compresión (Compress). Dicho proceso permite optimizar el almacenamiento de los registros en el motor de bases de datos relacional.

Con el siguiente script de python utilizando el paquete de programación de arcgis conocido como arcpy se puede además de realizar el compress (Compress_management) , permite ejecutar el análisis de datos para un esquema de base de datos específico .
(Según la documentación oficial El proceso de Analyze_management consiste en: “Actualiza las estadísticas de la base de datos de las tablas de negocios, las tablas de entidades y las tablas delta junto con las estadísticas de los índices de esas tablas.” )

Ver script en github: