Como construir um projeto que informe se um ponto está dentro de uma área restrita?

26/10/2022

0

Preciso construir um projeto que possa acusar se um ponto está dentro de uma área restrita ou não. Para isso tenho que usar um mapa com áreas restritas já delimitadas por meio de layers e o ponto de entrada é uma coordenada geográfica.

Para fazer este projeto em Python, estou pensando em usar a biblioteca "shapely.geometry" para converter todo o mapa em um plano cartesiano com as áreas restritas delimitadas. Nesse sentido, tenho que converter as coordenadas geográficas em coordenadas cartesianas (x,y).

Por favor, alguém conhece alguma biblioteca que permita converter coordenadas geográficas em coordenadas cartesianas?

Ou por acaso, alguém sabe uma maneira melhor de resolver este problema?

Atenciosamente,
Victor Soares
Victor Baptista

Victor Baptista

Responder

Posts

26/12/2022

Arthur Heinrich

Um possível algoritmo para isso é calcular o ponto de intersecção de cada segmento de reta que limita a área delimitada com o segmento de reta horizontal, partindo do ponto a ser verificado.

Existem 3 situações possíveis:
1 - os segmentos de reta não se cruzam. Desconsiderar o segmento.
2 - os segmentos se cruzam em uma coordenada X inferior (à esquerda do ponto a ser verificado). Desconsiderar o segmento
3 - os segmentos se cruzam em uma coordenada X superior (à direita do ponto a ser verificado). Considerar o segmento, somando 1 a um contador.

Ao final, se o contador registrar um número ímpar de intersecções, o ponto está dentro da região demarcada.

Imagino que você possa considerar as coordenadas (longitude, latitude) como se fossem coordenadas cartesianas (x, y), sem problemas. Basta trabalhar com graus decimais, ao invés de notação XºY'Z".
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar