8 votos

Extracción de datos vectoriales/puntuales de un archivo PDF vectorial no georreferenciado de una sola capa

Estoy intentando extraer datos de puntos de un archivo PDF vectorial no georreferenciado, para importarlo a QGIS/ArcGIS. Se puede descargue una copia del archivo PDF aquí si está interesado, pero he intentado incluir capturas de pantalla de las partes relevantes para que no sea necesario ya que es un archivo muy grande (~171 MB).

El archivo PDF es un mapa de los recursos minerales de Afganistán, que tiene este aspecto:

Full view of map

Aquí hay una imagen de cerca de un pequeño segmento del mapa -- observe que contiene un montón de ubicaciones etiquetadas (ciudades/provincias, etc.), regiones coloreadas (que representan tipos geológicos/de roca), y datos de puntos con iconos de diferentes colores/formas (que representan depósitos de minerales/petróleo conocidos): Closeup of map with desired point features

Estoy interesado principalmente en extraer las localizaciones de los pequeños iconos que representan las geo-localizaciones de los depósitos de minerales/petróleo, y utilizarlos para generar datos de puntos que pueda importar en QGIS. Es decir, para todos los iconos enumerados en la leyenda de abajo, quiero encontrar cualquier instancia en el mapa y crear una tabla que tiene su ubicación x, y el campo "categoría" que coincide con las categorías que figuran en la leyenda: map legend

El archivo PDF no parece estar georreferenciado, pero el mapa está dibujado a escala y rodeado de una cuadrícula de latitud y longitud. El mapa contiene la siguiente información sobre la escala (y los autores): scale of map

En la esquina inferior izquierda hay la siguiente información sobre la proyección que creo que podría utilizarse de alguna manera para mapear desde las coordenadas (x,y) en el archivo PDF a las coordenadas (x,y) en WGS84:

Projection info, orientation, data sources, etc in bottom left

Obviamente, si hay una manera fácil de hacer esto en QGIS, me encantaría saberlo ... pero de mis búsquedas hasta ahora, parece probable que voy a tener que escribir código para extraer los datos del PDF ...

Si ese es el caso, entonces estaría interesado en bibliotecas de Python/C/C++/Scheme que pudieran ser utilizadas para extraer la información que he descrito anteriormente. Y si no existen bibliotecas que puedan hacer esto fácilmente, entonces por favor comparte ideas sobre recursos/técnicas que puedan ayudarme a codificar mi propia solución para esto.

Cualquier idea sobre cómo abordar este problema sería útil, aunque sólo resuelva una pequeña parte...


ACTUALIZACIÓN:

Así que he experimentado un poco con una herramienta FOSS llamada pstoedit que puede extraer algunos de los datos del archivo PDF y convertirlos en un archivo DXF (un formato CAD común con el que QGIS puede trabajar). He utilizado el DXF con splines opción de formato ( pstoedit -f dxfs infile.pdf outfile.dxf ) para convertir el archivo, y obtuve un archivo DXF que QGIS pudo importar utilizando WSG84 (todavía no he descubierto cómo utilizar la información de proyección/referencia en la parte inferior izquierda del mapa para superponer estos datos de puntos, en las ubicaciones correctas, sobre mi mapa base de Afganistán).

Sin embargo, hay muy poca organización de estos datos - son sólo datos (x,y) y nombres genéricos de campos de texto como "Text" o "EntityHandle" (ver barra lateral izquierda en la imagen de abajo). Y como usuario30184 señalaron en su respuesta, todos los datos están mezclados en una capa (0). Así que no hay una forma clara de asociar los iconos gráficos con las etiquetas de texto individuales (categorías de depósitos minerales) de la leyenda. Esto es lo que parece hasta ahora - Voy a publicar más si hago más progresos:

DXF file imported into QGIS

0 votos

Dado que la página web dice que "todos los datos presentados en el mapa están también disponibles en formato GIS", ¿ha intentado ponerse en contacto con los autores o con el USGS?

0 votos

He intentado ponerme en contacto con el USGS, pero no sé si me van a responder... y mientras tanto estoy algo presionado por el tiempo y me preguntaba si podría extraer los datos fácilmente sin tener que esperar su respuesta... e incluso si me responden, me gustaría saber cómo extraer los datos geográficos de los PDF en general, porque creo que será útil en los casos en los que los autores no están localizables o dispuestos a compartir los datos en bruto.

0 votos

No es posible tener un método "en general", porque el PDF es un lenguaje de descripción de páginas y la página podría construirse de mil maneras. Al menos han distribuido la versión vectorial, pero si los puntos que quieres no tienen los metadatos correctos, podrías estar atascado. ¿Has intentado abrirlo en Inkscape? Es demasiado grande para mi pequeño portátil.

3voto

Joe Puntos 16

Puede probar lo que GDAL puede encontrar en el documento PDF con ogrinfo y gdalinfo.

ogrinfo Afghan_Mingeol_V2.pdf
Warning 4: Failed to open Afghan_Mingeol_V2.pdf, No error.
FAILURE:
Unable to open datasource `Afghan_Mingeol_V2.pdf' with the following drivers.

El resultado significa que GDAL no pudo encontrar los datos vectoriales del PDF.

gdalinfo Afghan_Mingeol_V2.pdf
Driver: PDF/Geospatial PDF
Files: Afghan_Mingeol_V2.pdf
Size is 11400, 8100
Coordinate System is `'
Metadata:
  CREATION_DATE=D:20070329115837-04'00'
  CREATOR=Adobe Illustrator CS2
  PRODUCER=Adobe PDF library 7.77
  TITLE=afghanbase1
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0, 8100.0)
Upper Right (11400.0,    0.0)
Lower Right (11400.0, 8100.0)
Center      ( 5700.0, 4050.0)
Band 1 Block=1024x1024 Type=Byte, ColorInterp=Red
Band 2 Block=1024x1024 Type=Byte, ColorInterp=Green
Band 3 Block=1024x1024 Type=Byte, ColorInterp=Blue

Este resultado significa que el archivo PDF se escribe como una sola capa. Si las categorías se escribieran como capas separadas, se podría seleccionar una determinada capa con gdal_translate, escribirla en un nuevo archivo raster y vectorizarla con gdal_polygonize.py http://www.gdal.org/gdal_polygonize.html . Ahora me temo que no tienes mucha suerte con GDAL y QGIS.

0 votos

Sí, parece que voy a tener que convertirlo en algún tipo de formato intermedio, antes de convertirlo a un formato que QGIS pueda manejar. He intentado utilizar pstoedit para convertirlo en un DXF, y al menos extraer los datos de los puntos de esa manera, pero hay muy poca organización a la misma - que, básicamente, acaba de extraer un conjunto de todos los datos de la línea / ruta y un conjunto de todos los datos de los puntos, y agrupó todo en uno de esos dos conjuntos. Voy a tratar de jugar con algunas de las opciones más avanzadas de conversión PDF->DXF de pstoedit, y también buscar soluciones para convertirlo a SVG de alguna manera ...

3voto

BWW Puntos 302

Sólo cambia tu enfoque. De hecho, tal vez no necesites luchar con la cuestión técnica.

¿Por qué?

Pude encontrar metadatos en relación con los datos del mapa que está intentando extraer. Los metadatos hacen referencia a cada archivo shape utilizado para producir el mapa.

Entonces, pude encontrar las capas originales y no sólo su referencia en los metadatos. Mira este otro enlace del USGS y sólo usar el shp.

P.D.: Puede que me equivoque ya que no he inspeccionado todos los conjuntos de datos en detalle

0 votos

Gracias por el enlace. Tiene un pequeño subconjunto de los datos que estoy buscando (pozos de petróleo), y el shapefile de carreteras será útil. Sin embargo, la mayoría de los datos sobre depósitos minerales no están en ninguno de los shapefiles que has proporcionado, y sólo algunos de los shapefiles proporcionados cubren toda la nación. Yo también he intentado encontrar el conjunto de datos completo, pero sólo he podido encontrar pequeños fragmentos, como los que has enlazado.

3voto

CodeSlave Puntos 7133

Dado que este mapa fue probablemente creado en Illustrator, intente deconstruirlo con Illustrator.

Abra el PDF en Illustrator y todos los 272 aparecen y se nombran correctamente.

Desactivar/borrar cualquier trama innecesaria como el relieve sombreado

Alternativamente, elimine TODAS las capas innecesarias y conserve sólo la litología/símbolos que desee.

Exportar mapa a DWG o DXF

Abrir en ArcMap

Por supuesto, DXF/DWG está basado en vectores, por lo que en lugar de puntos obtendrás los polígonos/contornos reales de los símbolos, pero podrías convertirlos en centroides con atributos con un simple script. Por otro lado, obtendrá todos los vectores con el atributo "nombre de la capa". Puedes controlar la editabilidad (apeareance vs máxima editabilidad) en el diálogo de opciones de exportación DXF/DWG.

La ventaja de este enfoque es que se conservan TODAS las capas.

En cuanto a la georreferenciación, convierta todo en shapefiles y utilice las herramientas de ajuste espacial de ArcGIS. Dado que las coordenadas se dan en el mapa, cree puntos proyectados que coincidan con esas coordenadas y ajuste las esquinas de la cuadrícula y las tics (que también se importan en el mismo DXF que desde illustrator) a estos puntos.

Captura de pantalla de Illustrator: enter image description here

Después de exportar a DWG y abrirlo en ArcMap:

enter image description here

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