¿Cómo editar fácilmente datos de atributos usando expresiones regulares?

30

Estoy escribiendo un tutorial para estudiantes de MSc que utiliza QGIS. Una de las tareas requiere la modificación de los datos del atributo. (vea el borrador en pdf del tutorial aquí si está interesado).

La pregunta es cómo hacer que editen los datos del atributo. Sé que esta pregunta ha sido formulada anteriormente , y la respuesta solía ser simple : simplemente use LibreOffice calc para modificarlo y luego guárdelo, asegurándose de que el orden de las filas y los títulos de las columnas se mantengan igual. He utilizado este enfoque antes de gran efecto.

Desafortunadamente, la solución ya no funciona: guardar el archivo .dbf, en LibreOffice (5.4.2) o OpenOffice (3.4.1) Calc calcula 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 MSc que hagan esto la próxima semana? He considerado las siguientes opciones:

  1. En su lugar, use R (excelente para mí, pero atemorizante para los estudiantes)
  2. Edite el archivo como un archivo .csv, y luego únase según la marca de tiempo (está bien, pero parece demasiado complejo, y podría introducir más errores en la práctica de 2 horas)
  3. Use un programa alternativo: probé 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 "points.dbf" en LibreOffice - save. Vuelva a abrir "points.shp" en QGIS y observe la tabla de atributos codificados. Los otros shapefiles en la carpeta .zip ya han sido corrompidos por LibreOffice y OpenOffice para ilustrar cómo se ve el problema para mí.

En resumen, ¿cómo resuelvo mejor este problema?

    
pregunta RobinLovelace 08.11.2012 - 15:27

3 respuestas

18

La respuesta más simple que he encontrado, basada en el consejo de Ryan Garnett para hacerlo dentro de QGIS:

Usar regexp_replace

Esta capacidad se agregó 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 suelen agregar los colaboradores de OSM), se puede usar la siguiente función:

regexp_replace ("name", 'Tesc. *', 'Tesco')

SupongoqueestaeslafuncionalidaddeexpresiónregularPythonic,yaqueesunpocodiferentedegrep,queheusadoantes.

Creoquesenecesitamásdocumentación(losdetallesen sitio web de QGIS están limitados a unas pocas palabras) es necesario sobre cómo funciona esto, por lo que he marcado las siguientes páginas para futuras consultas:

Esta solución tiene un par de ventajas:

  1. Simple: no se necesitan programas ni complementos adicionales
  2. Presenta a los estudiantes el poder de las expresiones regulares, usando las funciones (Pythonic?) (el "'" que representa el texto es interesante. Advertencia: "o ningún símbolo falla) y las funciones de la línea de comandos.

¡Disculpas por responder a mi propia pregunta y muchas gracias a otros por guiarme hacia la luz! Espero que este hilo de preguntas sea de uso educativo para otros que enfrentan problemas similares.

    
respondido por el RobinLovelace 09.11.2012 - 14:08
9

Esta puede ser una respuesta tonta, ya que puede ser un objetivo de aprendizaje para los estudiantes graduados, pero ¿existe 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), no era posible editar los atributos directamente dentro de QGIS; 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 atributos de Python disponibles, que pueden proporcionar opciones adicionales para la edición de atributos. Esto puede ser una solución, y o, una opción para su tutorial.

Como estudiante de maestría anterior y ahora empleado de la universidad, entiendo este problema, el requisito anterior para realizarlo fuera de QGIS, y ahora aprecio la capacidad de realizar todas las ediciones de atributos dentro de QGIS. Estaré encantado de ayudarle con esto más, si lo desea.

    
respondido por el Ryan Garnett 09.11.2012 - 00:23
3

Puede usar LibreOffice's Base para modificar sus archivos dbf .

  
  1. Abrir base (obtener Menú principal)
  2.   
  3. Seleccione "Conectarse a una base de datos existente" y seleccione el tipo "dBASE".
  4.   
  5. Seleccione la carpeta con sus archivos dbf.
  6.   
  7. Seleccione las opciones finales como desee y "Finalizar".
  8.   
  9. Nombre el archivo de conexión de su base de datos como desee (por ejemplo, "MyxBasefiles.odb) y guárdelo en algún lugar. De aquí en adelante, acceda a su   archivos de base de datos haciendo clic en este archivo. ooOoo, Niza.
  10.   
  11. Seleccione "Tablas" en el panel izquierdo, y están sus archivos de datos (llamados "tablas"). Meterse con ellos.
  12.   

Ahora puedes empezar a editarlos. Esperemos que eso sea lo suficientemente bueno para tus propósitos.

También puede probar DBF Explorer aunque solo sea en Windows. Aunque tiene búsqueda y reemplazo.

    
respondido por el R.K. 08.11.2012 - 15:48

Lea otras preguntas en las etiquetas