地理如何判断经纬度一个指定的经纬度点是否落在一个矩形区域内

更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
, 可在设置中重新打开噢!
30秒后自动关闭
根据经纬度判断在不在一个区域内的3种方法">根据经纬度判断在不在一个区域内的3种方法
请选择打赏金额:
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
本奖品由提供
红包雨下完了,下次早点来噢~如何判断一个指定的经纬度点是否落在一个多边形内 - CSDN博客
如何判断一个指定的经纬度点是否落在一个多边形内
1、理论支持:如果从需要判断的点出发的一条射线与该多边形的焦点个数为奇数,则该点在此多边形内,否则该点在此多边形外。(射线不能与多边形顶点相交)
2、编程思路:
该程序的思路是从A点出发向左做一条水平射线(平行于x轴,向X轴的反方向),判断与各边是否有焦点。
dLon1, dLon2, dLat1, dLat2分别表示边的起点和终点的经度和纬度(x轴和y轴)。
先判断A点是否在边的两端点d1和d2的水平平行线之间,不在则不可能有交点,继续判断下一条边。
在之间则说明可能与A点向左的射线有交点,接下来利用几何方法得到A点的水平直线与该边交点的x坐标。
然后判断交点的x坐标在A点的左侧还是右侧,左侧则总交点数加一,右侧则不在A点左射线上,继续判断下一条边。
3、原文代码如下(Dephi):
& TMyPoint =
{*------------------------------------------------------------------------------
& 判 断指定的经纬度坐标点是否落在指定的多边形区域内
& @param ALon&& 指定点的经度
& @param ALat&& 指定点的纬度
& @param APoints&& 指定多边形区域各个节点坐标
& @return True 落在范围内 False 不在范围内
------------------------------------------------------------------------------*}
function IsPtInPoly(ALon, ALat: APoints:
of TMyPoint): B
& iSum, iCount, iIndex: I
& dLon1, dLon2, dLat1, dLat2, dLon:
& Result := F
& if (Length(APoints)
&&& Result := F
& iCount := Length(APoints);
& for iIndex :=0
&&& if (iIndex
&&&&& dLon1 := APoints[iIndex].X;
&&&&& dLat1 := APoints[iIndex].Y;
&&&&& dLon2 := APoints[0].X;
&&&&& dLat2 := APoints[0].Y;
&&&&& dLon1 := APoints[iIndex].X;
&&&&& dLat1 := APoints[iIndex].Y;
&&&&& dLon2 := APoints[iIndex
+ 1].X;
&&&&& dLat2 := APoints[iIndex
+ 1].Y;
&& //以下语句判断A点是否在边的两端点的水平平行线之间,在则可能有交点,开始判断交点是否在左射线上
&&& if ((ALat
and (ALat & dLat2))
or ((ALat&=dLat2)
& dLat1)) then
&&&&& if (abs(dLat1
&&&&& begin
&&&&&& //得到 A点向左射线与边的交点的x坐标:
&&&&&&& dLon := dLon1
-dLon2) * (dLat1
/ (dLat1 - dLat2);
&&&&&& // 如果交点在A点左侧(说明是做射线与 边的交点),则射线与边的全部交点数加一:
&&&&&&& if (dLon
&&&&&&&&& Inc(iSum);
&&&&& end;
& if (iSum
&&& Result := T
public bool IsPtInPoly(double ALon, double ALat, List&Point& APoints)
&&&&&&&&&&& int iSum = 0, iC
&&&&&&&&&&& double dLon1, dLon2, dLat1, dLat2, dL
&&&&&&&&&&& if (APoints.Count & 3)
&&&&&&&&&&&&&&&
&&&&&&&&&&& iCount = APoints.C
&&&&&&&&&&& for (int i = 0; i & iCount - 1; i++)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& if (i == iCount - 1)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& dLon1 = APoints[i].X;
&&&&&&&&&&&&&&&&&&& dLat1 = APoints[i].Y;
&&&&&&&&&&&&&&&&&&& dLon2 = APoints[0].X;
&&&&&&&&&&&&&&&&&&& dLat2 = APoints[0].Y;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& dLon1 = APoints[i].X;
&&&&&&&&&&&&&&&&&&& dLat1 = APoints[i].Y;
&&&&&&&&&&&&&&&&&&& dLon2 = APoints[i + 1].X;
&&&&&&&&&&&&&&&&&&& dLat2 = APoints[i + 1].Y;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& //以下语句判断A点是否在边的两端点的水平平行线之间,在则可能有交点,开始判断交点是否在左射线上
&&&&&&&&&&&&&&& if (((ALat &= dLat1) && (ALat & dLat2)) || ((ALat &= dLat2) && (ALat & dLat1)))
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& if (Math.Abs(dLat1 - dLat2) & 0)
&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&& //得到 A点向左射线与边的交点的x坐标:
&&&&&&&&&&&&&&&&&&&&&&& dLon = dLon1 - ((dLon1 - dLon2) * (dLat1 - ALat)) / (dLat1 - dLat2);
&&&&&&&&&&&&&&&&&&&&&&& // 如果交点在A点左侧(说明是做射线与 边的交点),则射线与边的全部交点数加一:
&&&&&&&&&&&&&&&&&&&&&&& if (dLon & ALon)
&&&&&&&&&&&&&&&&&&&&&&&&&&& iSum++;
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&& if (iSum % 2 != 0)
&&&&&&&&&&&&&&&
&&&&&&&&&&&
本文已收录于以下专栏:
相关文章推荐
在lbs开发中,可能要碰到这样的问题,如何判断一个指定的经纬度点是否落在一个多边形区域内,比如我在地图上画了一个多边形区域,然后给出一个经纬度点,怎样判断这个点是否在这个多边形范围之内,由于我用的是a...
1、理论支持:如果从需要判断的点出发的一条射线与该多边形的焦点个数为奇数,则该点在此多边形内,否则该点在此多边形外。(射线不能与多边形顶点相交)
2、编程思路:
该程序的思路是从A点出发向左做一条...
def IsPtInPoly(aLon, aLat, pointList):
'''
:param aLon: double 经度
:param aLat: d...
这个想法就是判断一个点向左的射线跟一个多边形的交叉点有几个,如果结果为奇数的话那么说明这个点落在多边形中,反之则不在。直接贴代码吧
package com....
原文地址:/mazhenyu/archive//1757855.html
/gis_gps/archive//1389071.html
  如何判断一个指定...
判断点与多边形的关系(在平面上),不能用简单的向量叉乘来判断,特别是在有凹边形的情况下,下面和大家分享一个判断点是否在多边形范围内的简单算法。在进行判断前,建议先进行范围大致判断,在许多情况下,应该说...
首先,作为任意多边形,想要进行数学计算,都要将其分解为简单的三角形,且多边形分为凸多边形和凹多边形,首先要区分这两种多边形。否则,在连线过程中如果是凹多边形则会连接到多边形以外的区域。
首先我们不...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)2010年10月 C/C++大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。如何判断一个指定的经纬度点是否落在一个多边形区域内?
二、实现代码(delphi)
Code&!--&br /&
Code highlighting produced by Actipro CodeHighlighter (freeware)&br /&
--&TypeTMyPoint=packedrecordX:Y:end;{*------------------------------------------------------------------------------判断指定的经纬度坐标点是否落在指定的多边形区域内@paramALon指定点的经度@paramALat指定点的纬度@paramAPoints指定多边形区域各个节点坐标@returnTrue落在范围内False不在范围内------------------------------------------------------------------------------*}functionIsPtInPoly(ALon,ALat:APoints:arrayofTMyPoint):BvariSum,iCount,iIndex:IdLon1,dLon2,dLat1,dLat2,dLon:beginResult:=Fif(Length(APoints)&3)thenbeginResult:=FEend;iSum:=0;iCount:=Length(APoints);foriIndex:=0toiCount-1dobeginif(iIndex=iCount-1)thenbegindLon1:=APoints[iIndex].X;dLat1:=APoints[iIndex].Y;dLon2:=APoints[0].X;dLat2:=APoints[0].Y;endelsebegindLon1:=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))thenbeginif(abs(dLat1-dLat2)&0)thenbegindLon:=dLon1-((dLon1-dLon2)*(dLat1-ALat))/(dLat1-dLat2);if(dLon&ALon)thenInc(iSum);end;end;end;if(iSummod2&&0)thenResult:=Tend;
linuxstuding
浏览: 443634 次
学习了,顶一个
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 指定经纬度范围的地图 的文章

 

随机推荐