`
liuxing87327
  • 浏览: 82792 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

计算地图坐标是否在多边形内

阅读更多

1.使用百度地图计算

请参考:

http://api.map.baidu.com/library/GeoUtils/1.2/examples/simple.html

http://api.map.baidu.com/library/GeoUtils/1.2/docs/symbols/BMapLib.GeoUtils.html

 

 

2.使用java计算

 

import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 功能说明:坐标几何运算
 * 作者:liuxing(2015-04-20 22:19)
 */
public class GeoUtils {

    /**
     * 检查一个坐标是否在多边形内
     * @param x 纬度 31.000...
     * @param y 经度 121.000...
     * @param polygonPoints 多边形边界的经纬度数组
     * @return
     */
    public static boolean isPointInPolygon(double x, double y, List<Map<String, Double>> polygonPoints) {
        Point2D.Double geoPoint = buildPoint(x, y);
        List<Point2D.Double> geoPolygon = buildPolygon(polygonPoints);
        return GeoUtils.isPointInPolygon(geoPoint, geoPolygon);
    }

    /**
     * 检查一个坐标是否在多边形内
     * @param point 检查的点坐标
     * @param polygon 参照的多边形
     * @return
     */
    public static boolean isPointInPolygon(Point2D.Double point, List<Point2D.Double> polygon) {
        GeneralPath p = new GeneralPath();

        Point2D.Double first = polygon.get(0);
        p.moveTo(first.x, first.y);
        polygon.remove(0);

        polygon.forEach(d -> p.lineTo(d.x, d.y));

        p.lineTo(first.x, first.y);

        p.closePath();

        return p.contains(point);
    }

    /**
     * 构建一个坐标点
     * @param x 纬度 31.000...
     * @param y 经度 121.000...
     * @return
     */
    public static Point2D.Double buildPoint(double x, double y) {
        return new Point2D.Double(x, y);
    }

    /**
     * 构建一个多边形
     * @param polygonPoints
     * @return
     */
    public static List<Point2D.Double> buildPolygon(List<Map<String, Double>> polygonPoints) {
        List<Point2D.Double> geoPolygon = new ArrayList<>();

        polygonPoints.forEach(map -> geoPolygon.add(buildPoint(map.get("x"), map.get("y"))));

        return geoPolygon;
    }

}

 

 

更多运算场景请参考:

http://docs.oracle.com/javase/8/docs/api/java/awt/Polygon.html

 

3.使用数据库计算

SqlServer2008 

分享到:
评论

相关推荐

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

    3. **点在多边形内的判断算法**:有多种算法可以用来判断一个点是否在多边形内,如Ray Casting(射线法)、Winding Number(风向数法)和Even-Odd Rule(偶奇规则)。其中,射线法是最常用的一种,它的基本思想是从...

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

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

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

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

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

    判断点是否在多边形内可以使用射线法(Ray Casting Algorithm)。该算法的基本思想是从该点画一条射线,并统计该射线与多边形的交点数。如果交点数为奇数,则该点在多边形内;否则,该点在多边形外。 在java中,...

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

    OnMouseMove在按下鼠标左键不放时可以持续绘制多边形,而OnRButtonDown则用于判断点是否在已绘制的多边形内。 下面是一段简单的代码示例: ```cpp void CMyView::OnLButtonDown(UINT nFlags, CPoint point) { // ...

    判断点是否在多边形内源码C++

    在"点是否在多边形内.txt"文件中,可能包含了测试用例,即点的坐标,你可以用上面的算法对这些点进行判断并输出结果。 以下是一个简化的C++代码示例: ```cpp #include #include #include using namespace std;...

    微信小程序测量程序计算三角形多边形面积计算坐标正反算

    在本项目中,“微信小程序测量程序计算”涉及到的核心知识点主要是几何图形的面积计算,特别是三角形和多边形的面积计算,以及坐标系统的正反算。 首先,我们来详细了解一下如何计算三角形和多边形的面积。三角形的...

    高德地图实现多边形框选选中地图中坐标点.html

    高德地图实现多边形框选,选中展示地图中坐标点。实现坐标点框选。范围内坐标点选择。包括矩形,圆形,和任意多边形。。。需要修改key为自己注册的开发key

    c# 点是否在区域内

    而`WindowsFormsApp1`可能是项目的主要源代码文件夹,可能包含`.cs`文件,这些文件实现了判断点是否在多边形内的功能。 实现这个功能的一种常见算法是“射线交叉法”(Ray Casting Algorithm)。该算法的基本思想是...

    自定义划分区域获取区域内坐标点-百度地图

    这些算法能帮助我们确定一个点是否在某个多边形内部,从而统计出区域内坐标点的数量。 最后,“点聚合”是一种优化大量坐标点显示的方法。当地图上需要展示的点过多时,为了提高性能和视觉效果,可以使用点聚合技术...

    计算多边形面积C#代码

    在计算机图形学、地理信息系统(GIS)等领域,经常需要计算多边形的面积。无论多边形是凸的还是凹的,都需要一种通用且高效的算法来处理此类问题。C#作为一种广泛使用的编程语言,在开发图形应用时具有独特的优势。 ...

    判断点是否在多边形内VC++的源码

    首先,我们需要理解“点在多边形内”的定义。通常,我们采用“射线交叉法”(Ray Casting Algorithm)来判断,即从该点向无限远处画一条射线,统计这条射线与多边形边界交点的数目。如果交点数目为偶数,那么点在...

    百度地图测量多边形面积

    "百度地图测量多边形面积"的功能,就是这样的一个实用工具,它允许用户通过鼠标在地图上自由绘制多边形,进而计算出所围成区域的面积和周长。这一功能对于城市规划、农业测绘、环境保护、房地产评估等多个领域都有着...

    易语言判断点在多边形内外源码.rar

    而判断一个点是否在多边形内,是图形操作中的基础问题。 易语言判断点在多边形内外的源码,通常会采用射线交叉法(也称为 ray-casting algorithm)。该方法的基本思路是:从测试点出发,画一条向右或向上的射线,...

    用plsql编写计算坐标点是否在给定坐标点阵所围成的多边形内(不论凸多边形或凹多边形)的算法

    计算坐标点是否在给定坐标点阵所围成的多边形内(不论凸多边形或凹多边形),编写语言为plsql。纯sql,不依赖第三方库。

    高德地图 根据经纬度计算面积和判断一个点是否在圈内

    高德地图 1,根据经纬度计算面积 2,判断一个点是否在圈内

    ARcGIS 生成多边形的四至点坐标插件

    2. **精度检查**:核对生成的坐标与实际边界是否吻合,尤其是在处理大量数据时。 3. **版本兼容性**:尽管插件在10.0版本下通过了测试,但在较新或较旧版本中可能需要进行调整或更新。 4. **许可证限制**:确认...

    C# 代码 计算多边形面积

    C# 代码 计算多边形面积 里面有两个方法 计算方式不同

    判断点在多边形内部

    - **地理信息系统**:在GIS系统中,需要频繁地查询某个坐标是否位于特定地理区域内部,如城市、国家边界等。 - **游戏开发**:在游戏中,判断玩家角色的位置对于实现碰撞检测等功能至关重要。 - **机器人导航**:在...

Global site tag (gtag.js) - Google Analytics