gaojian
路人甲
路人甲
  • 注册日期2004-09-08
  • 发帖数11
  • QQ
  • 铜币144枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1277回复:4

[求助]如何用engine查找两条路的交叉点

楼主#
更多 发布于:2005-07-14 08:48
如何用engine查找两条路的交叉点,请大虾指点
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
gaojian
路人甲
路人甲
  • 注册日期2004-09-08
  • 发帖数11
  • QQ
  • 铜币144枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-07-15 11:21
感谢呀
举报 回复(0) 喜欢(0)     评分
gaojian
路人甲
路人甲
  • 注册日期2004-09-08
  • 发帖数11
  • QQ
  • 铜币144枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-07-15 11:33
我也想到了一个苯方法,就是先将一条Polyline转换为PointCollection,再判断这些点哪个在另一条线上,也成功了,不知这方法怎样,想跟大虾交流一下
举报 回复(0) 喜欢(0)     评分
cafecat
路人甲
路人甲
  • 注册日期2003-07-29
  • 发帖数375
  • QQ
  • 铜币894枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-07-23 20:29
不好,未必数字化时有点在另一条线上,用intersect比较好
http://3s2go.blogspot.com/
举报 回复(0) 喜欢(0)     评分
游客

返回顶部