相关疑难解决方法(0)

如何使用python计算地球表面多边形的面积?

标题基本上都说明了一切.我需要使用Python计算地球表面多边形内的区域.计算由地球表面任意多边形包围的区域说明了一些内容,但对技术细节仍然模糊:

如果你想用更"GIS"的味道来做这件事,那么你需要为你的区域选择一个度量单位,找到一个保留区域的适当投影(不是所有的).既然你在谈论计算任意多边形,我会使用类似Lambert Azimuthal等面积投影的东西.将投影的原点/中心设置为多边形的中心,将多边形投影到新坐标系,然后使用标准平面技术计算面积.

那么,我如何在Python中执行此操作?

python geometry geolocation geospatial

30
推荐指数
7
解决办法
2万
查看次数

球体表面上的(经度,纬度)点的凸壳

标准凸包算法不适用于(经度,纬度)点,因为标准算法假设您需要一组笛卡尔点的船体.纬度 - 经度点不是笛卡尔坐标,因为经度在反子午线(+/- 180度)处"环绕".即,经度179以东两度是-179.

因此,如果您的一组点恰好跨越反子午线,您将计算出错误地在世界各地伸展的虚假船体.

我可以使用标准凸包算法来解决这个问题的任何建议,或指向正确的"地球"船体算法?

现在我想起来,有更多有趣的案例需要考虑而不是跨越反梅迪安.考虑一个包围地球的点"带" - 它的凸包将没有东/西边界.或者甚至更进一步,{(0,0),(0,90),(0,-90),(90,0),( - 90,0),(180,0)}的凸包是什么? - 它似乎包含整个地球表面,所以它的周边有哪些点?

geometry geospatial latitude-longitude convex-hull computational-geometry

19
推荐指数
1
解决办法
5655
查看次数

使用从笛卡尔空间和世界文件生成的纬度和经度计算多边形区域

给定一系列GPS坐标对,我需要计算多边形的面积(n-gon).这相对较小(不大于50,000平方英尺).通过对来自世界文件的数据应用仿射变换来创建地理编码.

我试图通过将地理编码转换为笛卡尔坐标来使用两步法:

double xPos = (lon-lonAnchor)*( Math.toRadians( 6378137 ) )*Math.cos( latAnchor );
double yPos = (lat-latAnchor)*( Math.toRadians( 6378137 ) );
Run Code Online (Sandbox Code Playgroud)

然后我使用叉积计算来确定面积.

问题是结果的准确性有点偏差(约1%).我有什么可以改进的吗?

谢谢.

geocoding map area latitude-longitude

5
推荐指数
2
解决办法
4万
查看次数

计算Android应用程序中谷歌地图上绘制的多边形的面积

我想计算一个大学项目的地图片段中绘制的多边形的数量.

这就是我画多边形的方法.

@Override
    public void onMapClick(LatLng point) {
        //tvLocInfo.setText("New marker added@" + point.toString());
        map.addMarker(new MarkerOptions().position(point).draggable(true).title(point.toString()));

        markerClicked = false;
    }

    @Override
    public void onMapLongClick(LatLng point) {
        //tvLocInfo.setText("New marker added@" + point.toString());
        map.clear();
    }

    @Override
    public boolean onMarkerClick(Marker marker) {

        if(markerClicked){

            if(polygon != null){
                polygon.remove();
                polygon = null;
            }

            polygonOptions.add(marker.getPosition());
            polygonOptions.strokeColor(Color.RED);
            polygonOptions.fillColor(Color.BLUE);
            polygon = map.addPolygon(polygonOptions);
            //Area = google.maps.geometry.spherical.computeArea(polygon.getPath().getArray());
        }else{
            if(polygon != null){
                polygon.remove();
                polygon = null;
            }

            polygonOptions = new PolygonOptions().add(marker.getPosition());
            markerClicked = true;
        }
Run Code Online (Sandbox Code Playgroud)

我已经看到了如何计算区域的代码,但我不确定如何在我的应用程序中实现它并计算多边形的面积.

我使用此代码计算Android的GPS区域:

  private static final double EARTH_RADIUS …
Run Code Online (Sandbox Code Playgroud)

android google-maps polygon google-maps-android-api-2

1
推荐指数
1
解决办法
5793
查看次数