a `e@sddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddl mZddl mZddlmZdd Zd d Zd d ZddZddZddZddZdS)N)CRS) double_quote)log)io)system)get_max_memorycCsHtt|g}|j}dd|D}t|ddd}t|S)NcSsg|]\}}d|vr|qS)readers).0keyvalr r /code/opendm/align.py z'get_point_cloud_crs..rsrs horizontal) pdalPipelinejsondumps quickinfoitemsr from_stringstr)filepipelinemetadataZreader_metadatacrsr r r get_point_cloud_crss rcCs:t|d}t|jWdS1s,0YdS)Nr)rasterioopenrr)rfr r r get_raster_crssr#cCs6tj|dd}tt|d|d|g}||S)N_reprojected_tmppostfixzfilters.reprojection)typeout_srs)rrelated_file_pathrrrrexecute)rr(out_filerr r r reproject_point_clouds r,cCs@tj|dd}t|t||td}tdjfi||S)Nr$r%)inputoutputr( max_memoryzPgdalwarp -t_srs {out_srs} {input} {output} --config GDAL_CACHEMAX {max_memory}% )rr)rrrrunformat)rr(r+kwargsr r r reproject_raster%s r3c Csbtj|rt|t|t|}td|tj |\}}d}| dvrdt |}t }n,| dvr~t|}t }ntd|dSg}ztd|||krtd||f|||}||ttj|||d} t| \} } | | td|td t| | | } td t| | | | } tj| | | j| j| j| d}|}ttj|d d >}| jd =| jd =| t!j"| j| jdddWdn1s0Yt#j$|d t%dd&d}|W|D]}tj'|rt(|qS]}tj'|rt(|qn&|D]}tj'|r| |q>Wdn1s0YWdn1s0YdS) Nrrr4zv z 1r:)r<r; )rOarrayr! readlines startswithrPstriprQdotrNrMr_rr^) input_objraZ geo_offsetZ output_objZg_offfinfoutlineslinevvtr r r transform_objs    $ru)r=r@rrJrHrnumpyrOr rasterio.crsr opendm.utilsropendmrrropendm.concurrencyrrr#r,r3r]rdrur r r r s(       G