Рассчитать расстояние от текущей широты и долготы с разными широтой и долготой в одном километре [закрыто]

В Modern OpenGL (OpenGL 3.2 и выше) вы можете использовать Geometry Shader для этого:

#version 330

layout (triangles) in;
layout (line_strip /*for lines, use "points" for points*/, max_vertices=3) out;

in vec2 texcoords_pass[]; //Texcoords from Vertex Shader
in vec3 normals_pass[]; //Normals from Vertex Shader

out vec3 normals; //Normals for Fragment Shader
out vec2 texcoords; //Texcoords for Fragment Shader

void main(void)
{
    int i;
    for (i = 0; i < gl_in.length(); i++)
    {
        texcoords=texcoords_pass[i]; //Pass through
        normals=normals_pass[i]; //Pass through
        gl_Position = gl_in[i].gl_Position; //Pass through
        EmitVertex();
    }
    EndPrimitive();
}

Замечания:

-2
задан Cooper 19 March 2019 в 20:48
поделиться

2 ответа

Помните, что широта и долгота изначально написаны в градусах, я думаю, что вам сначала нужно узнать, какое расстояние представляет 1º, в некоторых книгах и на сайтах говорится, что 1º составляет около 111 км, в зависимости от того, как близко находится пятно от линии экватора, Итак (более или менее):

1º  - 111km, also 1º equals 60'
then 1' should be 1.85km, and 1' equals 60"
then 1" is more or less 0.03km 
so 32.4324" is about 1km

Теперь ... в основном вам нужно теперь ограничить квадрат на основе начального местоположения, для этого просто добавьте / вычтите 32.4324 "к широте и долготе, поэтому попробуй .. давай поедем в Лас-Вегас (используй карты Google)

36.1699412,-115.1398296

Это месторасположение в шестнадцатеричной системе счисления, сын переводит 32,4324 "... это просто ... просто разделить его на 3600 и это 0,009009009, это значение, которое вы должны добавить / вычесть из / из широты / долготы

north bound, after add: 36.1789502
south bound, after substract: 36.1609322
east bound, after add: -115.1308206
west bound, after substract: -115.1488386

, теперь в gmaps попробуйте найти эти границы для ex (северная граница: 36.1789502, -115.1398296), которую вы увидите находится чуть выше исходного местоположения, вы также можете измерить расстояние от исходного местоположения до 1 км, которое более или менее близко к северной границе, которую вы только что рассчитали.

Так что теперь просто запросите вашу базу данных и отфильтруйте ее там, где широта находится между северной границей (36.1609322) и южной границей (36.1789502), а также долготой между западной границей (-115.1488386) и восточной границей (-115.1308206), и это должно выполнять работу. Таким образом, магия заключается в том, чтобы просто добавить / вычесть 0,009009009 в любую точку местоположения.

0
ответ дан Jonnathan Q 19 March 2019 в 20:48
поделиться

Это формула расстояний с использованием долготы и широты.

a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)

c = 2 * atan2( √a, √(1−a) )

d = R * c
//Where φ represent the latitudes, and λ represent the longitudes.

. Ссылка: https://www.sisense.com/blog/latitude-longitude-distance-calculation-explained/ [ 111]

Также вы можете проверить эту страницу для использования JavaScript. https://www.movable-type.co.uk/scripts/latlong.html

0
ответ дан marc_s 19 March 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: