美文网首页
计算几何(1)——地理围栏相关算法

计算几何(1)——地理围栏相关算法

作者: IIGEOywq | 来源:发表于2018-06-07 18:54 被阅读179次

一 前言

维基百科上面是英文,所有找了一段百度百科的定义

地理围栏(Geo-fencing)是LBS的一种应用, 就是用一个虚拟的栅栏围出一个虚拟地理边界. 当手机进入, 离开某个特定地理区域, 或在该区域内活动时, 手机可以接收自动通知和警告.

很明显核心问题就是判断点是否在多边形内。

二 判断点在多边形内部

  • 射线法(对凹凸多边形都适用)。实现原理:如下图(懒得画了,截取了文章1的图)从判断点开始沿着X轴画一条射线,依次判断该射线与边的交点。
    如果交点个数是奇数,则点在多边形内,如果个数是偶数,则点在多边形外。


    射线法判断点在多边形内外.png

交点的x坐标求解用的是相似多边形性质,计算公式如下图(这个是自己画的)


求解交点坐标.png

算法实现

/**
     *
     * @param point  判断点
     * @param points 多边形的顶点集合
     * @return
     */
    public boolean pointInPoly(Point point ,Point[] points){
        boolean isContains=false;
        int end=points.length-1;
        for (int i=0;i<points.length;i++){
            //通过判断点的y坐标和每条边的两个端点的y坐标比较,判断点是否在这条边的中间
            if (point.getY()>points[i].getY()&&point.getY()<=points[end].getY()||point.getY()<=points[i].getY()&&point.getY()>=points[end].getY()){
                //计算交点的x坐标值,如果小于x则记为一次(只需要判断射线一侧的点个数即可)
                if((point.getY()-points[i].getY())/(points[end].getY()-points[i].getY())*(points[end].getX()-points[i].getX())+points[i].getX()<point.getX()){
                    isContains=!isContains;
                }
            }
            //移动顶点位置
            end=i;
        }
        return isContains;

    }

参考文章

[1]Point-In-Polygon Algorithm
[2]Point-In-Polygon算法

相关文章

  • 计算几何(1)——地理围栏相关算法

    一 前言 维基百科上面是英文,所有找了一段百度百科的定义 地理围栏(Geo-fencing)是LBS的一种应用, ...

  • 地理围栏相关Sql(Pgsql)

    PostgreSql 查询车是否在圆形围栏-返回布尔类型 查询车是否在多边形围栏-返回布尔类型 查询圆形围栏里所有...

  • javascript下的地理围栏算法

    概述 最近遇到一个小问题:给定一个GPS坐标,判断是否在一个多边形区域内;查阅了一些资料,简单做一下记录。 算法(...

  • 基于OpenLayers实现地理围栏 谷歌百度高德地图都可以

    前言.因为项目有点特殊,需要接入谷歌地图实现地理围栏,因为谷歌地图的地理围栏接口相关接口并不完善,于是就换了一个思...

  • 计算几何常用算法

    1. 矢量减法 设二维矢量 P = (x1,y1) ,Q = (x2,y2) 则矢量减法定义为: P - Q = ...

  • Full Text Search

    全文搜索 1、相关性评价查询与其结果间的相关程度,并根据这种相关程度对结果排名。计算方式:TF/IDF、地理位置邻...

  • 计算机常用英语词汇 —— 数据结构与算法

    本文为转载,原文:计算机常用英语词汇 —— 数据结构与算法 1. 介绍 本文将列出计算机学当中,数据结构与算法相关...

  • Turf 地图地理空间分析

    简介 地理空间分析库,处理各种地图算法 效果图 引入 计算沿线的点 计算区域面积 计算边界框 计算多边形 更多案例...

  • android 面试题积累

    1算法相关 1.计算Activity的view有多少层 复习基础看到一道面试题,计算一个Activity的view...

  • 类似钉钉打卡功能

    我们的打卡功能分为地理位置打卡和Wi-Fi打卡1、地理位置打卡:用户必须到达指定的地理围栏内打卡,才能正常打卡成功...

网友评论

      本文标题:计算几何(1)——地理围栏相关算法

      本文链接:https://www.haomeiwen.com/subject/rzcnsftx.html