当前位置:软件学习 > 其它软件 >>

如何在MapInfo里描述线路?

    如何在mapinfo里描述线路,然后判断一个点是否在这条线路范围。我起初的想法是把这条线路用多边形绘制出来,这样虽然可行,但是绘制线路多边形的时候比较麻烦。有没有好的办法? --------------------编程问答-------------------- 用多边形的方法是可行的,只是画道路比较麻烦。谁能给一个算法:我在地图画一条线,然后可以计算出以这条线为中轴,宽度为100米的闭合多边形的坐标。如果有这个算法,道路定义就很方便了。 --------------------编程问答-------------------- 按你的需求,一条线作个100M的左右均等的缓冲就可以得到所要的多边形!注意的问题就是怎么处理线的端点处。可是以点为圆心,100为半径的半圆,也可以是一个矩形的!
但是如果是为了判断点是否在线内,可以考虑100作为容限,来计算点是否在范围内就可以的!实现起来也是很容易的! --------------------编程问答-------------------- 谢谢metaboy的回复。
因为我现在有判断点是否在多边形内的算法,所以想把路线也当做一个闭合的多边形来处理。例如在地图上定义了由三个点组成的线,如何找到以三个点连成线左右均等100米多边形的顶点坐标呢?
因为我以前没做过mapinfo,现在是来局部修改程序,还望赐教 --------------------编程问答-------------------- "一条线作个100M的左右均等的缓冲就可以得到所要的多边形",那怎么获取这个多边形各个顶点的经纬度呢? --------------------编程问答-------------------- 如果楼主是要找这个效果:

去我的博客看看,里面有代码。
http://blog.csdn.net/Tinary3v0/archive/2008/09/19/2949403.aspx

代码需要GDI+支持,用GDI我就不太清楚怎么弄了,反正用GDI+连算法都可以省去了。
另外楼主判断什么点在多边形内部用GDI+也很容易,如果不麻烦给你的程序添加个GDI+支持吧。 --------------------编程问答-------------------- 哦 百米之内应该可以直接当做平面计算 具体怎么做还是要用的屏幕坐标和经纬度转换的函数
void CMapX::ConvertCoord(float* ScreenX, float* ScreenY, double* MapX, double* MapY, short Direction) 
具体怎么做楼主应该清楚的。 --------------------编程问答-------------------- Tinary3v0,非常感谢。我要的就是你说的东西,就是求蓝点和绿点的坐标。我用的是C#和mapxtreme的开发环境,非常惭愧,不知道你所说的GDI+和ConvertCoord怎么使用,希望给予说明 --------------------编程问答-------------------- 用c#的话应该有GDI+支持 直接可以使用 具体你要上网上查查 
参考:http://msdn.microsoft.com/en-us/library/ms533958(VS.85).aspx
也可直接找这本书以及源码(网上有) :http://book.csdn.net/hi/BookClub_BookDetails.aspx?id=32999
ConvertCoord参考
:_map.DisplayTransform.FromDisplay(pt, out dpt1);

以及MapXtreme2008_DevGuide --------------------编程问答-------------------- GDI是windows的图形编程接口,我感觉这个问题应该在mapxtreme的开发范畴就可以搞定,应该可以不使用GDI。不知道其他同学有没有解决办法。 --------------------编程问答-------------------- 学习了不少的知识,感谢这些高手! --------------------编程问答-------------------- 实际上就是几何算法的问题,如果弄清楚该算法就OK了,可以参开《计算几何》,以前我写过缓冲区分析的实现代码,参考过这本书,你可以看看!时间太久了,现在找不到以前的代码了!祝你好运! --------------------编程问答-------------------- 再顶下 --------------------编程问答-------------------- 我也是做楼主这个功能,我一开始也是想用多边形区域判断,但是后来考虑到修改多边形很麻烦,所以我对线路的描述改成了曲线,我判断点是否在以这条曲线为轴心的制订范围内。在mapxtreme中,曲线是MultiCurve,我判断A点是否在离曲线20米的范围内,以A点为中心绘制半径20米的圆图元,如果该圆与曲线MultiCurve有交集,则说明A点在离曲线20米范围内。
补充:企业软件 ,  地理信息系统
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,