5 votos

convertir lat/lng a pixel y viceversa

Este había sido solicitado previamente por Stack Overflow.

He intentado diferentes métodos, fórmulas, pero los resultados no son correctos. 40.764296,-73.97302 debe resultar en 930,3590 de los píxeles del mapa de imagen. He Manhattan mapa de imagen rotada 28.34. Yo no podía encontrar la fórmula correcta para la conversión de lat/lng a pixel y viceversa. Me Puede faltar algo importante?

Manhattan imagen de mapa (1816x8160) tener la siguiente lat/lon de las esquinas.

TopLeft: (-73.9308,40.8883)
TopRight: (-73.8584,40.858)
BottomLeft: (-74.0665,40.7024)
BottomRight: (-73.9944,40.6718)
Mapa no es el norte verdadero y el que gira a 28.34, también su Zona UTM 18N (78W a 72). Aquí hay más detalles acerca de este mapa tomado de PDF Mapas de la aplicación de iOS.

Size (pixels): 1816 x 6160
Pixel Resolution: 3.829 meters
Bounds (pixels): (-1624, -3518) x (7866, 7719)
PROJCS["WGS 84 / UTM zone 18N",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            TOWGS84[0,0,0,0,0,0,0],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",-75],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","32618"]]

Cómo convertir lat/lon a x y y viceversa?

1voto

crono Puntos 1626

Así como un rápido doble check, al girar las coordenadas, se hizo "rotar desde el centro", ¿correcto? En otras palabras, sus coordenadas:

{x Cos[angle] + (2 cy - y) Sin[angle], y Cos[angle] + x Sin[angle]}

donde cy es el centro de la coordenada y (es decir, la mitad de los y ancho, o 3080 en su caso), y angle es el ángulo de rotación, ¿correcto?

Cuando yo hice la traducción de su imagen de muestra y se la comparó con ImageMagick gira en la versión de la imagen, tengo píxel perfecta exactitud (después de redondeo):

enter image description here

(nota: yo no puedo ver esta imagen de mí, pero yo cuando me la baje, así que voy a asumir que es sólo para mí; si nadie más puede ver, por favor, hágamelo saber).

[viejo "respuesta" a continuación]

Esto probablemente no sea útil, pero demasiado largo para un comentario.

Las fórmulas que he encontrado usando https://github.com/barrycarter/bcapps/blob/master/STACK/bc-solve-gis-178354.m son:

{-73.9308 + 0.00003988980716253542*x - 0.000016631940188748616*y, 
 40.8883 - 0.000016694214876035256*x - 0.000022784654982228672*y}

para convertir los píxeles x,y a lon,lat, y

{1.9928145063077821*10^6 - 14017.262662576404*lat + 19202.720184031*lon, 
 334427.99241686985 - 33618.80202858345*lat - 14069.747257820272*lon}

para convertir lon,lat a x,y.

Estos están cerca, pero no muy a la altura de lo que necesita.

Tener mejor precisión en la esquina de las coordenadas puede permitir el refinamiento de estas fórmulas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X