Estoy tratando de manejar la cadena (no de la geometría), se duplica en una gran tabla de atributos de un archivo shapefile sin tener que convertir a gdb y hacia atrás, o conectarse a un postgres db. Necesito ser capaz de utilizar una función de recuento por mi consulta. Prefiero no crear un archivo de salida, sino que, simplemente, actualizar el fichero en sí. He mirado en los cursores pero no me parece para lograr lo que necesito para con ellos. Esencialmente me necesita para obtener un recuento de los duplicados, para hacer una comparación, y como consecuencia anexar los valores de un campo con los valores de otro campo.
Respuestas
¿Demasiados anuncios?Si los duplicados que desea hacer algo acerca de a través de las filas me gustaría ver a ogr, specifcally ogr sql.
Si OGR no hace lo que quiere y los datos que desea cambiar son a través de las columnas (campos) y no filas (registros) con el cuidado apropiado puede utilizar cualquier herramienta que entiende DBF, que debe cualquier db herramienta que vale la pena es la sal, incluyendo Access/Excel. Algo para ver, especialmente con Excel, son silenciosas cambio de formato de los campos de fecha y hora, y el truncamiento del total de registros (Excel tiene max límite de fila, y puede o no puede decir algo al respecto). Siempre trabajar en una copia, validar los resultados, y nunca eliminar, añadir o cambiar el orden de las filas cuando el uso de un no-espacial dbf herramienta.
(Este no usa python
ni ArcGIS
, pero podría ser un enfoque útil.)
Un enfoque alternativo podría ser la lectura de la dbf
parte de la shapfile en R
(utilizando el foreign
paquete). A continuación, instale y cargue el paquete sqldf
, el cual ofrece una completa funcionalidad SQL. Así que mientras no te reorganizar o cambiar el número de filas que usted puede escribir un nuevo dbf
fichero que se va a trabajar^ con su shapefile.
↑ aunque me imagino que es posible romper el shapefile en ciertas circunstancias no he hecho esto sin embargo, con este enfoque.
Si instala pywin32, puede consultar sus archivos .dbf con cualquier consulta SQL compatible con Jet y acceder a los resultados en un RecordSet desde Python. Puede ejecutar una función de agregado como count, consulta anidada, consulta de actualización, etc o salida a otro dbf. En mi experiencia, el nombre de archivo dbf debe ser 8.3 compiant.