Mais

Definir Tolerância em Postgis


Existe alguma maneira de definir a tolerância em Postgis, em Arcgis tolerância é a distância mínima que poderia separar dois pontos, se a distância entre eles for menor que a tolerância, então os pontos são considerados sobrepostos. preciso definir este parâmetro porque obtenho alguns resultados estranhos usando funções comoST_Intersects, ST_equals, ST_difference. nestas condições, eu verifico os pontos de intersecção porST_Distance (p1, p2) mas gostaria de obter uma solução mais robusta e geral.

no meu caso de uso, preciso de apenas 1 cm a 1 mm de precisão, mas, por exemplo, às vezes ST_Intersects não dá os resultados esperados devido a alguns mícrons (0,000001).

SELECT ST_Intersects ('POINT (0,00000000000000001 0)' :: geometry, 'LINESTRING (0 0, 0 2)' :: geometry);

A estratégia mais robusta para determinar uma interseção de geometria é usar ST_DWithin (g1, g2, dist). Mas se você estiver usando ferramentas de sobreposição de geometria como ST_Difference ou ST_Intersection, os nós precisam ser "ajustados" um ao outro, então tente ST_Snap (entrada de geometria, referência de geometria, tolerância de flutuação). Aqui está um exemplo de várias técnicas.

SELECIONE ST_Intersects (a, b) AS intersects_without_snap, ST_AsText (ST_Snap (a, b, tol)) AS a_snapped_on_b, ST_Intersects (ST_Snap (a, b, tol), b) AS intersects_with_a_snapped_on_b, ST_AsText (ST_Snap) (b, tol) ( ) AS b_snapped_on_a, ST_Intersects (ST_Snap (b, a, tol), b) AS intersects_with_b_snapped_on_a, ST_DWithin (a, b, tol), ST_Distance (a, b) 

Novamente, o simplista para a pergunta é ST_DWithin. (ST_Snap às vezes faz coisas inesperadas, na minha experiência)


Assista o vídeo: Intersection Geometry. PostGIS (Outubro 2021).