vector<CMoPolygon> CreateBuffer(CMoRecordset& BufferRecords, double& BufferTolerance, int& BufferLayerStyle, string& BufferUnits)
{
vector<CMoPolygon> TempVectorPoly;
CComVariant Extent(m_map.GetFullExtent().m_lpDispatch);
if (BufferUnits == "千米")
BufferTolerance = 1000 * BufferTolerance;
switch (BufferLayerStyle)
{
case 0://点图层
{
BufferRecords.MoveFirst();
while (!BufferRecords.GetEof())
{
CMoPoint point(BufferRecords.GetFields().Item(CComVariant("Shape")).GetValue().pdispVal);
CMoPolygon PolygonBuffer(point.Buffer(BufferTolerance,Extent));
TempVectorPoly.push_back(PolygonBuffer);
BufferRecords.MoveNext();
}
break;
}
case 1://线图层
{
BufferRecords.MoveFirst();
while (!BufferRecords.GetEof())
{
CMoLine line(BufferRecords.GetFields().Item(CComVariant("Shape")).GetValue().pdispVal);
CMoPolygon PolygonBuffer(line.Buffer(BufferTolerance,Extent));
TempVectorPoly.push_back(PolygonBuffer);
BufferRecords.MoveNext();
}
break;
}
case 2://面图层
{
BufferRecords.MoveFirst();
while (!BufferRecords.GetEof())
{
CMoPolygon Polygon(BufferRecords.GetFields().Item(CComVariant("Shape")).GetValue().pdispVal);
CMoPolygon PolygonBuffer(Polygon.Buffer(BufferTolerance,Extent));
TempVectorPoly.push_back(PolygonBuffer);
BufferRecords.MoveNext();
}
break;
}
}
return TempVectorPoly;
}
Create Buffer
最新推荐文章于 2022-12-26 21:19:04 发布