根据道路的shape获得high_cross和low_cross

如图所示:如何根据提供的道路的shape file获得该路的high cross和low cross

所谓的high cross就是图中的king st这条路,low cross是Gravers Ln这条路。

具体实现的方法如下:

#1 将道路的shape数据导入到 Sql Server中

#2 在实体表中增加两个字段low_cross和high_cross

#3 用程序【我是用C#写的一个小程序】循环每条街道,找出跟当前街道相交的路,获得当前道路起始点地址的经纬度和一个交叉路口的经纬度,比较起始点位置与交叉路口的远近,离数字较小的近就是low cross,离数字小的较远的就是high cross。

#4 当然处理的过程中有多种情况:有只有一个交叉点的情况 -- 只能更新一个high cross 或者low cross

两个交叉路都在同一个方向的 -- 这就需要用Intersections的方法获得交叉点比较,然后用STEquals的方法比较这两个点是否为同一个点【实际操作过程中发现,有时候两个点的经纬度差别很小,如果用STEquals判断是两个点,实际逻辑上应该是一个点,STDistance比较一个容差的距离的方式比较合适的,经过测试我设置的值为0.00002,这个值可根据实际情况设置】

三个交叉路口、四个交叉路口、五个交叉路口的都有 -- 处理方法是一样,当前无法区分那个确实是high cross 和low cross,所以这种情况就是high cross或low cross可能有多个的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值