Índice
Breve introducción a SIG: https://docs.qgis.org/2.18/en/docs/gentle_gis_introduction/
Sistemas de coordenadas: https://docs.qgis.org/2.18/en/docs/gentle_gis_introduction/coordinate_reference_systems.html
Fuente: https://www.colombiaenmapas.gov.co
Guía para georreferenciar imágenes RASTER:
IGAC tiene los datos en ESRI sobre un servicio REST
Fuentes:
Maxar es una capa de imágenes satelitales de buena resolución de tipo XYZ
Según una de las fuentes, necesitamos:
Parece que no hay acceso a una api key gratuita para usarla
Para este ejercicio usamos dos conjuntos de datos:
Teníamos una base de datos en hoja de cálculo con 89 puntos georreferenciados. La importamos a QGIS como .csv y luego aplicamos el siguiente proceso para convertirla a polígono.
Descargamos los datos de Distritos de riego activos del portal de Datos Abiertos del Estado colombiano y a partir de este archivo en .csv requeríamos convertir sus campos de latitud y longitud a coordenadas decimales.
Para ello hicimos lo siguiente:
Dado que los datos vienen en el formato GMS (Grados, Minutos y Segudos),
por ejemplo,“5° 19.566’ N”, y también algunos campos dicen “SIN INFORMACIÓN”. Por ello para este caso elegimos la opción “Coordenadas GMS”. Damos aceptar y tenemos importada nuestra capa.
Todos los objetos quedan georreferenciados con excepción de los que tenían “SIN INFORMACIÓN” en las coordenadas
Así se ve al importar la tabla de atributos
Y así se ve la capa de puntos importada:
En este caso necesitábamos extraer una tabla de coordenadas de este documento:
https://cvs.gov.co/web/wp-content/docs/docinteres/Doc_Tec_Sustraccion_DRMI.pdf
Extraer la tabla de datos del archivo PDF utilizando una herramienta de extracción de PDF como Tabula o PDFTables.
Tabula:
java -jar tabula.jar -p <número de página> -o <nombre de archivo de salida>.csv <nombre de archivo de entrada>.pdf
PDFTables: utilizar la interfaz web para cargar y extraer la tabla de datos
Cambiar los separadores decimales de comas a puntos utilizando el comando sed:
sed -i 's/,/./g' <nombre de archivo de entrada>.csv
Eliminar los interlineados en blanco entre cada línea de datos utilizando el comando sed: sed -i '/^$/d' <nombre de archivo de entrada>.csv
Encerrar entre comillas cada campo individual dentro de los campos “Este” y “Norte” utilizando el comando sed:
sed -i 's/\("[^,"]*\),\([^"]*"\)/\1;\2/g' <nombre de archivo de entrada>.csv
ambiar los separadores decimales de puntos a comas dentro de cada registro individual dentro de los campos “Este” y “Norte” utilizando el comando sed: sed -i 's/\([0-9]\)\.\([0-9]\)/\1,\2/g' <nombre de archivo de entrada>.csv
La tabla de datos estaba distribuida en 3 columnas, por tanto, una vez normalizados, usamos Libreoffice para mover las dos columnas adicionales a continuación de la primera columna aprovechando que todos los puntos estaban numerados consecutivamente. Esto también se puede hacer con línea de comandos o scripts en otros lenguajes.
En Python se puede utilizar la biblioteca pandas para leer y manipular archivos CSV. Para mover las columnas adicionales y concatenarlas con la primera columna se puede utilizar el siguiente código:
Este script puede contener errores!
import pandas as pd
df = pd.read_csv('datos.csv')
df[['Este', 'Norte']] = df[['Este', 'Norte']].apply(lambda x: x.str.replace(',', '.'))
df = df[['Punto', 'Este', 'Norte']]
df.to_csv('datos_nuevos.csv', index=False)
Este código lee el archivo datos.csv y lo carga en un objeto DataFrame de pandas. Luego se aplica una función lambda a las columnas Este y Norte, que reemplaza todas las comas por puntos. Después se reorganiza el orden de las columnas para que queden en el formato deseado y se guarda el archivo resultante datos_nuevos.csv.
Línea de comandos
También se puede utilizar la línea de comandos para lograr esta misma transformación. Aquí presentamos algunos ejemplos de comandos que se pueden utilizar en diferentes sistemas operativos.
Sed (Linux)
Para mover las columnas Este y Norte y concatenarlas con la primera columna, se puede utilizar el siguiente comando en Linux:
sed -i 's/,/./g; s/\([0-9]\) \([0-9]\)/\1,\2/g; s/ \+/,/g' datos.csv
Este comando primero reemplaza todas las comas por puntos en todo el archivo con s/,/./g. Luego busca patrones de números separados por un espacio y los reemplaza por una coma con s/([0-9]) ([0-9])/\1,\2/g. Finalmente, reemplaza todos los espacios en blanco restantes por comas con s/ +/,/g. Con esto, se puede obtener el archivo en el formato deseado.
Awk (Linux, macOS)
Para mover las columnas Este y Norte y concatenarlas con la primera columna, se puede utilizar el siguiente comando en Linux o macOS:
awk -F ',' 'BEGIN{OFS=","} {gsub(/,/,".",$2); gsub(/,/,".",$3); print $1,$2,$3}' datos.csv > datos_nuevos.csv
Este comando utiliza Awk para procesar el archivo CSV. Primero se establece el separador de campos como , con -F ‘,’ y se indica que el separador de salida también será una coma con BEGIN{OFS=“,”}. Luego, se reemplazan todas las comas por puntos en las columnas Este y Norte con gsub(/,/,“.”,$2) y gsub(/,/,“.”,$3). Finalmente, se imprimen las tres columnas en el orden deseado y se redirige la salida a un nuevo archivo CSV datos_nuevos.csv.
En R, se puede utilizar la biblioteca tidyverse para leer y manipular archivos CSV. Para mover las columnas adicionales y concatenarlas con la primera columna se puede utilizar el siguiente código:
library(tidyverse)
df <- read_csv("datos.csv") %>%
mutate(Este =
La función read.csv() solo puede leer archivos .csv que tienen delimitadores de coma. Si los datos están delimitados por espacios en blanco, se puede usar la función read.table() y especificar el separador de campo usando el argumento sep. La sintaxis correcta para leer el archivo en R sería:
datos <- read.table("ruta/al/archivo.csv", header = TRUE, sep = " ")
Donde “ruta/al/archivo.csv” debe reemplazarse con la ruta del archivo en tu sistema de archivos. Además, se debe proporcionar el argumento header = TRUE para indicar que la primera fila del archivo contiene los nombres de las columnas.
Agregar la capa CSV en QGIS utilizando el botón “Añadir capa de texto delimitado”.
Seleccionar el sistema de referencia de coordenadas adecuado en la ventana emergente y configurar las opciones de delimitación adecuadas para el archivo CSV.
Guardar la capa como un archivo Shapefile utilizando la opción “Guardar como” en el menú contextual de la capa. Seleccionar la opción de formato “ESRI Shapefile” y configurar la ubicación y el nombre del archivo de salida.
Con estos pasos, debería ser capaz de convertir un archivo PDF de tabla de datos en un archivo .shp utilizando herramientas de extracción de PDF y comandos de sed para normalizar los datos, y procesando los datos resultantes en QGIS para generar un archivo Shapefile.
Una sencilla guía para usar capas con este plugin: https://nextgis.com/blog/qms-simple-basemaps-management/#contrib
También es posible agregar capas directamente en el menú de capas:
Queremos probar este nuevo complemento. https://geocat.github.io/qgis-bridge-plugin/v4.2/bridge_dialog.html
Pero hay un problema de dependencias no resuelto con el módulo PyQtWebEngine
Inicialmente falló su instalación por faltar el módulo PyQt5. Resuelto con:
pip install PyQt5
Respuesta:
Requirement already satisfied: PyQt5 in /usr/lib/python3.10/site-packages (5.15.9)
Requirement already satisfied: PyQt5-sip<13,>=12.11 in /usr/lib/python3.10/site-packages (from PyQt5) (12.11.1)
Instalamos este otro módulo:
pip install PyQtWebEngine
No se pudo cargar el módulo SIP. El soporte para Python estará deshabilitado.
Finalmente funcionó simplemente: Instalar Arrow:
sudo pacman -S arrow
Libpodofo:
sudo pacman -S podofo
Información técnica del error:
Equipo portátil:
Versión de Python: 3.10.9 (main, Dec 19 2022, 17:35:49) [GCC 12.2.0]
Versión de QGIS: 3.28.3-Firenze Firenze, exported
5.18.19-3-MANJARO #1 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
Estoy tratando de georreferenciar una imagen .tif descargada de https://www.colombiaenmapas.gov.co. Sigo estos pasos:
1.Abro QGIS 3.28,
2: Añado capa OSM par orientarme
3. Añado imagen .tif descargada, no se muestra. Aparece este error: “Ninguna transformación disponible entre Geocoding information not available Projection Name = Unknown Units = inches GeoTIFF Units = other y EPSG:3857 - WGS 84 / Pseudo-Mercator.
No hay operaciones de coordenadas disponibles entre estos dos sistemas de referencia”
4. Consulto los metadatos descargados que no parecen contener la información de la imagen. Dado que la imagen parece no tener un SRC de origen,
5. He usado varias formas de asignarle el mismo origen del portal, MAGNA SIRGAS Nacional EPSG:9377, o el default de QGIS SRC EPSG:3857, o reproyectarlo usando el menu procesos, opción Combar(reproyectar). Con este proceso y con el siguiente paso sale error.
6. Utilicé el georreferenciador del QGIS 3.28 usando puntos desde el lienzo del mapa. La georreferenciación dice que la operación resulta exitosa, se logra crear un nuevo .tif con los puntos usados y la capa nueva se crea. Pero cuando QGIS trata de mostarrla, la pantalla principal de QGIS muestra este error:
Comando GDAL:
gdalwarp -t_srs EPSG:4326 -r near -of GTiff /home/omnibus/Descargas/C-2773-0240_modified.tif /home/omnibus/Descargas/C-2773-0240_modified-reproy.tif
Salida del comando GDAL:
ERROR 1: libarrow_dataset.so.1000: cannot open shared object file: No such file or directory
ERROR 1: libarrow_dataset.so.1000: cannot open shared object file: No such file or directory
ERROR 1: libpodofo.so.0.9.8: cannot open shared object file: No such file or directory
ERROR 1: libpodofo.so.0.9.8: cannot open shared object file: No such file or directory
ERROR 1: libarrow.so.1000: cannot open shared object file: No such file or directory
ERROR 1: libarrow.so.1000: cannot open shared object file: No such file or directory
ERROR 6: Cannot find coordinate operations from ENGCRS["Geocoding information not available Projection Name = Unknown Units = inches GeoTIFF Units = other",EDATUM[""],CS[Cartesian,2],AXIS["(E)",east,ORDER[1],LENGTHUNIT["metre",1,ID["EPSG",9001]]],AXIS["(N)",north,ORDER[2],LENGTHUNIT["metre",1,ID["EPSG",9001]]]]' to
EPSG:4326’
El proceso devolvió el código de error 1
Intento instalar las librerías pero pacman ni yay las encuentran. Tampoco encuentro repositorios donde descargar los sources.
Otras soluciones encontradas y desechadas verificar:
Buscar la ruta de las dos librerías y agregarlas a un archivo de configuración que no existía en este caso y recargar la configuración:
pip3 show pyarrow
No funcionó
sudo pacman -Ql podofo
Se encontraron las dos rutas:
/usr/lib/libpodofo.so.0.9.8
/home/omnibus/.local/lib/python3.10/site-packages/pyarrow/lib
y luego se incluyeron en un archivo:
sudo nano /etc/ld.so.conf.d/qgis.conf
y
sudo ldconfig
se reinicia y se debe probar si QGIS reconocer las librerías
Para registro: Esto se probó antes. Sin buen resultado:
Solucionado parcialmente con:
segun lo sugerido en la ultima url del sitio oficial de descargas de arrow (https://arrow.apache.org/install/) se pudo incluir “pyarrow==11.0.*” en un requirements.txt y luego instalar con:
pip3 install -r requierements.txt
Sigue saliendo esta advertencia aún en un sistema nuevo instalado desde cero