首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php判断坐标是否在指定的多边形中

php判断坐标是否在指定的多边形中

作者头像
码农编程进阶笔记
发布于 2021-07-20 07:31:54
发布于 2021-07-20 07:31:54
2.1K0
举报

如何判断一个坐标点是否在一个多边形中,具体的应用场景就是,外卖派送,用户提供的坐标是否是在外卖的派送范围之内。用户的坐标可以通过手机设备获取到,派送范围就是通过在地图上,进行多边形的绘制,获取多个坐标点连接起来的配送范围。下面来看看代码上是如何简单判断的。

mjaschen/phpgeo是一个php的geo的库,提供了一些关于地理经纬度相关的功能,例如地理围栏、距离计算等。

坐标点参考腾讯地图的demo:

https://lbs.qq.com/javascript_v2/case-run.html#sample-overlay-polygon-contains

首先composer安装此包: PHP要求至少大于7

代码语言:javascript
AI代码解释
复制
composer require mjaschen/phpgeo

然后编写测试代码:

代码语言:javascript
AI代码解释
复制
<?php
require './vendor/autoload.php';
 
//引入两个类
use Location\Coordinate;
use Location\Polygon;
 
//绘制一个多边形
$geo = new Polygon();
 
$geo->addPoint(new Coordinate(39.930131, 116.417301));
$geo->addPoint(new Coordinate(39.930131, 116.377476));
$geo->addPoint(new Coordinate(39.911305, 116.377476));
$geo->addPoint(new Coordinate(39.911305, 116.417301));
 
//两个坐标做测试
$a = new Coordinate(39.916527, 116.397128);
$b = new Coordinate(39.901305, 116.397128);
 
//判断是否在执行的多边形中
if ($geo->contains($a)) {
    echo "a点在多边形的范围内";
} else {
    echo "a点不在多边形的范围内";
}
 
echo "<br/>";
 
if ($geo->contains($b)) {
    echo "b点在多边形的范围内";
} else {
    echo "b点不在多边形的范围内";
}

结果:

php开发中常用的Composer包

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
讲解python多边形裁剪
在计算机图形学中,多边形裁剪是一个常用的技术,用于确定多边形与给定裁剪窗口之间的交集。通过裁剪,我们可以剔除不在裁剪窗口范围内的部分,从而减少图形处理的计算量,并加速渲染过程。 Python提供了各种库和算法来实现多边形裁剪。在本篇文章中,我们将使用shapely库来进行多边形的裁剪操作。shapely是一个Python库,提供了一些用于处理几何图形数据的功能。
大盘鸡拌面
2023/12/26
8370
平面几何:判断点是否在多边形内(射线法)
之前我们讲解了如何利用叉乘 判断点是否在凸多边形内。但该算法限制较大,多边形必须为凸多变形。
前端西瓜哥
2024/05/22
9470
平面几何:判断点是否在多边形内(射线法)
从零开始搭建GIS开发小框架(二)——绘制多边形
在GMap.Net控件上创建一个图层,在图层上绘制多边形,生成一个多边形对象,给图形对象赋结构化数据属性(以Json形式封装和解析)。
天堂向左
2022/06/14
1.4K0
从零开始搭建GIS开发小框架(二)——绘制多边形
算法 - PNPoly解决点和多边形问题
计算点到多边形最短距离的基本原理是:依次计算点到多边形每条边的距离,然后筛选出最短距离。
用户2987604
2020/06/15
2.8K0
算法 - PNPoly解决点和多边形问题
一种快速判断点在多边形内的算法
前面我们讲到,射线法的主要思路就是计算射线穿越多边形边界的次数。那么对于点在多边形的边上这种特殊情况,射线出发的这一次,是否应该算作穿越呢?
sunsky
2022/09/08
1.4K0
分享一个多边形合并的实现
在工作中经常会遇到将多个多边形合并成一个多边形的需求,如果多边形是相交的,可以使用turf进行合并,但是如果多边形不相交,用turf合并后的结果是一个复杂多边形,这个结果有时候不满足我们的需求,所以本文分享一个不用turf并且能合并成一个多边形的实现。
牛老师讲GIS
2025/05/31
1860
分享一个多边形合并的实现
持续搞【附近】---长连接坐标流和“地理围栏”(五)
我们经过【附近】系列的二、三、四篇章后,已经基本了解了市面上用于解决LBS问题的几种常见方案和做法,当然除了PostGre外... ...那个有兴趣的哥们可以考虑补一篇PostGre版本直接投稿。实际上前面的思路是很简单的,算是循序渐进类型的,从MySQL到MongoDB再到ES,大概就是从GeoHASH到Google S2再到R树们。我没有在文章里显式地说这些但是背后就是这些,往深处地挖掘全靠诸位自己了~
老李秀
2019/11/13
1.1K0
持续搞【附近】---长连接坐标流和“地理围栏”(五)
MySQL空间函数实现位置打卡
项目需求是跟用户当前位置判断是否在给定的地理位置范围内,符合位置限制才可以打卡,其中的位置范围是一个或多个不规则的多边形。如下图,判断用户是在清华还是北大。
IT大咖说
2020/08/21
2.9K0
MySQL空间函数实现位置打卡
判断点是否在多边形内的Python实现及小应用(射线法)
判断一个点是否在多边形内是处理空间数据时经常面对的需求,例如GIS软件中的点选功能、根据多边形边界筛选出位于多边形内的点、求交集、筛选不在多边形内的点等等。判断一个点是否在多边形内有几种不同的思路,相应的方法有:
蛰虫始航
2019/09/29
10.2K2
判断点是否在多边形内的Python实现及小应用(射线法)
平面几何:判断点是否在凸多边形内
在之前的 求两向量的夹角的文章 中我提到过,对于两个向量,我们可以利用叉积的符合右手定则,判断两个向量的位置关系。
前端西瓜哥
2024/05/15
3950
平面几何:判断点是否在凸多边形内
腾讯位置服务入门 使用JavaScript API GL自定义3D地图
1. 准备 使用腾讯位置服务需要申请服务密钥 注意:此案例中需使用webservice,建议使用IP/域名授权方便测试,生产环境如需使用签名校验方式授权参考此处 JavaScript API GL官
路过君
2020/12/25
2.5K0
Vue ArcGis鼠标打点、中心打点绘制多边形
ArcGis绘制多边形这里没有用官方提供的api,官方提供的api是鼠标点击打点然后大于三个点位实时绘面,这种绘制多边形的方式在pc端体验感较佳,但在移动端会差点意思,所以这里提供了另一种绘制多边形的思路以供各位看官参考。
inline705
2021/12/09
1.6K0
Vue ArcGis鼠标打点、中心打点绘制多边形
可视化场景内任意绘制多边形并测量面积
一般测量功能主要表现在两方面,一是测量距离,二是测量面积。面积的测量是根据鼠标绘制的范围,通过地理坐标系的转换而计算出实际面积大小,距离的测量是根据鼠标在地图上绘制的点,实时计算出两点之间的实际距离。如何在3D场景中测量面积?下面我就在ThingJS平台实现鼠标任意点绘制多边形面积,计算绘制总长度和占地面积,支持在数字孪生可视化场景内任意绘制多边形并测量面积。
thingjs
2021/08/13
8540
[python]判断点是否在多边形内的Python实现射线法
判断一个点是否在多边形内是处理空间数据时经常面对的需求,例如GIS中的点选功能、根据多边形边界筛选出位于多边形内的点、求交集、筛选不在多边形内的点等等。 判断一个点是否在多边形内有几种不同的思路,相应的方法(感觉还谈不上算法)有:
云未归来
2025/07/17
2770
[python]判断点是否在多边形内的Python实现射线法
Geo-fencing算法
Geo-fencing,中文常译为地理围栏,是一种基于地理位置的虚拟边界技术。它通过GPS、Wi-Fi信号、蓝牙信标或者移动网络等定位技术,确定设备或对象的位置,并在该位置与预设的地理区域发生交集时触发特定事件或操作。这种技术广泛应用于推送通知、追踪、安全监控、营销活动等领域。
七条猫
2024/09/14
6870
Geo-fencing算法
iOS多边形马赛克的实现(下)
上一篇里我们详述了多边形马赛克的实现步骤,末尾提出了一个思考:如何在涂抹时让马赛克逐块显示呢? 再回顾一下多边形马赛克的实现。首先进行图片预处理,将原图转成bitmap后生成铺满马赛克的全图。手指移动的时候从touch回调里获取坐标点,在这些点之间进行插值,然后以插值之后的路径点为圆心将马赛克图层里对应的区域贴过去,这样就完成了对图像的特定区域打码的处理。 试想一下,如果上述步骤不变,要想让多边形马赛克一块一块的显示出来,首先得计算手指移动时经过了哪些马赛克块。具体来说,也就是在每一次touchMove的回
天天P图攻城狮
2018/02/02
2K2
iOS多边形马赛克的实现(下)
R语言可视化——多边形与数据地图填充
ggplot函数中有一类特殊的图表类型叫做多边形,很难用传统的视角来定义它属于哪一类图表,因为它能够呈现信息多种多样。 特别是在做某些比较高阶的图表——地图时,这种多边形函数便能够大显神通。 之前本公众号所推送的所有涉及地图图表绘制所使用的技巧,几乎全部都依赖多边形函数的支持。 library(ggplot2) library(plyr) library("maptools") 这里以之前推送过的全球地图为例: 导入地图地理信息数据: world_map <-readShapePoly("c:/rstudy
数据小磨坊
2018/04/11
2K0
R语言可视化——多边形与数据地图填充
Tableau数据分析-Chapter07多边形地图和背景地图
多边形地图是填充地图的一种补充,基于地理均码,数据文件绘制一个多边形的区域,实现自定义的填充地图。也可以这样理解:以矢量数据为基础,轮廓界线为多边形的一类地图。
北山啦
2022/11/27
1.1K0
Tableau数据分析-Chapter07多边形地图和背景地图
持续搞【附近的人】---听说MongoDB是专业的(三)
一直听说MongoDB才是【专业】搞地理空间查询的,人家才是【专业】的!相当长一段时间来,一说搞【附近的人】就会相当一批人的脑海里就不自主浮想到MongoDB... ...
桶哥
2019/06/05
1.6K0
持续搞【附近的人】---听说MongoDB是专业的(三)
[地理数据掘宝更新]追加POI搜索之多边形面范围内搜索及操作模板整理
在过往Excel催化剂开发好的POI搜索中,只有POI兴趣点关键字搜索和坐标点周边半径搜索,就差了指定多边形面的搜索,因为用户没法轻松地完成面坐标的采集,所以也难以在Excel催化剂中给出其对应的功能,接口调用是很容易,但交互上没法让普通用户按需获取到这个面的轮廓线坐标。
Excel催化剂
2021/08/18
1.4K0
推荐阅读
相关推荐
讲解python多边形裁剪
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档