00001 /* ////////////////////////////////////////////////////////////////////////// 00002 // // 00003 // This code is Copyright (c) 2008-2010 LizardTech, Inc, 1008 Western // 00004 // Avenue, Suite 200, Seattle, WA 98104. Unauthorized use or distribution // 00005 // prohibited. Access to and use of this code is permitted only under // 00006 // license from LizardTech, Inc. Portions of the code are protected by // 00007 // US and foreign patents and other filings. All Rights Reserved. // 00008 // // 00010 /* PUBLIC */ 00011 00012 #ifndef __LIDAR_POINT_SOURCE_H__ 00013 #define __LIDAR_POINT_SOURCE_H__ 00014 00015 #include "lidar/Metadata.h" 00016 #include "lidar/PointIterator.h" 00017 #include "lidar/ProgressDelegate.h" 00018 00019 LT_BEGIN_LIDAR_NAMESPACE 00020 00040 class PointSource : public Object 00041 { 00042 ABSTRACT_OBJECT(PointSource); 00043 public: 00044 typedef lt_int64 count_type; 00045 00051 virtual const PointInfo &getPointInfo(void) const = 0; 00052 00059 size_t getNumChannels(void) const; 00060 00069 bool hasChannel(const char *name) const; 00070 00080 const ChannelInfo &getChannel(size_t idx) const; 00081 00091 const ChannelInfo *getChannel(const char *name) const; 00092 00098 virtual count_type getNumPoints(void) const = 0; 00099 00107 virtual const char *getWKT(void) const = 0; 00108 00120 virtual void loadMetadata(Metadata &metadata, 00121 bool sanitize) const = 0; 00122 00128 virtual const Bounds &getBounds(void) const = 0; 00129 00137 virtual const double *getScale(void) const = 0; 00138 00146 virtual const double *getOffset(void) const = 0; 00147 00153 virtual size_t getNumClassIdNames(void) const = 0; 00154 00161 virtual char const * const *getClassIdNames(void) const = 0; 00162 00176 virtual double getTotalWork(const Bounds &bounds, 00177 double fraction) const = 0; 00178 00192 virtual PointIterator *createIterator(const Bounds &bounds, 00193 double fraction, 00194 const PointInfo &pointInfo, 00195 ProgressDelegate *delegate) const = 0; 00196 00205 size_t read(const Bounds &bounds, 00206 PointData &points, 00207 ProgressDelegate *delegate) const; 00208 }; 00209 00210 LT_END_LIDAR_NAMESPACE 00211 #endif // __LIDAR_POINT_SOURCE_H__
LizardTech |