有一个线对象的图层,我的目的就是找出这些线中,可能是重复的对象,
我是遍历每一个线对象,给这个线对象构造一个10米的缓冲区,
用这个缓冲区和图形进行查询,查找相交的线,
现在出现的问题是,任何一个缓冲区查询时 都会返回所有的线。但实际情况不是这样的。
Recordset objCXRecordset = objCXDatasetVector.Query(queryParameter);
{
if (objCXRecordset.RecordCount > 0)
{
objCXRecordset.MoveFirst();
while (!objCXRecordset.IsEOF)
{
int currentId = objCXRecordset.GetID();
/// 获得几何线
GeoLine objCXGeolineTemp = objCXRecordset.GetGeometry() as GeoLine;
BufferAnalystParameter bufferAnalystParam = new BufferAnalystParameter();
bufferAnalystParam.EndType = BufferEndType.Flat;
bufferAnalystParam.RadiusUnit = BufferRadiusUnit.Meter;
bufferAnalystParam.LeftDistance = 10; //此处为获取缓冲区半径的一个方法.
bufferAnalystParam.RightDistance = 10;
//为线几何对象建立缓冲区,并将分析结果存储在结果数据集中
GeoRegion geometryBuffer = BufferAnalystGeometry.CreateBuffer(objCXGeolineTemp, bufferAnalystParam, MapOp.FSuperMap.Map.PrjCoordSys);
QueryParameter qp = new QueryParameter();
qp.CursorType = CursorType.Static;
qp.HasGeometry = true;
qp.SpatialQueryMode = SpatialQueryMode.Intersect;
qp.SpatialQueryObject = geometryBuffer;
Recordset resultRecordset = objCZDatasetVector.Query(qp);
if (resultRecordset != null)
{
if (resultRecordset.RecordCount == objCXRecordset.RecordCount)
{
/// 查询的结果和图层里的对象数总是一样多
}
else
{
///
}
resultRecordset.Close();
resultRecordset.Dispose();
}
geometryBuffer.Dispose();
objCXGeolineTemp.Dispose();
objCXRecordset.MoveNext();
}
objCXRecordset.Close();
objCXRecordset.Dispose();
}