//----------------------------------------------------------------------------- /// <summary> /// Calculates the size of the canvas and determine the number of required tiles. /// It then creates polygons (rectangle) for each area considering the given offset. /// </summary> /// <param name="prmFiles">List of LAS files to be processed</param> private void UpdateCommonHeader(IEnumerable <String> prmFiles) { m_AreaHeader = GetDefaultLasHeader(); foreach (String lasFile in prmFiles) { using (TcLasReader lasReader = new TcLasReader(lasFile)) { m_AreaHeader.MinX = Math.Min(m_AreaHeader.MinX, lasReader.Header.MinX); m_AreaHeader.MinY = Math.Min(m_AreaHeader.MinY, lasReader.Header.MinY); m_AreaHeader.MinZ = Math.Min(m_AreaHeader.MinZ, lasReader.Header.MinZ); m_AreaHeader.MaxX = Math.Max(m_AreaHeader.MaxX, lasReader.Header.MaxX); m_AreaHeader.MaxY = Math.Max(m_AreaHeader.MaxY, lasReader.Header.MaxY); m_AreaHeader.MaxZ = Math.Max(m_AreaHeader.MaxZ, lasReader.Header.MaxZ); m_AreaHeader.XOffset = Math.Min(m_AreaHeader.XOffset, lasReader.Header.XOffset); m_AreaHeader.YOffset = Math.Min(m_AreaHeader.YOffset, lasReader.Header.YOffset); m_AreaHeader.ZOffset = Math.Min(m_AreaHeader.ZOffset, lasReader.Header.ZOffset); m_AreaHeader.XScaleFactor = Math.Min(m_AreaHeader.XScaleFactor, lasReader.Header.XScaleFactor); m_AreaHeader.YScaleFactor = Math.Min(m_AreaHeader.YScaleFactor, lasReader.Header.YScaleFactor); m_AreaHeader.ZScaleFactor = Math.Min(m_AreaHeader.ZScaleFactor, lasReader.Header.ZScaleFactor); m_TileInfos[lasFile] = new TcIndexedLasInfo(lasFile) { Header = lasReader.Header }; } } }
//----------------------------------------------------------------------------- public TcTileLasReader(TcIndexedLasInfo prmInfo) : this(prmInfo.LasFile, prmInfo.TileInfoCollection) { }