|
阅读:1277回复:4
[求助]如何用engine查找两条路的交叉点
如何用engine查找两条路的交叉点,请大虾指点
|
|
|
1楼#
发布于:2005-07-14 13:42
<BR>'*************************************************<BR>'名称: FindIntersection<BR>'功能描述:求两线的交点<BR>'传入参数:<BR>'返回参数:交点<BR>'依赖关系:<BR>'作者:gisempire :)<BR>'创建日期<BR>'**************************************************<BR>Public Function FindIntersection(pLines1 As ITopologicalOperator, plines2 As ITopologicalOperator, maxDev As Double) As IPoint<BR> Dim pIntersect As IGeometry<BR> Set pIntersect = pLines1.Intersect(plines2, esriGeometry0Dimension)<BR> If pIntersect Is Nothing Then Exit Function<BR> If pIntersect.IsEmpty Then Exit Function<BR> Dim pEnv As IEnvelope<BR> Set pEnv = pIntersect.Envelope<BR> If pEnv.Height > maxDev Or pEnv.Width > maxDev Then Exit Function<BR> Dim pPt As IPoint<BR> Set pPt = New Point<BR> Set pPt.SpatialReference = pEnv.SpatialReference<BR> pPt.PutCoords 0.5 * (pEnv.XMin + pEnv.XMax), 0.5 * (pEnv.YMin + pEnv.YMax)<BR> Set FindIntersection = pPt<BR>End Function
|
|
|
|
2楼#
发布于:2005-07-15 11:21
感谢呀
|
|
|
3楼#
发布于:2005-07-15 11:33
我也想到了一个苯方法,就是先将一条Polyline转换为PointCollection,再判断这些点哪个在另一条线上,也成功了,不知这方法怎样,想跟大虾交流一下
|
|
|
4楼#
发布于:2005-07-23 20:29
不好,未必数字化时有点在另一条线上,用intersect比较好
|
|
|