一、背景:
如何判断一个指定的经纬度点是否落在一个多边形区域内?
二、实现代码(delphi)
Code
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->Type
TMyPoint=packedrecord
X:double;
Y:double;
end;
{*------------------------------------------------------------------------------
判断指定的经纬度坐标点是否落在指定的多边形区域内
@paramALon指定点的经度
@paramALat指定点的纬度
@paramAPoints指定多边形区域各个节点坐标
@returnTrue落在范围内False不在范围内
------------------------------------------------------------------------------*}
functionIsPtInPoly(ALon,ALat:double;APoints:arrayofTMyPoint):Boolean;
var
iSum,iCount,iIndex:Integer;
dLon1,dLon2,dLat1,dLat2,dLon:double;
begin
Result:=False;
if(Length(APoints)<3)then
begin
Result:=False;
Exit;
end;
iSum:=0;
iCount:=Length(APoints);
foriIndex:=0toiCount-1do
begin
if(iIndex=iCount-1)then
begin
dLon1:=APoints[iIndex].X;
dLat1:=APoints[iIndex].Y;
dLon2:=APoints[0].X;
dLat2:=APoints[0].Y;
end
else
begin
dLon1:=APoints[iIndex].X;
dLat1:=APoints[iIndex].Y;
dLon2:=APoints[iIndex+1].X;
dLat2:=APoints[iIndex+1].Y;
end;
if((ALat>=dLat1)and(ALat<dLat2))or((ALat>=dLat2)and(ALat<dLat1))then
begin
if(abs(dLat1-dLat2)>0)then
begin
dLon:=dLon1-((dLon1-dLon2)*(dLat1-ALat))/(dLat1-dLat2);
if(dLon<ALon)then
Inc(iSum);
end;
end;
end;
if(iSummod2<>0)then
Result:=True;
end;
分享到:
相关推荐
判断一个坐标点是否在多边形区域范围内。可直接使用。 用来做地图经纬度 判断一个点是否在一个多边形范围内很合适 代码简洁 不到100行代码
判断点和多边形的位置,判断点和多边形的位置,判断点和多边形的位置
java 判断点在多边形内 java 判断点在多边形内 java 判断点在多边形内 java 判断点在多边形内 java 判断点在多边形内 Java GIS 多边形 Java点多边形
判断点是否在多边形内 #include #include #include #define max(a,b) ((a>b)?a:b) #define min(a,b) ((a)?a:b) using namespace std; const double INFINITY = 1e10; const double ESP = 1e-5; const int MAX_N ...
该工具类可以判断一个点是否在多边形内,据此可以判断,一个人是否在某个区域内,将多边形坐标作为一个字符串数组传入,再传入点的坐标,即可进行判断
在矢量多边形区域中,一个坐标点的位置是否在区域内 算法: C#代码,适用于任意多边形(凹凸多边形),但是没有考虑实际误差范围的情况(应用在实际问题解决中,接近区域一定范围是可以忽略的,这个误差范围考虑后算法的...
判断点在多边形内,射线和多边形算出奇数个交点,在多边形内
算法判断点在多边形内
判断GPS经纬度坐标点是否在一个多边形范围内,测试代码如下: $point = array('lng'=>'116.293616', 'lat'=>'39.884003'); $point = array('lng'=>'116.260846', 'lat'=>'39.879574'); $point = array('lng'=>'116....
java判断百度地图的点是否在多边形区域内,这是完整的demo
易语言判断点在多边形内外源码,判断点在多边形内外,pointjs
用射线法判断点是否在多边形中,编译环境VC6.0,鼠标左键实现绘制多边形,右键进行判断。
判断点是否在一个多边形区域内, 支持凸多边形与凹多边形(算法源于QT的QPolygonF)
先输入多边形的顶点数,左击即可判断点击的点是否在多边形内
C#判断指定的坐标点(经纬度)是否在指定多边形内坐标组范围内 !地图坐标点判断(经纬度判断)
主要为大家详细介绍了java判断某个点是否在所画多边形或圆形内的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
判断点在多边形内 VB 计算机图形学作业 CG
这是一个水平/垂直交叉点数判别法判断点是否在凹(凸)多边形内部(适用于任意多边形包括凹凸边形) 注意到如果从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形...
点是否在多边形内判断的C语言代码,有2维及3维两种情况的判断, 请注意:如果你决定使用其中某个函数,请将它拷出来,每个函数都能用,对应于不同的算法,请看说明,最后一个函数为三维情况。
算法导论里面的关于线段是否相交以及点是否在多边形内的判断的源代码,另包含一个说明文档~