Me gustaría resolver las posiciones de píxeles X, Y, en un mapa proyectado de Robinson, a lat longs.
Encontré una función de JavaScript que puede resolver lat longs en píxeles: https://github.com/afar/robinson_projection , pero no puedo resolver (o encontrar una implementación de) píxeles en lat longs.
Encontré varios artículos sobre cómo funciona la proyección de Robinson, como https://simplemaps.com/flash/robinson-projection-in-as3-gpl/
Básicamente estoy atascado en este punto: las matemáticas requeridas para calcular la latitud desde el píxel X, Y están mucho más allá de mi terrible habilidad matemática, y a pesar de leer estas cosas varias veces, la lógica tampoco está clara para mí.
Asumí que la lógica está en el código fuente de d3-geo o d3-geo-projection en alguna parte, pero no pude encontrar nada al buscarlo.
Mirando en Wikipedia, hay esto:
Las coordenadas de los puntos en un mapa se calculan de la siguiente manera:
... pero realmente no entiendo cómo ponerlo en Javascript, o calcular "el meridiano central elegido para el mapa", e incluso entonces, ¿son estas "coordenadas" lo mismo que los valores de píxeles?
Información de fondo :
Estoy tratando de hacer una función de javascript simple y muy liviana, que puede hacer lat long a pixel X, Y y viceversa, para proyecciones de Mercator y Robinson, sin usar d3, etc. Quiero que sea menos de 2kb minimizado y gzipeado, sin deps.
Mercator funciona bien, hay muchos ejemplos. Pero sigue luchando con la proyección de Robinson .
El código completo, si ayuda, está aquí: https://github.com/sc0ttj/component/pull/53
(Nota al margen, que puede afectar la solución que necesito:
Por alguna razón, tuve que cambiar latSign = getSign(lat) a latSign = 0-getSign(lat) para que el mapa se mostrara en la dirección correcta, verticalmente; consulte https://github.com/sc0ttj/component/pull/ 53/archivos#diff-dc34d0b1b3b6f92f7c3e71af717cf56a5f98923980b859c128d793991690ebdcR64. )
Estoy descaradamente parado sobre los hombros de estos dos proyectos: