Estoy desarrollando un geocodificador inverso para Canadá. Hasta ahora, dado un lat / lng, puedo encontrar la calle más cercana (segmento de línea), que incluye la dirección del segmento de línea y los rangos de direcciones para ambos lados de la calle. Ahora estoy tratando de encontrar la mejor manera de aproximar programáticamente el número de casa más cercano al punto lat / lng dado.
Aquí hay un ejemplo de una fila que contiene los datos de la calle:
-[ RECORD 1 ]-
[...]
l_adddirfg | Same Direction
l_hnumf | 3219
l_hnuml | 3235
l_stname_c | Breen Road North-west
r_adddirfg | Same Direction
r_hnumf | 3224
r_hnuml | 3236
r_stname_c | Breen Road North-west
the_geom | 0105000020E610000001000000010200000002000000B0F6990E78885CC088DF2B5F3C8C49400875B39A89885CC0A0BCA6AC4B8C4940
Entonces, dada una coordenada lat / lng que se encuentra cerca del segmento de línea "the_geom", una persona podría decir visualmente en qué lado de la calle está el punto (lado izquierdo o derecho) y qué tan lejos está el segmento, por lo tanto aproximando un número de casa. Por ejemplo, si el punto se encuentra en el lado derecho, tres cuartos por la calle, usaría los campos r_hnumf (lado derecho, primer número) y r_hnuml (lado derecho, último número) ... La dirección de la calle probablemente esté cerca a:
3232 Breen Road North-west
Lo que estoy buscando es una práctica recomendada para calcular / aproximar esto en PostGIS (en el que soy nuevo) o en la capa de aplicación una vez que se recupera la fila.
¡Gracias!
fuente