Tal vez una pregunta un poco extraña, pero déjame darte una breve explicación de los antecedentes antes de mis preguntas reales:
La microscopía de fuerza atómica (AFM, por sus siglas en inglés ) es un método que, en resumen (y para mi conocimiento limitado) permite a los investigadores escanear áreas a micro y nanoescala. Funciona "escaneando" un área utilizando una especie de sonda. Es más difícil de explicar, ya que no tengo una comprensión real de ello. Lo que sí sé, y lo que provocó mi curiosidad fue que el resultado es, de hecho, una "cuadrícula" de valores de "altura" (una matriz de, digamos, valores de 512x512 que describe la altura de la sonda en ese punto).
Entonces pensé: Bueno, aparte de la escala, ¡este es de hecho un modelo de elevación digital! ¡Y esto significa que si puedo crear un archivo DEM tal como lo entienden las herramientas SIG, podría aplicarle el análisis SIG!
Tal como están las cosas, mi otra persona trabaja en un laboratorio que tiene una máquina AFM y la está usando en uno de sus proyectos. Obtuve algunos archivos de escaneo de ella, y he logrado, usando Python (estructura y numpy), analizar estos archivos binarios y lo que tengo ahora es una matriz numpy de tamaño 512x512 llena de valores int16.
Lo que estoy planeando a continuación, y con lo que necesito ayuda es la parte de "mapeo a un DEM apropiado". Tengo algunos conocimientos sobre DEMS, pero cuando se trata de la generación real de ellos, soy bastante nuevo.
Lo que estoy pensando es que tengo que georreferenciar mis datos de alguna manera, y para esto necesito un sistema de coordenadas personalizado (plano). Imagino que mi sistema de coordenadas usaría micro o nano metros como unidades. Entonces es solo una cuestión de encontrar el tamaño del área escaneada con el AFM (esto creo que está en algún lugar del archivo binario, suponga que esto se conoce).
Actualización : también tengo varios escaneos en diferentes resoluciones, pero de la misma área. Por ejemplo, tengo esta información sobre dos escaneos:
imagen más grande:
Scan Size: 51443.5 nm
X Offset: 0 nm
Y Offset: 0 nm
imagen más pequeña (detalle):
Scan Size: 5907.44 nm
X Offset: 8776.47 nm
Y Offset: 1486.78 nm
Lo que pienso es que mi sistema de coordenadas personalizado debe tener un origen en 0,0 y para la imagen más grande puedo asignar el píxel 0,0 al valor de coordenadas de (0,0) y el píxel 512.512 el valor de coordenadas (51443.5, 51443.5 ) (Supongo que obtienes la imagen de los otros puntos necesarios).
Luego, la imagen más grande mapearía los píxeles (0,0) a (8776.47, 1486.78) y (512,512) a (8776.47 + 5907.44, 1486.78 + 5907.44)
La primera pregunta es entonces : ¿Cómo creo un def de proj4 para dicho sistema de coordenadas? Es decir: ¿cómo asigno estas "coordenadas del mundo real" a mi sistema de coordenadas personalizado (o, si sigo la sugerencia de whubers y uso un sistema de coordenadas local y mentir sobre las unidades (es decir, tratar mis nanómetros como kilómetros)
Luego tengo que transferir mi matriz de 2 dimensiones numpy a un formato de archivo DEM georreferenciado. Estaba pensando en usar GDAL (o, más bien, los enlaces de Python).
La segunda pregunta es entonces : ¿Cómo creo un DEM georreferenciado a partir de datos "arbitrarios" como el mío? Preferiblemente en Python y usando bibliotecas de código abierto.
El resto debería ser bastante fácil, solo es cuestión de usar las herramientas de análisis adecuadas. El problema es que esta tarea está impulsada por mi propia curiosidad, por lo que no estoy muy seguro de lo que debería hacer con un DEM a nanoescala. Esto suplica al
3ª pregunta : ¿Qué hacer con un DEM a nanoescala? ¿Qué tipo de análisis se puede hacer, cuáles son las herramientas apropiadas para el análisis DEM y finalmente: es factible hacer un mapa con sombreado y líneas de contorno a partir de estos datos? :)
Agradezco todas las sugerencias y sugerencias, pero tenga en cuenta que estoy buscando alternativas gratuitas, ya que este es un proyecto estrictamente basado en pasatiempos sin presupuesto ni financiación (y no tengo acceso a ninguna aplicación GIS con licencia). Además, sé que Bruker, la compañía que vende estas máquinas AFM, envía algún software, pero usarlo no sería divertido.
fuente
Respuestas:
Bueno, parece que resolví los problemas 1 y 2 al menos. Código fuente completo en github , pero alguna explicación aquí:
Para un CRS personalizado, decidí (según la sugerencia de Whubers) "engañar" y usar medidores como unidad. Encontré un "crs local" en apatialreference.org ( SR-ORG: 6707 ):
Usando Python y GDAL esto es bastante fácil de leer:
Además, mejorar un DEM con GDAL fue bastante sencillo (terminé con un geo-tiff de banda única). La línea parser.read_layer (0) devuelve mi matriz 512x512 descrita anteriormente.
La parte más complicada fue descubrir cómo "georreferenciar" correctamente mi archivo, terminé usando SetGeoTransform , obteniendo los parámetros de la siguiente manera:
Probablemente, esta última parte es la que no estoy más segura, lo que realmente estaba buscando era algo línea * gdal_transform -ullr *, pero no pude encontrar la forma de hacerlo programáticamente.
Puedo abrir mi GeoTIFF en Qgis y verlo (y compararlo visualmente con el resultado del programa Bruker parece correcto), pero realmente no he respondido mi pregunta 3; Qué hacer con estos datos. ¡Entonces, aquí estoy abierto para sugerencias!
fuente