Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Please help with Script #188

Open
Bra3108 opened this issue Jun 22, 2023 · 0 comments
Open

Please help with Script #188

Bra3108 opened this issue Jun 22, 2023 · 0 comments

Comments

@Bra3108
Copy link

Bra3108 commented Jun 22, 2023

import os
import zipfile
import shapefile

Ruta del archivo .zip

ruta_zip = ''

Ruta de extracción del archivo .zip

ruta_extraccion = ''

Descomprimir el archivo .zip

with zipfile.ZipFile(ruta_zip, 'r') as zip_ref:
zip_ref.extractall(ruta_extraccion)

Obtener el nombre del archivo .zip sin la extensión

nombre_zip = os.path.splitext(os.path.basename(ruta_zip))[0]

Ruta del archivo .shp

ruta_shp = os.path.join(ruta_extraccion, nombre_zip + '.shp')

Agregar un campo de texto llamado "plano" con el nombre del archivo .zip

sf = shapefile.Reader(ruta_shp)
fields = sf.fields
records = sf.records()
shapes = sf.shapes()

Agregar el campo plano al registro

fields.append(['plano', 'C', 50, 0]) # Nombre del campo, tipo de campo, longitud y decimal

Crear una nueva instancia de escritura para el archivo modificado

w = shapefile.Writer(ruta_shp, shapeType=sf.shapeType)
w.fields = fields

Escribir los registros y formas en el nuevo archivo

for i in range(len(records)):
nuevo_registro = list(records[i]) + [nombre_zip]
w.record(*nuevo_registro)
w.shape(shapes[i])

Guardar el archivo .shp modificado

ruta_shp_modificado = os.path.join(ruta_extraccion, nombre_zip + '_modificado.shp')
w.close(ruta_shp_modificado)

Comprimir el archivo .shp modificado en un nuevo archivo .zip

ruta_zip_modificado = os.path.join(os.path.dirname(ruta_zip), nombre_zip + '_modificado.zip')
with zipfile.ZipFile(ruta_zip_modificado, 'w') as zip_ref:
# Agregar el archivo .shp modificado
zip_ref.write(ruta_shp_modificado, os.path.basename(ruta_shp_modificado))

# Agregar los archivos adicionales al archivo .zip (si los hay)
for root, dirs, files in os.walk(ruta_extraccion):
    for file in files:
        if file != os.path.basename(ruta_shp):
            archivo_completo = os.path.join(root, file)
            archivo_relativo = os.path.relpath(archivo_completo, ruta_extraccion)
            zip_ref.write(archivo_completo, archivo_relativo)

Reemplazar el archivo original con el archivo .zip modificado

os.remove(ruta_zip)
os.rename(ruta_zip_modificado, ruta_zip)

Eliminar el archivo .shp y los archivos temporales (opcional)

os.remove(ruta_shp_modificado)
os.remove(ruta_zip_modificado)

print("Proceso completado.")

I get the error Traceback (most recent call last):
File "D:/users/bramirez/Desktop/Scrips_ArcGisPro_Geo - copia/1.py", line 42, in
w.close(ruta_shp_modificado)
TypeError: close() takes 1 positional argument but 2 were given

Please help

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant