文档章节

检查多边形是否包含了某点(经纬度)

郏高阳
 郏高阳
发布于 2015/08/13 11:11
字数 220
阅读 584
收藏 2


/**
 * 检查多边形是否包含了某点~多边形都是由点组成
 * @param px 纬度
 * @param py 经度
 * @param xD 多边形所有纬度
 * @param yD 多边形所有经度
 * @return
 */
public boolean containsPoint(double px, double py,ArrayList<Double> xD,ArrayList<Double> yD) {
    int verticesCount = xD.size();
    int nCross = 0;
    for (int i = 0; i < verticesCount; ++ i) {
        double ix =  xD.get(i);
        double iy =  yD.get(i);
        double i1x =  xD.get((i + 1) % verticesCount);
        double i1y =  yD.get((i + 1) % verticesCount);

        // 求解 y=p.y 与 p1 p2 的交点
        if ( iy == i1y ) {   // p1p2 与 y=p0.y平行
            continue;
        }
        if ( py < Math.min(iy, i1y) ) { // 交点在p1p2延长线上
            continue;
        }
        if ( py >= Math.max(iy, i1y) ) { // 交点在p1p2延长线上
            continue;
        }
        // 求交点的 X 坐标
        float x = (float) ((py - iy) * (i1x - ix)
                / (i1y - iy) + ix);
        if ( x > px ) { // 只统计单边交点
            nCross++;
        }
    }
    // 单边交点为偶数,点在多边形之外
    return (nCross%2==1);
}


© 著作权归作者所有

共有 人打赏支持
郏高阳

郏高阳

粉丝 99
博文 153
码字总数 112268
作品 1
黄浦
程序员
私信 提问
iOceanPlus/Module_Qt_Geography

Qt_Geography 项目类关系图见下: 功能1:地理多边形 封装Qt的QGeoCircle、QGeoRectangle和QPolygonF类,成为地理多边形、地理圆形和地理矩形,共同的基类为MyQtGeoShapeBase。 提供一个常用功...

iOceanPlus
2017/01/17
0
0
判断点是否在多边形之内

获得一个经纬度作为点的多边形然后判断另一点是否在多边形里面。 用过点与多边形的交点数来判断,不知道是数据问题还是算法问题总是判断不对

32Er43
2016/08/15
244
3
判断点是否在多边形内部(Ray-casting Algorithm)

判断一个点是否在多边形内部的典型方法: (1)面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。 (2)夹角和判别法:判断目标点与所有边...

vocaloid01
2018/04/19
0
0
WebGIS中一种根据网格索引判断点面关系的方法

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。 1.背景 判断点面关系的算法有很多,在我之前的博文中有一篇专门对其进行了描述:判断点...

李晓晖
2016/01/21
0
0
Codility每周一课:P99.5 PolygonConcavityIndex

P99.5 PolygonConcavityIndex Check whether a given polygon in a 2D plane is convex; if not, return the index of a vertex that doesn't belong to the convex hull. P99.5 凸包内点 判......

AiFan
03/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 帝国对 Python 的渗透能成功吗?哈哈

引子 Java 帝国已经成立20多年,经过历代国王的励精图治,可以说是地大物博,码农众多。 可是国王依然不满足,整天想着如何继续开拓疆土, 这一天晚上他又把几个重臣招来商议了。 IO大臣说:...

边鹏_尛爺鑫
50分钟前
4
0
分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
今天
6
0
linux 操作系统 常用命令和软件安装

1.系统时间更新 ntpdate time.windows.com 2.传送文件 rsync -av /home/data/a.dat -e ssh root@192.168.0.100:/home 3.传送文件夹 scp -r /home/data root@192.168.0.100:/home 4.JDK安装 ......

WJtiny
今天
2
0
pg_lightool基于basebackup的单表恢复和块恢复

开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客:https://my.oschina.net/lcc1990/blog/1931485。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对...

movead
今天
2
0
对比剖析Swarm Kubernetes Marathon编排引擎

Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目。Docker原生集群(Swarm)同时包括了(Docker Engine \/ Daemons)...

Linux就该这么学
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部