4 votos

¿Es posible localizar un punto marcador específico en un mapa de bits utilizando la pitón y utilizar esa ubicación para la georeferenciación

Tengo varios escaneos del mismo mapa, que me gustaría georeferenciar. No puedo usar arcpy.WarpFromFile_management(...) ya que los rasters son ligeramente diferentes debido al escaneo.

¿Existe la posibilidad de reconocer automáticamente (mediante la pitón) los puntos de marca en el mapa, que se utilizan como puntos de control para la georreferenciación? Como el mapa es en blanco y negro, los puntos podrían ser de un color específico para ser fácilmente identificados. Estoy usando ArcGIS 10.3 básico con o sin y extensiones. ¿Alguna idea?

0 votos

No creo que se pueda reconocer un punto de marcador en el mapa. Una vez hice un registro por lotes de varias imágenes "similares" determinando un conjunto de coordenadas de base de la pantalla y utilizando desplazamientos de las mismas (desplazamientos de píxeles n, s, e o w). Los desplazamientos deben determinarse manualmente. Se ejecutó en el shell OSGeo4W sin embargo, así que si usted está abierto a una solución QGIS, voy a publicar una respuesta.

0 votos

Parece interesante. Aunque preferiría una solución de ArcGIS, también estoy abierto a QGIS y le agradecería su respuesta.

1voto

jbchurchill Puntos 1637

Has comentado que estarías abierto a una solución QGIS. Esto me ha funcionado.

Como sabes, la georreferenciación de una imagen requiere identificar puntos en la imagen y asignar coordenadas del mundo real a las coordenadas de la pantalla en la imagen. Como comenté en la pregunta, no conozco ninguna forma de identificar los marcadores en una imagen de forma automática. si las imágenes tienen la misma resolución y tienen las mismas características/marcadores en ellas, puedes determinar cuáles son las coordenadas de la imagen y luego vincularlas a las coordenadas del mundo real en un script. La parte difícil que hay que hacer manualmente es identificar las coordenadas de la imagen. Si la mayoría de las imágenes tienen las mismas coordenadas de imagen, pero algunas son diferentes, esto será bastante fácil. Puede tener un valor por defecto y luego identificar un desplazamiento X y un desplazamiento Y para cada imagen no predeterminada. Hice esto para unas 1200 imágenes tif. Utilicé la herramienta XY de Photoshop para identificar las coordenadas de la imagen, pero también puedes utilizar IRFANVIEW, que es una descarga gratuita y una excelente herramienta de edición de imágenes (ver las instrucciones más abajo para determinar las coordenadas).

Las coordenadas de la imagen comienzan en la parte superior izquierda y nuestro sistema espacial comienza (tiene su eje) en la parte inferior izquierda, pero eso no importará ya que sólo estamos atando una a otra usando el comando gdal_translate.

1) Identificar las coordenadas de la imagen por defecto. Las tenía en una lista como esta y la mayoría de mis imágenes (mapas de gama de animales en mi caso) funcionaban bien usando estos números...
1) 4, 366
2) 586, 167
3) 239, 6
4) 287, 507 (centro de la península)
5) 68, 570
6) 19, 256

Sin embargo, a veces los "marcadores" no estaban en la misma ubicación y tenía que identificar un desplazamiento en X y/o Y donde las coordenadas de la pantalla eran diferentes por un número n de píxeles (el desplazamiento podía ser positivo o negativo).
T_02_01.tiff (tiene un desplazamiento Y de 5)
1) 4, 371

2) A continuación tuve que escribir el primero de los 2 archivos por lotes de Windows (.bat) que funcionan juntos. Las variables que se establecen en la parte superior x1-x6 y y1-y6 representan mis coordenadas de pantalla por defecto. Luego utilicé declaraciones IF para los desplazamientos en las imágenes individuales que no eran por defecto (tenían desplazamientos X o Y o ambos). Luego uso nuevas variables x, y y sumo el desplazamiento y las x, y originales. La variable %1 es el nombre del archivo que se pasa a este archivo por lotes desde el segundo archivo por lotes. Deberá actualizar las rutas de entrada y salida (mi carpeta de entrada era INPUT_NEW y la de salida TMP). Ponga ambos archivos batch en la raíz de las carpetas de entrada y salida y funcionará como lo tengo aquí. SET x1=4
SET x2=586
SET x3=239
SET x4=287
SET x5=68
SET x6=19
SET y1=366
SET y2=167
SET y3=6
SET y4=507
SET y5=570
SET y6=256
SET XSHIFT=0
SET YSHIFT=0
IF %1 == T_01_04.tiff (
SET YSHIFT=1
)
IF %1 == T_01_06.tiff (
SET YSHIFT=5
)
IF %1 == T_02_01.tiff (
SET YSHIFT=5
)
IF %1 == T_64_17.tiff (
SET XSHIFT=1
SET YSHIFT=-6
)
REM MÁS CONDICIONES AQUÍ...

SET /a x1b=%XSHIFT%+%x1%
SET /a x2b=%XSHIFT%+%x2%
SET /a x3b=%XSHIFT%+%x3%
SET /a x4b=%XSHIFT%+%x4%
SET /a x5b=%XSHIFT%+%x5%
SET /a x6b=%XSHIFT%+%x6%
SET /a y1b=%YSHIFT%+%y1%
SET /a y2b=%YSHIFT%+%y2%
SET /a y3b=%YSHIFT%+%y3%
SET /a y4b=%YSHIFT%+%y4%
SET /a y5b=%YSHIFT%+%y5%
SET /a y6b=%YSHIFT%+%y6%
gdal_translate -of GTiff -gcp %x1b% %y1b% 498353 9.75475e+06 -gcp %x2b% %y2b% 1.13853e+06 9.99319e+06 -gcp %x3b% %y3b% 747172 1. 01571e+07 -gcp %x4b% %y4b% 818043 9.6109e+06 -gcp %x5b% %y5b% 572611 9.5335e+06 -gcp %x6b% %y6b% 508386 9.87613e+06 "INPUT_NEW\%1" "TMP\%1"

El segundo archivo por lotes for /f %%f in ('dir /b *.tiff INPUT_NEW') do (
echo "Procesando %%f"
gd3trans655s %%f
gdwarp %%f
)

3) A continuación, debe ejecutar estos archivos por lotes en el shell OSGeo4W que se instala con QGIS. Es una especie de línea de comandos de Windows que le da acceso a la biblioteca gdal (necesaria para que podamos ejecutar los comandos gdal_translate y gdwarp).

Métodos para determinar las coordenadas de la imagen
Photoshop
ttp://graphicdesign.stackexchange.com/questions/22175/how-can-i-find-the-coordinates-of-a-pixel-in-photoshop-cs4

Irfanview
Basta con mantener pulsado el botón izquierdo del ratón para que aparezcan las coordenadas en la barra de título.

0 votos

Gracias por su esfuerzo. Estoy empezando con Python en combinación con QGIS. Parece muy diferente a Python en combinación con ArcGIS. Voy a dar a su solución un intento una vez que estoy un poco más lejos con QGIS / Python.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X