Estoy escribiendo un tutorial para estudiantes de maestría que usa QGIS. Una de las tareas requiere que se modifiquen los datos del atributo (consulte el borrador del tutorial en pdf aquí si está interesado).
La pregunta es cómo hacer que editen los datos del atributo. Sé que esta pregunta se ha hecho antes , y la respuesta solía ser simple: simplemente use LibreOffice calc para modificarla y luego guárdela, asegurándose de que el orden de las filas y los títulos de las columnas se mantengan igual. He usado este enfoque antes con gran efecto.
Desafortunadamente, la solución ya no funciona: guardar el archivo .dbf, en LibreOffice (5.4.2) o OpenOffice (3.4.1) Calc codifica los datos desde la perspectiva de QGIS (solo aparecen números enteros aleatorios en la tabla de atributos), y crea un archivo .dbt adicional en su lugar.
Entonces, para llegar a la pregunta: ¿cómo le digo a una clase de estudiantes de maestría que hagan esto la próxima semana? He considerado las siguientes opciones:
- Use R en su lugar (excelente para mí, pero aterrador para los estudiantes)
- Edite el archivo como .csv, y luego únase según la marca de tiempo (bien, pero parece demasiado complejo, y podría introducir más errores en las prácticas de 2 horas)
- Use un programa alternativo: he probado Gnumeric y Excel, ninguno de los cuales generó buenos resultados rápidamente.
Para ayudar a responder esta pregunta, he creado un ejemplo replicable . Abra el archivo "points.shp" en QGIS, observe la tabla de atributos y luego cierre. Edite un par de celdas en la tabla de atributos "puntos.dbf" en LibreOffice - guardar. Vuelva a abrir "points.shp" en QGIS y observe la tabla de atributos codificados. Los otros archivos de forma en la carpeta .zip ya han sido corrompidos por LibreOffice y OpenOffice para ilustrar cómo es el problema para mí.
En resumen, ¿cómo resuelvo mejor este problema?
fuente
Respuestas:
La respuesta más simple que he encontrado, basada en el consejo de Ryan Garnett de hacerlo dentro de QGIS:
Utilice regexp_replace
Esta capacidad fue agregada a la calculadora de campo hace 1 año por Jürgen Fischer (como se ilustra en este informe de error ). Intenté por un tiempo descubrir cómo hacerlo, pero no pude buscar "qgis regex" y otros términos vagos.
Su funcionalidad probablemente se ilustra mejor por la necesidad de estandarizar todos los valores en la columna "nombre". Por ejemplo, si necesitamos reemplazar todas las celdas que contienen el patrón "Tesc" con 'Tesco', eliminando información superflua como "Tesco, Infirmary Road" (que los contribuyentes de OSM agregan con frecuencia), se puede utilizar la siguiente función:
regexp_replace ("nombre", 'Tesc. *', 'Tesco')
Supongo que esta es la funcionalidad de expresión regular Pythonic, ya que es un poco diferente de grep, que he usado antes.
Creo que se necesita más documentación (los detalles en el sitio web de QGIS se limitan a unas pocas palabras) sobre cómo funciona esto, así que he marcado las siguientes páginas para referencia futura:
Esta solución tiene un par de ventajas:
¡Disculpas por responder mi propia pregunta, y muchas gracias a otros por guiarme hacia la luz! Espero que este hilo de preguntas sea de utilidad educativa para otras personas que enfrentan problemas similares.
fuente
Esta puede ser una respuesta tonta, ya que puede ser un objetivo de aprendizaje para los estudiantes de posgrado, pero ¿hay alguna razón por la que no está editando los atributos en QGIS con el uso de la Calculadora de campo? En versiones anteriores de QGIS (pre 1.7), los atributos de edición directamente dentro de QGIS no eran posibles; de ahí la necesidad de editar archivos .DBF en OpenOffice, etc.
A partir de 1.7 y 1.8 puede editar datos de atributos directamente en la Calculadora de campo, con la capacidad de realizar expresiones condicionales. También hay complementos de Python Attribute disponibles, que pueden proporcionar opciones adicionales para la edición de atributos. Esta puede ser una solución y / o una opción para su tutorial.
Como anterior estudiante de maestría y ahora empleado de la universidad, entiendo este problema, el requisito anterior de realizarlo fuera de QGIS, y ahora aprecio la capacidad de realizar todas las ediciones de atributos dentro de QGIS. Estaré encantado de ayudarlo con esto más, si lo desea.
fuente
Puede usar la Base de LibreOffice para modificar sus archivos dbf .
Ahora puede comenzar a editarlos. Esperemos que eso sea lo suficientemente bueno para sus propósitos.
También puedes probar DBF Explorer, aunque solo es Windows. Sin embargo, tiene búsqueda y reemplazo.
fuente