Free();
}
-void HYDROData_ShapeFile::Export(const QString& aFileName,
- NCollection_Sequence<Handle_HYDROData_PolylineXY> aPolyXYSeq,
- NCollection_Sequence<Handle_HYDROData_Polyline3D> aPoly3DSeq,
- QStringList& aNonExpList)
+void HYDROData_ShapeFile::Export(Handle(HYDROData_Document) theDocument,
+ const QString& aFileName,
+ NCollection_Sequence<Handle_HYDROData_PolylineXY> aPolyXYSeq,
+ NCollection_Sequence<Handle_HYDROData_Polyline3D> aPoly3DSeq,
+ QStringList& aNonExpList)
{
SHPHandle hSHPHandle;
if (!aPolyXYSeq.IsEmpty() && aPoly3DSeq.IsEmpty())
{
hSHPHandle = SHPCreate( aFileName.toAscii().data(), SHPT_ARC );
for (int i = 1; i <= aPolyXYSeq.Size(); i++)
- if (WriteObjectPolyXY(hSHPHandle, aPolyXYSeq(i)) != 1)
+ if (WriteObjectPolyXY(theDocument, hSHPHandle, aPolyXYSeq(i)) != 1)
aNonExpList.append(aPolyXYSeq(i)->GetName());
}
else if (aPolyXYSeq.IsEmpty() && !aPoly3DSeq.IsEmpty())
{
hSHPHandle = SHPCreate( aFileName.toAscii().data(), SHPT_ARCZ );
for (int i = 1; i <= aPoly3DSeq.Size(); i++)
- if (WriteObjectPoly3D(hSHPHandle, aPoly3DSeq(i)) != 1)
+ if (WriteObjectPoly3D(theDocument, hSHPHandle, aPoly3DSeq(i)) != 1)
aNonExpList.append(aPoly3DSeq(i)->GetName());
}
if (hSHPHandle->nRecords > 0)
}
}
-void HYDROData_ShapeFile::Export(const QString& aFileName, const Handle_HYDROData_LandCoverMap& aLCM,
- QStringList& aNonExpList, bool bCheckLinear, bool bUseDiscr, double theDefl)
+void HYDROData_ShapeFile::Export(Handle(HYDROData_Document) theDocument,
+ const QString& aFileName,
+ const Handle_HYDROData_LandCoverMap& aLCM,
+ QStringList& aNonExpList,
+ bool bCheckLinear, bool bUseDiscr, double theDefl)
{
if (bCheckLinear && !aLCM->CheckLinear())
return;
for( ; It.More(); It.Next())
{
TopoDS_Face aFace = It.Face();
- if (WriteObjectPolygon(hSHPHandle, aFace, bUseDiscr, theDefl) != 1)
+ if (WriteObjectPolygon(theDocument, hSHPHandle, aFace, bUseDiscr, theDefl) != 1)
aNonExpList.append(aLCM->GetName() + "_" + QString::number(It.Index()));
}
}
}
-int HYDROData_ShapeFile::WriteObjectPolyXY(SHPHandle theShpHandle, Handle_HYDROData_PolylineXY thePoly )
+int HYDROData_ShapeFile::WriteObjectPolyXY(Handle(HYDROData_Document) theDocument,
+ SHPHandle theShpHandle,
+ Handle_HYDROData_PolylineXY thePoly )
{
SHPObject *aSHPObj;
std::vector<double> x, y;
HYDROData_PolylineXY::PointsList aPointList = thePoly->GetPoints(i);
for (int j = 1; j <= aPointList.Size(); j++)
{
- x.push_back( aPointList(j).X());
- y.push_back( aPointList(j).Y());
+ gp_XY P = aPointList(j);
+ theDocument->Transform(P, false);
+ x.push_back( P.X());
+ y.push_back( P.Y());
}
if (thePoly->IsClosedSection(i))
{
- x.push_back( aPointList(1).X());
- y.push_back( aPointList(1).Y());
+ gp_XY P = aPointList(1);
+ theDocument->Transform(P, false);
+ x.push_back( P.X());
+ y.push_back( P.Y());
}
}
return 1;
}
-int HYDROData_ShapeFile::WriteObjectPoly3D(SHPHandle theShpHandle, Handle_HYDROData_Polyline3D thePoly )
+int HYDROData_ShapeFile::WriteObjectPoly3D(Handle(HYDROData_Document) theDocument,
+ SHPHandle theShpHandle,
+ Handle_HYDROData_Polyline3D thePoly )
{
SHPObject *aSHPObj;
std::vector<double> x, y, z;
HYDROData_PolylineXY::PointsList aPointList = thePoly->GetPolylineXY()->GetPoints(i);
for (int j = 1; j <= aPointList.Size(); j++)
{
- x.push_back( aPointList(j).X());
- y.push_back( aPointList(j).Y());
+ gp_XY P = aPointList(j);
+ theDocument->Transform(P, false);
+ x.push_back( P.X());
+ y.push_back( P.Y());
z.push_back(thePoly->GetAltitudeObject()->GetAltitudeForPoint(gp_XY (aPointList(j).X(), aPointList(j).Y())));
}
if ( thePoly->GetPolylineXY()->IsClosedSection(i))
{
- x.push_back( aPointList(1).X());
- y.push_back( aPointList(1).Y());
+ gp_XY P = aPointList(1);
+ theDocument->Transform(P, false);
+ x.push_back( P.X());
+ y.push_back( P.Y());
z.push_back(thePoly->GetAltitudeObject()->GetAltitudeForPoint(gp_XY (aPointList(1).X(), aPointList(1).Y())));
}
return 1;
}
-int HYDROData_ShapeFile::WriteObjectPolygon(SHPHandle theShpHandle, const TopoDS_Shape& theInputShape,
+int HYDROData_ShapeFile::WriteObjectPolygon(Handle(HYDROData_Document) theDocument,
+ SHPHandle theShpHandle,
+ const TopoDS_Shape& theInputShape,
bool bUseDiscr, double theDefl)
{
if (theInputShape.IsNull())
if (theInputShape.ShapeType() == TopAbs_FACE)
{
- ProcessFace(TopoDS::Face(theInputShape), theShpHandle, bUseDiscr, theDefl);
+ ProcessFace(theDocument, TopoDS::Face(theInputShape), theShpHandle, bUseDiscr, theDefl);
}
else if (theInputShape.ShapeType() == TopAbs_COMPOUND)
{
TopoDS_Face aF = TopoDS::Face(Ex.Current());
if (aF.IsNull())
continue;
- ProcessFace(aF, theShpHandle, bUseDiscr, theDefl);
+ ProcessFace(theDocument, aF, theShpHandle, bUseDiscr, theDefl);
}
}
else
}
-void HYDROData_ShapeFile::ProcessFace(const TopoDS_Face& theFace, SHPHandle theShpHandle,
+void HYDROData_ShapeFile::ProcessFace(Handle(HYDROData_Document) theDocument,
+ const TopoDS_Face& theFace,
+ SHPHandle theShpHandle,
bool bUseDiscr, double theDefl )
{
if (theFace.ShapeType() != TopAbs_FACE)
//any other wires (holes) - in anticlockwise direction
for (int j = aNPnts.Size(); j >= 1; j--)
{
- x.push_back( aNPnts(j).X());
- y.push_back( aNPnts(j).Y());
+ gp_XY P = gp_XY(aNPnts(j).X(), aNPnts(j).Y());
+ theDocument->Transform(P, false);
+ x.push_back( P.X());
+ y.push_back( P.Y());
}
//first point is same as the last one => closed polygon
- x.push_back( aNPnts.Last().X());
- y.push_back( aNPnts.Last().Y());
+ gp_XY P = gp_XY(aNPnts.Last().X(), aNPnts.Last().Y());
+ theDocument->Transform(P, false);
+ x.push_back( P.X());
+ y.push_back( P.Y());
}
virtual HYDRODATA_EXPORT ~HYDROData_ShapeFile();
//Export operation
- HYDRODATA_EXPORT void Export(const QString& aFileName,
+ HYDRODATA_EXPORT void Export(Handle(HYDROData_Document) theDocument,
+ const QString& aFileName,
NCollection_Sequence<Handle_HYDROData_PolylineXY> aPolyXYSeq,
NCollection_Sequence<Handle_HYDROData_Polyline3D> aPoly3DSeq,
QStringList& aNonExpList);
- HYDRODATA_EXPORT void Export(const QString& aFileName,
+ HYDRODATA_EXPORT void Export(Handle(HYDROData_Document) theDocument,
+ const QString& aFileName,
const Handle_HYDROData_LandCoverMap& aLCM,
QStringList& aNonExpList,
bool bCheckLinear = true,
bool bUseDiscr = false,
double theDefl = 0.1);
- int WriteObjectPolyXY(SHPHandle theShpHandle, Handle_HYDROData_PolylineXY thePoly );
+ int WriteObjectPolyXY(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+ Handle_HYDROData_PolylineXY thePoly );
- int WriteObjectPoly3D(SHPHandle theShpHandle, Handle_HYDROData_Polyline3D thePoly );
+ int WriteObjectPoly3D(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+ Handle_HYDROData_Polyline3D thePoly );
- int WriteObjectPolygon(SHPHandle theShpHandle, const TopoDS_Shape& theInputShape, bool bUseDiscr, double theDefl );
+ int WriteObjectPolygon(Handle(HYDROData_Document) theDocument, SHPHandle theShpHandle,
+ const TopoDS_Shape& theInputShape, bool bUseDiscr, double theDefl );
//Import
bool Parse(SHPHandle theHandle, ShapeType theType, int& theShapeTypeOfFile);
//Import Landcover
private:
- void ProcessFace(const TopoDS_Face& theFace, SHPHandle theShpHandle,
+ void ProcessFace(Handle(HYDROData_Document) theDocument,
+ const TopoDS_Face& theFace, SHPHandle theShpHandle,
bool bUseDiscr, double theDefl);
bool CheckLinear(const TopoDS_Shape& theInpShape);