`

坐标距离计算、判断坐标是否在某一多边形内

阅读更多
/****
 * 根据经纬度 获取数据 工具类
 * @author xuli
 *
 */
public class LngLatDistanceUtils {
	private static final Logger log = LoggerFactory.getLogger(LngLatDistanceUtils.class);
	
	/***
	 * 经纬度计算距离
	 * @author xuli
	 * 
	 * @param lat1  纬度1
	 * @param lng1  经度1 
	 * @param lat2  纬度2 
	 * @param lng2  经度2
	 */
	public static Float getDistance(Double lat1, Double lng1, Double lat2, Double lng2){
		double EARTH_RADIUS = 6378.137;// 地球半径

		double radLat1 = rad(lat1);
		double radLat2 = rad(lat2);
		double a = radLat1 - radLat2;
		double b = rad(lng1) - rad(lng2);

		double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
				+ Math.cos(radLat1) * Math.cos(radLat2)
				* Math.pow(Math.sin(b / 2), 2)));
		s = s * EARTH_RADIUS;
		Float ss = (float) (Math.round(s * 1000))/1000;

		return ss;
	}
	
	private static double rad(Double d){
		return d * Math.PI / 180.0;
	}
	

	
	
	/****
	 * 判断点是否在多边形内(不包含边界)
	 * 
	 * @author wanwenjun
	 * @param point 点
	 * @param polygon 多边形
	 * @return
	 */
	public static boolean checkWithJdkGeneralPath(Point2D.Double point, List<Point2D.Double> polygon) {
		java.awt.geom.GeneralPath p = new java.awt.geom.GeneralPath();
		
		// 初始化起点坐标
		Point2D.Double first = polygon.get(0);
		p.moveTo(first.x, first.y);
		for (Point2D.Double d : polygon) {
			
			// 遍历点,并按遍历的顺序画线
			p.lineTo(d.x, d.y);
		}
		p.lineTo(first.x, first.y);
		
		p.closePath();
		return p.contains(point);
	}
}

 

分享到:
评论

相关推荐

    判断一个坐标点是否在多边形区域范围内

    判断一个坐标点是否在多边形区域范围内。可直接使用。 用来做地图经纬度 判断一个点是否在一个多边形范围内很合适 代码简洁 不到100行代码

    java判断某个点是否在所画多边形/圆形内

    在计算机图形学和 GIS 领域中,判断某个点是否在所画多边形或圆形内是一个常见的问题。java语言提供了多种方法来解决这个问题。本文将详细介绍java判断某个点是否在所画多边形或圆形内的方法,并提供相应的代码实例...

    java判断百度地图的点是否在多边形区域内

    在Java编程中,判断一个点是否位于多边形区域内是一个常见的地理空间运算问题。这个问题在地图应用、GIS(地理信息系统)以及游戏开发等领域有广泛的应用。以下是对这个知识点的详细阐述: 1. **坐标系统与投影**:...

    C#判断地图坐标点是否在多边形内坐标组范围内

    C#判断指定的坐标点(经纬度)是否在指定多边形内坐标组范围内 !地图坐标点判断(经纬度判断)

    判断指定的经纬度坐标点是否落在指定的多边形区域内

    在矢量多边形区域中,一个坐标点的位置是否在区域内 算法: C#代码,适用于任意多边形(凹凸多边形),但是没有考虑实际误差范围的情况(应用在实际问题解决中,接近区域一定范围是可以忽略的,这个误差范围考虑后算法的...

    根据GPS坐标判断距离,射线法判断点在多边形,矩形内。

    点在多边形的边上 前面我们讲到,射线法的主要思路就是计算射线穿越多边形边界的次数。那么对于点在多边形的边上这种特殊情况,射线出发的这一次,是否应该算作穿越呢?

    判断某点是否在任意多边形C语言源码(包含设计说明文档)

    在计算机图形学中,判断一个点是否位于一个多边形内部是一项基本任务,广泛应用于各种图形处理和几何计算中。本文将详细讲解如何使用C语言实现这个功能,采用射线法作为算法基础,并结合设计说明来深入理解代码实现...

    根据各点坐标计算多边形面积

    在IT领域,尤其是在科学计算和地理信息系统中,计算多边形面积是一项常见的任务。这个"根据各点坐标计算多边形面积"的程序是用Fortran 2013语言编写的,它提供了处理几何问题的能力,特别是对于那些需要进行大量数值...

    判断点是否在多边形内(C#实例)

    在计算机图形学中,判断一个点是否位于一个多边形内部是一项常见的任务,尤其在交互式应用和游戏开发中。本文将详细讲解如何使用C#语言实现这个功能,并结合实例进行说明。 首先,我们需要理解基本的几何概念。一个...

    Go-polygon-判断点是否在一个多边形区域内支持凸多边形与凹多边形

    在计算机图形学中,判断一个点是否位于一个多边形内部是一项基本任务,这对于游戏开发、地理信息系统、图像处理等领域都非常重要。本知识点将详细介绍如何在Go语言中实现这个功能,支持凸多边形和凹多边形。我们将...

    判断点是否在多边形内(MFC)

    在计算机图形学中,判断一个点是否位于一个多边形内部是一项基本任务,尤其在MFC(Microsoft Foundation Classes)框架下开发图形用户界面时。本文将详细介绍如何使用射线法(也称为穿越法或Winding Number Test)来...

    一个点在多边形内的判断工具类

    该工具类可以判断一个点是否在多边形内,据此可以判断,一个人是否在某个区域内,将多边形坐标作为一个字符串数组传入,再传入点的坐标,即可进行判断

    判断一个点是否在一个多边形范围内

    判断GPS经纬度坐标点是否在一个多边形范围内,测试代码如下: $point = array('lng'=&gt;'116.293616', 'lat'=&gt;'39.884003'); $point = array('lng'=&gt;'116.260846', 'lat'=&gt;'39.879574'); $point = array('lng'=&gt;'116....

    seekgravlim.rar_matlab 多边形_多边形质心_质心_质心坐标_边缘计算

    在MATLAB环境中,计算多边形的质心和边缘凸点是几何处理中的常见任务,尤其是在图像处理、计算机视觉和图形学领域。本教程将详细解释如何利用MATLAB实现这一功能,以`seekgravlim.m`这个脚本为例。 首先,我们需要...

    判断线段相交及点是否在多边形内

    在计算机图形学和算法设计中,判断线段相交与点是否在多边形内是常见的问题,尤其在碰撞检测、几何渲染等领域有着广泛应用。本文将深入探讨这两个知识点,并结合提供的源代码`is_iner.cpp`和文档`是否相交.doc`进行...

    VB判断点在多边形内

    在计算机图形学中,判断一个点是否位于多边形内部是一项常见的任务,尤其在VB(Visual Basic)编程环境中。这个任务通常涉及到二维几何计算和算法的实现。在VB中,我们可以利用数学方法来解决这个问题,这通常是通过...

    js计算点是否在多边形范围内

    下面是一个简化的JavaScript函数,用于判断点是否在多边形内: ```javascript function isPointInPolygon(point, polygon) { let inside = false; let numPoints = polygon.length; let j = numPoints - 1; ...

    判断点是否在凹(凸)多边形内部的vc6.0程序

    这是一个水平/垂直交叉点数判别法判断点是否在凹(凸)多边形内部(适用于任意多边形包括凹凸边形) 注意到如果从P作水平向左的射线的话,如果P在多边形内部,那么这条射线与多边形的交点必为奇数,如果P在多边形...

    判断一系列坐标点是否在封闭图形内

    在IT领域,尤其是在计算机图形学和游戏开发中,判断一系列坐标点是否位于封闭图形内是一项重要的任务。这个任务通常涉及到碰撞检测、区域划分以及复杂的几何计算。本篇将详细讲解如何利用Matlab来实现这个功能,特别...

    经纬度坐标下的球面多边形面积计算公式

    本文将深入探讨如何在经纬度坐标系统下计算球面多边形的面积,以及提供一个具体的JavaScript代码示例。 ### 经纬度坐标下的球面多边形面积计算 #### 基础理论 地球通常被视作一个完美的球体(尽管实际上它是一个...

Global site tag (gtag.js) - Google Analytics