相关疑难解决方法(0)

无距离地理搜索

这是我第一次看地理位置.请原谅我的长话题.我希望很清楚.

我有一个数据库,用lat&lng保存记录.我正在尝试编写一个PHP类,它定义了四个十进制坐标,形成一个边界框(然后检索框内的所有记录).

我只需要知道哪些位置在用户位置的n km 范围内.我不需要从用户到位置的距离.

我正在建立这个答案的第一部分.

以上答案的核心是:

直线10公里是:

on the latitude is equal to ~1'(minute)
on the longitude is equal to ~6'(minutes)
Run Code Online (Sandbox Code Playgroud)

以此为基础,进行一些快速数学运算,并在查询中添加WHERE子句,删除通过添加缓冲区创建的"框"之外的任何位置,假设为1'lat和6'long.

嗯,"做一些快速数学"帕特里克说.几天后我没能正确地完成数学计算.

我的班级挂在那里,似乎工作了10公里.但是,我没有让它与任何其他距离一起工作.

首先我移动到秒,所以10km是:

on the latitude is equal to 60 seconds
on the longitude is equal to 360 seconds
Run Code Online (Sandbox Code Playgroud)

这很好.

但是,我接着尝试了5km是:

on the latitude is equal to 30 seconds
on the longitude is equal to 180 seconds
Run Code Online (Sandbox Code Playgroud)

这没用.

你能解释为什么这种方法不适用于5km(以及我尝试的其他距离)吗?

下面是我的班级代码.显然这个开关是垃圾.任何帮助赞赏.

class coords 
{
/*
    Calculate a bounding box from a decimal coordinate and distance. …
Run Code Online (Sandbox Code Playgroud)

php gis geolocation

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

计算给定点、方位和距离的 GPS 坐标

我有一个问题让我在某些项目中停滞了一段时间。

我基本上希望使用我编写的某些脚本绘制的 x、y 点来捕获多边形。纬度、经度是多边形的中心 GPS 线,我正在寻找其周围的多边形。

这是我的Python代码的一部分:

def getcords(lat, lon, dr, bearing):
    lat2=asin(sin(lat)*cos(dr)+cos(lat)*sin(dr)*cos(bearing))
    lon2=lon+atan2(sin(bearing)*sin(dr)*cos(lat),cos(dr)-sin(lat)*sin(lat2))
    return [lat2,lon2]
Run Code Online (Sandbox Code Playgroud)

我的输入是这样的:

  • lat、lon - 以十进制度数给出。
  • dr - 是以英里为单位的距离除以地球半径计算得出的角度(=3958.82)
  • 方位角 - 0-360 度之间。

但是对于输入:

getcorsds1(42.189275, -76.85823, 0.5/3958.82, 30)
Run Code Online (Sandbox Code Playgroud)

我得到输出: [-1.3485899508698462, -76.8576637627568],但是这[42.2516666666667, -76.8097222222222]是正确的答案。

至于角距离,我简单地通过将英里距离除以地球半径(= 3958.82)来计算。

有人吗?

python gps coordinates bearing

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

计算给定轴承和距离的坐标

我在这里实现这里描述的功能时遇到问题.

这是我的Java实现:

private static double[] pointRadialDistance(double lat1, double lon1, 
        double radianBearing, double radialDistance) {
     double lat = Math.asin(Math.sin(lat1)*Math.cos(radialDistance)+Math.cos(lat1)
             *Math.sin(radialDistance)*Math.cos(radianBearing));
     double lon;
     if(Math.cos(lat) == 0) {  // Endpoint a pole
        lon=lon1;      
     }
     else {
        lon = ((lon1-Math.asin(Math.sin(radianBearing)*Math.sin(radialDistance)/Math.cos(lat))
                +Math.PI) % (2*Math.PI)) - Math.PI;
     }
    return (new double[]{lat, lon});
}
Run Code Online (Sandbox Code Playgroud)

我将度数轴承转换为弧度,并在调用函数之前将距离(km)转换为弧度距离 - 这不是问题所在.

但是,当我输入坐标时:lat = 49.25705; lon = -123.140259; 轴承225(西南),距离1km

我得到了这个:lat:-1.0085434360125864 lon:-3.7595299668539504

它显然不正确,谁能看到我做错了什么?

谢谢

algorithm gps coordinates bearing

4
推荐指数
1
解决办法
3万
查看次数

为什么我不能在 Jupyter Notebook 上导入 geopy.distance.vincenty()?我安装了 geopy 2.0.0

from geopy.distance import vincenty
Run Code Online (Sandbox Code Playgroud)

我刚刚安装了geopy2.0.0 包,我想像geopy.distance.vincenty()这个文档所说的那样使用。但是,它返回ImportError: cannot import name 'vincenty' from 'geopy.distance'。如果我尝试

from geopy import distance
Run Code Online (Sandbox Code Playgroud)

它变成AttributeError: module 'geopy.distance' has no attribute 'vincenty'。大约两三个月前,我在Google Colab上使用了它,它很好。发生了什么?难道是最新版本放弃了这个属性?

python import distance geopy

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

根据十进制度位置计算仪表偏移

我有一个以十进制度数给出的位置(x.xxxxxxxx 和 y.yyyyyyyy)。我需要在它周围画一个矩形。矩形的中心与位置匹配。矩形的尺寸以米为单位,它的旋转范围为 0-360 度。

问题 如何计算矩形的四个角并将结果返回为四个十进制度值?喜欢arrayOf<LatLon> getRectangle(LatLon position, int rectWidthCm, int rectLengthCm, double rectRotation)

例子

  1. 我有一个以LatLon格式给出的位置,有两个值:纬度和经度。我们假设这个位置是精确的。
  2. 主要任务是在谷歌地图图表中根据这个位置绘制一个矩形。矩形可以有任何尺寸,但让我们在本示例中使用这些尺寸:宽度 = 0.9 米,长度 = 1.2 米。也可以给出任何航向,所以让我们使用这个航向:45. 0 是北,顺时针旋转(东 = 90,南 = 180 和西 = 270)。当矩形指向北方时,它具有北/南方向的长度。最后,矩形中心应等于给定位置。

注意:项目设置是一个支持 Kotlin 和谷歌地图图表的 Android 应用程序。我对解决这个问题的现代方法很感兴趣。关于精度损失,它最多应该在厘米以内。

java android geolocation geospatial kotlin

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