我们正在建立一个应用程序,我是一名司机,我从A点到B点旅行.在我的路上,我可以找到以相同路线旅行的乘客.
我们正在使用PostgreSQL和PostGIS扩展.
经过谷歌搜索后,我发现我们可以使用线串来实现这一点.我不完全确定这种方法是否会成功.
假设我有源和目的地的坐标.
var RouteCoordinates = [
{lat: 37.772, lng: -122.214},
{lat: 21.291, lng: -157.821},
{lat: -18.142, lng: 178.431},
{lat: -27.467, lng: 153.027}
];
Run Code Online (Sandbox Code Playgroud)
我需要将其存储为我的数据库中的线串.
如果一名乘客也在这条路线上行驶,但我们知道他的来源和目的地不会完全在我的线路中,但他们会在附近.例如,半径约1km
正如您所看到的那样,我的源和目的地就是那条线.当我旅行时,我想挑选所有那些(源和目的地)靠近我的路线(在特定半径范围内)的人
如果我想在特定半径范围内找到我的数据库中的特定位置,我将会这样查询
SELECT id, name, address, geom
FROM Seattle_Starbucks
WHERE ST_DWithin(geom, ST_MakePoint(-122.325959,47.625138)::geography, 1000);
Run Code Online (Sandbox Code Playgroud)
现在我可以实现我的解决方案,因为我刚接触postGIS有点令人困惑
ANS:我需要使用此函数ST_MakeLine转换为linestring,然后存储,对吧?
能否请您告诉我如何实现这一目标.非常感谢您的帮助.谢谢
我想问一下如何创建一个圆圈radius=4km.我尝试了这个ST_Buffer功能,但它创建了一个更大的圆圈.(我通过将其多边形插入到新的kml文件中来查看创建的圆圈.)
这就是我想要的.
INSERT INTO camera(geom_circle) VALUES(geometry(ST_Buffer(georgaphy(ST_GeomFromText('POINT(21.304116745663165 38.68607570952619)')), 4000)))
Run Code Online (Sandbox Code Playgroud)
圆的中心是一个lon lat点,但我不知道它,SRID因为我从kml文件中导入了它.我是否需要SRID改变几何形状等?
在 PostGIS 中寻找一个实现来生成覆盖整个地球的六边形网格,以便聚合每个六边形上的数据。
任何指向正确方向的指针都会有很大帮助!
最终产品: - 一张表格,其中包含覆盖整个世界的六边形网格中每个六边形的中心点。- 六边形有固定面积
谷歌返回当前的纬度和经度,但计算左下纬度和经度以及右上纬度和经度。我一直无法弄清楚它是如何计算的。
有谁知道它是否是静态距离?百分比差异?它是如何计算的?
伊利诺伊州芝加哥
current lat 41.8781136
current lon -87.6297982
lower left lat 40.3781136
lower left lon -89.8743648
upper right lat 43.3781136
upper right lon -85.3852316
Run Code Online (Sandbox Code Playgroud)
纽约
current lat 40.7127753
current lon -74.0059728
lower left lat 39.2127753
lower left lon -76.26396172
upper right lat 42.2127753
upper right lon -71.74798388
Run Code Online (Sandbox Code Playgroud)
知道它从中心到左侧和右侧是 103.5 英里,并且知道它从中心到顶部和底部边界是 103.5 英里。
使用当前的经纬度点,如何计算左下角和右上角的点?
我假设 PostGIS 有这个功能?
postgis ×4
postgresql ×3
geometry ×2
ecto ×1
elixir ×1
geo ×1
geolocation ×1
gis ×1
google-maps ×1
sql ×1
srid ×1