📄 esrishape.cpp
字号:
{ if( readVal<Double>(fd, mArray[i], LittleEndian ) == false ) return false; } } return true;}PolygonM::PolygonM(): ShapeObject(ShapeTypePolygonM), numParts(0), numPoints(0), parts(0L), points(0L) , mArray(0L){}PolygonM::PolygonM(const PolygonM &p): ShapeObject(ShapeTypePolygonM), numParts(p.numParts), numPoints(p.numPoints), parts(0L), points(0L) , mArray(0L){ parts = new Integer[numParts]; Integer i; for( i = 0; i < numParts; i++ ) parts[i] = p.parts[i]; points = new Point[numPoints]; mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { points[i] = p.points[i]; mArray[i] = p.mArray[i]; }}PolygonM::~PolygonM(){ delete[] parts; delete[] points; delete[] mArray;};bool PolygonM::read( int fd ){ RecordHeader rh; if( rh.read(fd) == false ) return false; SAFE_DELETE_ARRAY( parts ); SAFE_DELETE_ARRAY( points ); SAFE_DELETE_ARRAY( mArray ); Integer shapeType; if( readVal<Integer>(fd, shapeType, LittleEndian ) == false ) return false; if( shapeType != ShapeTypePolygonM ) return false; if( bbox.read(fd) == false ) return false; if( readVal<Integer>(fd, numParts, LittleEndian ) == false ) return false; if( readVal<Integer>(fd, numPoints, LittleEndian ) == false ) return false; parts = new Integer[numParts]; int i; for( i = 0; i < numParts; i++ ) { if( readVal<Integer>(fd, parts[i], LittleEndian ) == false ) return false; } points = new struct Point[numPoints]; for( i = 0; i < numPoints; i++ ) { if( points[i].read(fd ) == false ) return false; } int X = 44 + (4 * numParts); int Y = X + (16 * numPoints); if( rh.contentLength > Y ) { if( mRange.read(fd) == false ) return false; mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, mArray[i], LittleEndian ) == false ) return false; } } return true;}//////////////////////////////////////////////////////////////////////PointZ::PointZ(): ShapeObject(ShapeTypePointZ), x(0.0), y(0.0), z(0.0), m(0.0) {}PointZ::PointZ(const PointZ &p): ShapeObject(ShapeTypePointZ), x(p.x), y(p.y), z(p.z), m(p.m) {}PointZ::~PointZ() {}bool PointZ::read( int fd ){ RecordHeader rh; if( rh.read(fd) == false ) return false; Integer shapeType; if( readVal<Integer>(fd, shapeType, LittleEndian ) == false ) return false; if( shapeType != ShapeTypePointZ ) return false; if( readVal<Double>( fd, x, LittleEndian ) == false ) return false; if( readVal<Double>( fd, y, LittleEndian ) == false ) return false; if( readVal<Double>( fd, z, LittleEndian ) == false ) return false; // Sometimes, M field is not supplied if( rh.contentLength >= 18 ) if( readVal<Double>( fd, m, LittleEndian ) == false ) return false; return true;}void PointZ::print(){ printf( " %G %G %G (%G)\n", x, y, z, m );}MultiPointZ::MultiPointZ(): ShapeObject(ShapeTypeMultiPointZ), numPoints(0), points(0L), zArray(0L), mArray(0L) {}MultiPointZ::MultiPointZ( const struct MultiPointZ &mpointm ): ShapeObject(ShapeTypeMultiPointZ), bbox(mpointm.bbox), numPoints(mpointm.numPoints), zRange(mpointm.zRange), mRange(mpointm.mRange){ points = new Point[numPoints]; zArray = new Double[numPoints]; mArray = new Double[numPoints]; for( int i = 0; i < numPoints; i++ ) { points[i] = mpointm.points[i]; zArray[i] = mpointm.zArray[i]; mArray[i] = mpointm.mArray[i]; }}MultiPointZ::~MultiPointZ(){ delete [] points; delete [] zArray; delete [] mArray;}bool MultiPointZ::read( int fd ){ RecordHeader rh; if( rh.read(fd) == false ) return false; SAFE_DELETE_ARRAY( points ); SAFE_DELETE_ARRAY( zArray ); SAFE_DELETE_ARRAY( mArray ); Integer shapeType; if( readVal<Integer>(fd, shapeType, LittleEndian ) == false ) return false; if( shapeType != ShapeTypeMultiPointZ ) return false; if( bbox.read(fd) == false ) return false; if( readVal<Integer>(fd, numPoints, LittleEndian ) == false ) return false; points = new struct Point[numPoints]; Integer i; for( i = 0; i < numPoints; i++ ) { if( points[i].read(fd) == false ) return false; } if( zRange.read(fd) == false ) return false; zArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, zArray[i], LittleEndian) == false ) return false; } int X = 40 + (16*numPoints); int Y = X + 16 + (8*numPoints); if( rh.contentLength > Y ) { if( mRange.read(fd) == false ) return false; mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, mArray[i], LittleEndian ) == false ) return false; } } return true;}void MultiPointZ::print(){ printf( "Point - numPoints: %d\n", numPoints ); for( int i= 0; i < numPoints; i++ ) points[i].print();}PolyLineZ::PolyLineZ(): ShapeObject(ShapeTypePolyLineZ), numParts(0), numPoints(0), parts(0L), points(0L), zArray(0L) , mArray(0L) {}PolyLineZ::PolyLineZ(const PolyLineZ &p): ShapeObject(ShapeTypePolyLineZ), numParts(p.numParts), numPoints(p.numPoints), parts(0L), points(0L), zArray(0L) , mArray(0L) { parts = new Integer[numParts]; Integer i; for( i = 0; i < numParts; i++ ) parts[i] = p.parts[i]; points = new Point[numPoints]; zArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { points[i] = p.points[i]; zArray[i] = p.zArray[i]; } // Sometimes, M Array is not present on the file if( p.mArray != NULL ) { mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) mArray[i] = p.mArray[i]; }}PolyLineZ::~PolyLineZ(){ delete [] parts; delete [] points; delete [] zArray; delete [] mArray;}bool PolyLineZ::read( int fd ){ RecordHeader rh; if( rh.read(fd) == false ) return false; SAFE_DELETE_ARRAY( parts ); SAFE_DELETE_ARRAY( points ); SAFE_DELETE_ARRAY( zArray ); SAFE_DELETE_ARRAY( mArray ); Integer shapeType; if( readVal<Integer>(fd, shapeType, LittleEndian ) == false ) return false; if( shapeType != ShapeTypePolyLineZ ) return false; if( bbox.read(fd) == false ) return false; if( readVal<Integer>(fd, numParts, LittleEndian ) == false ) return false; if( readVal<Integer>(fd, numPoints, LittleEndian ) == false ) return false; parts = new Integer[numParts]; int i; for( i = 0; i < numParts; i++ ) { if( readVal<Integer>(fd, parts[i], LittleEndian ) == false ) return false; } points = new struct Point[numPoints]; for( i = 0; i < numPoints; i++ ) { if( points[i].read(fd ) == false ) return false; } zRange.read(fd); zArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, zArray[i], LittleEndian ) == false ) return false; } int X = 44 + (4 * numParts); int Y = X + (15 * numPoints); int Z = Y + 16 + (8 * numPoints); if( rh.contentLength != Z ) { mRange.read(fd); mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, mArray[i], LittleEndian ) == false ) return false; } } return true;}PolygonZ::PolygonZ(): ShapeObject(ShapeTypePolygonZ), numParts(0), numPoints(0), parts(0L), points(0L), zArray(0L), mArray(0L){}PolygonZ::PolygonZ(const PolygonZ &p): ShapeObject(ShapeTypePolygonZ), numParts(p.numParts), numPoints(p.numPoints), parts(0L), points(0L) , mArray(0L){ parts = new Integer[numParts]; Integer i; for( i = 0; i < numParts; i++ ) parts[i] = p.parts[i]; points = new Point[numPoints]; zArray = new Double[numPoints]; // jcm mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { points[i] = p.points[i]; zArray[i] = p.zArray[i]; // jcm // M-Array seems to be missing sometimes if(p.mArray) mArray[i] = p.mArray[i]; }}PolygonZ::~PolygonZ(){ delete [] parts; delete [] points; delete [] zArray; delete [] mArray;}bool PolygonZ::read( int fd ){ RecordHeader rh; if( rh.read(fd) == false ) return false; SAFE_DELETE_ARRAY( parts ); SAFE_DELETE_ARRAY( points ); SAFE_DELETE_ARRAY( zArray ); SAFE_DELETE_ARRAY( mArray ); Integer shapeType; if( readVal<Integer>(fd, shapeType, LittleEndian ) == false ) return false; if( shapeType != ShapeTypePolygonZ ) return false; if( bbox.read(fd) == false ) return false; if( readVal<Integer>(fd, numParts, LittleEndian ) == false ) return false; if( readVal<Integer>(fd, numPoints, LittleEndian ) == false ) return false; parts = new Integer[numParts]; int i; for( i = 0; i < numParts; i++ ) { if( readVal<Integer>(fd, parts[i], LittleEndian ) == false ) return false; } points = new struct Point[numPoints]; for( i = 0; i < numPoints; i++ ) { if( points[i].read(fd ) == false ) return false; } if( zRange.read(fd) == false ) return false; zArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, zArray[i], LittleEndian ) == false ) return false; } int X = 44 + (4*numParts); int Y = X + (16*numPoints); int Z = Y + 16 + (8*numPoints); if( rh.contentLength != Z ) { if( mRange.read(fd) == false ) return false; mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, mArray[i], LittleEndian ) == false ) return false; } } return true;}///////////////////////////////////////////////////////////////////////*struct MultiPatch{ Box bbox; Integer numParts; Integer numPoints; Integer *parts; Integer *partTypes; struct Point *points; Range zRange; Double *zArray; Range mRange; Double *mArray; MultiPatch(); MultiPatch( const MultiPatch &); virtual ~MultiPatch(); bool read( fd );};*/MultiPatch::MultiPatch(): numParts(0), numPoints(0), parts(0L), partTypes(0L), points(0L), zArray(0L), mArray(0L){ }MultiPatch::MultiPatch( const MultiPatch &mp): bbox(mp.bbox), numParts(mp.numParts), numPoints(mp.numPoints), zRange(mp.zRange), mRange(mp.mRange){ parts = new Integer[numParts]; partTypes = new Integer[numParts]; Integer i; for( i = 0; i < numParts; i++ ) { parts[i] = mp.parts[i]; partTypes[i] = mp.partTypes[i]; } points = new Point[numPoints]; zArray = new Double[numPoints]; mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { points[i] = mp.points[i]; zArray[i] = mp.zArray[i]; if( mp.mArray != 0L ) mArray[i] = mp.mArray[i]; }}MultiPatch::~MultiPatch(){ delete [] parts; delete [] partTypes; delete [] points; delete [] zArray; delete [] mArray;}bool MultiPatch::read( int fd ){ RecordHeader rh; if( rh.read(fd) == false ) return false; SAFE_DELETE_ARRAY( parts ); SAFE_DELETE_ARRAY( partTypes ); SAFE_DELETE_ARRAY( points ); SAFE_DELETE_ARRAY( zArray ); SAFE_DELETE_ARRAY( mArray ); Integer shapeType; if( readVal<Integer>(fd, shapeType, LittleEndian ) == false ) return false; if( shapeType != ShapeTypeMultiPatch ) return false; if( bbox.read(fd) == false ) return false; if( readVal<Integer>(fd, numParts, LittleEndian ) == false ) return false; if( readVal<Integer>(fd, numPoints, LittleEndian ) == false ) return false; parts = new Integer[numParts]; int i; for( i = 0; i < numParts; i++ ) { if( readVal<Integer>(fd, parts[i], LittleEndian ) == false ) return false; } partTypes = new Integer[numParts]; for( i = 0; i < numParts; i++ ) { if( readVal<Integer>(fd, partTypes[i], LittleEndian ) == false ) return false; } points = new struct Point[numPoints]; for( i = 0; i < numPoints; i++ ) { if( points[i].read(fd ) == false ) return false; } if( zRange.read(fd) == false ) return false; zArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, zArray[i], LittleEndian ) == false ) return false; } int W = 44 + (4*numParts); int X = W + (4 * numParts); int Y = X + (16 *numPoints); int Z = Y + 16 + (8 *numPoints); if( rh.contentLength > Z ) { if( mRange.read(fd) == false ) return false; mArray = new Double[numPoints]; for( i = 0; i < numPoints; i++ ) { if( readVal<Double>(fd, mArray[i], LittleEndian ) == false ) return false; } } return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -