Quesito su caricamento in Qgis di un allegato Pdf composto da più layers

877 views
Skip to first unread message

Michele Scarbolo

unread,
Nov 26, 2018, 8:54:26 AM11/26/18
to qgis_ut...@googlegroups.com
Buongiorno.
Ho la necessità di caricare in Qgis alcuni layer di un allegato PDF. Vi chiedo cortesemente un suggerimento e un feedback.
Grazie.
Michele

Pietro Rossin

unread,
Nov 26, 2018, 10:18:35 AM11/26/18
to Michele Scarbolo, qgis_ut...@googlegroups.com
È un pdf georiferito o senza riferimento spaziale? 

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "QGIS_Utenti_FVG" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a qgis_utenti_f...@googlegroups.com.
Per postare in questo gruppo, invia un'email a qgis_ut...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/qgis_utenti_fvg.
Per altre opzioni visita https://groups.google.com/d/optout.

Daniele

unread,
Oct 3, 2019, 11:19:10 AM10/3/19
to QGIS_Utenti_FVG
Siccome dopo il post di Michele ci siamo ritrovati alcune volte in ufficio per definire e risolvere il problema di comune interesse per entrambi i Servizi, riporto di seguito la soluzione trovata per convertire in Win 10 un layer vettoriale, presente all'interno di un .pdf, prima in formato .dxf e successivamente con QGIS 2.18.XX rototraslarlo su un shapefile di riferimento con S.R. EPSG 6708.

Se si vuole estrarre un layer specifico da un file PDF vettoriale o geospaziale contenente decine di layers, la via più semplice ma proprietaria è utilizzare Acrobar Pro o NitroPDF. Con quest'utimo si devono deselezionare tutti layers che non si desidera esportare e salvare in .PDF solo quelli rimasti selezionati.

Altrimenti, per esportare tutte le geometrie presenti in un PDF vettoriale, si può utilizzare in Windows il programma open source "pstoedit" disponibile a questo indirizzo : https://sourceforge.net/projects/pstoedit/files/pstoedit/3.73/pstoeditsetup_win32.exe/download 
Richiede la presenza nel PC della libreria GhostScript a 32 bit, che si può trovare a questo indirizzo :  https://sourceforge.net/projects/ghostscript/files/latest/download 

A questo punto, conviene suddividere il procedimento in due fasi, la prima di estrazione dei layer vettoriali contenuti nel file .PDF e la seconda di rototraslazione in QGIS.

Partiamo dalla prima:
P.1) Dopo avere installato Pstoedit e GhostScript sul PC, spostare il file .PDF nella cartella dove si trova Pstoedit, in Win 10 dovrebbe essere "C:/Programmi(x86)"
P.2) Rinominare il file .PDF in "originale.PDF"
P.3) Da riga di comando, aperta all'interno della cartella "C:/Programmi(x86)/Pstoedit", copiare ed eseguire il seguente comando :  
pstoedit -f "dxf_s" originale.pdf estratto.dxf
P.4) Attendere finché il programma non ha terminato la conversione, quindi controllare che nella cartella "C:/Programmi(x86)/Pstoedit" sia presente il file "estratto.dxf" di dimensioni maggiori dell'"originale.pdf".

Curiosità inspiegabile :-) , ho provato ad aprire con Autocad Map 2015 (co. Autodesk) un file .dxf di circa 200 MB che avevo ottenuto con pstoedit, ma l'applicativo si è rifiutato di importare il .dxf segnalando un errore in fase di lettura, mentre, utilizzando QGIS 2.18 l'importazione dello stesso file, contenente circa 136.000 geometrie, è andata a buon fine.
Chi ha voglia di scoprire le ulteriori potenzialità offerte da pstoedit può consultare il file index.htm presente nella cartella di installazione o dare il comando : "pstoedit -help".

Un'ulteriore modalità di estrazione, potenzialmente molto versatile, è costituita dal comando "ogr2ogr" contenuto nella libreria GDAL/OGR.
Permette di estrarre tutti i layer presenti in un PDF vettoriale, mantenendo il nome di ciascun layer come nel file originale ed offrendo la possibilità di convertirli in molti altri formati, tra cui .sqlite, .dxf, .dgn e .shp.   
Ad esempio, digitando nella riga di comando OSGeo4W Shell la seguente stringa: 
ogr2ogr -f sqlite estratto.sqlite originale.pdf
viene effettuata la conversione del file vettoriale "originale.pdf" nel DB "estratto.sqlite" apribile in QGIS.
Mentre con il comando : 
ogr2ogr -skipfailtures -f "ESRI shapefile" estratto.shp originale.pdf
viene portata a termine la conversione del PDF in shapefile, anche in presenza di errori topologici. Tutti i layer vengono salvati come shapefile nella cartella "estratto.shp".
Purtroppo, nel test che ho svolto, in entrambe le modalità del comando "ogr2ogr", l'estrazione di un file PDF contenente numerosi layer, ha correttamente convertito tutti i layer tranne uno, ovviamente quello a cui ero interessato, ruotandolo, ma inspiegabilmente solo quello, di un angolo compreso tra i 90° e i 120°.

Seconda parte: come rototraslare e scalare un layer vettoriale non georiferito su geometrie correttamente posizionate nel sistema di riferimento prescelto.
R.1) Aprire in QGIS il file estratto.dxf, che è stato prodotto al punto P.4, e salvare tale layer in formato shapefile in modo da consentirne la modifica.
R.2) Verificare la presenza di eventuali errori topologici con la funzione presente in Vettore->Validatore topologico->Validatore topologico. 
R.a.3) Se lo strumento dovesse segnalare la presenza di errori topologici nelle geometrie, per eliminarli provare ad utilizzare lo specifico strumento di controllo della validità, presente tra gli strumenti di processing
R.a.4) Altrimenti si può adottare il procedimento spiegato in questo tutorial di Anita Graser, che fa uso della funzione di processing v.buffer.distance:  https://anitagraser.com/2017/08/29/fixing-invalid-polygon-geometries/

R.5) Solitamente, il layer vettoriale estratto non è georiferito ed inoltre le geometrie ottenute dal PDF hanno una dimensione molto ridotta rispetto a quelle contenute nel vettoriale di riferimento con S.R. EPSG 6708, per cui è necessario portarlo in prossimità ad un layer vettoriale di riferimento, effettuando una traslazione grossolana, per esempio utilizzando le coordinate SW del foglio della CTRN 5000 sul quale vogliamo posizionare il vettoriale e successivamente ruotarlo e traslarlo in modo interattivo più preciso su alcuni spigoli dell'edificato della CTRN 5000 preso come riferimento con S.R. EPSG 6708. 

R.6) Uno strumento utile allo scopo è il plugin "Vector Affine Trasformation", che se non risulta già installato, va aggiunto attraverso il menù strumenti : Plugins-> Gestisci ed installa Plugin.
Una volta installato lo si esegue andando in Vettore->Geoprocessing tools->Affine trasformation oppure cliccando sull'icona a forma di paralleleogramma.
Nel riquadro "Trasformation Matrix" si devono aggiungere le opportune coordinate x e y nelle due caselle più a destra delle tre, in modo da traslare il disegno vettoriale estratto dal PDF il più vicino possibile alle geometrie vettoriali di destinazione, per esempio utilizzando le coordinate SW del foglio della CTRN 5000 sul quale vogliamo posizionare il vettoriale.
Per una descrizione più dettagliata rimando ai seguenti link: 

R.6) Per effettuare una rototraslazione più precisa in modo interattivo, ad esempio facendo coincidere alcuni punti del vettoriale estratto dal PDF su alcuni spigoli dell'edificato della CTRN 5000 preso come riferimento, si deve installare il plugin "Vector Bender", per trovarlo assicurarsi di avere selezionato in Plugins-> Gestisci ed installa Plugin -> Impostazioni, l'opzione "Mostra anche plugin sperimentali"
Per una descrizione completa del funzionamento del plugin rimando ai seguenti link: 

Purtroppo non ho trovato altri procedimenti più speditivi con strumenti open source. 
Reply all
Reply to author
Forward
0 new messages