Pregunta

Soy ingeniería inversa de una aplicación de visualización de transporte. Necesito averiguar la latitud para el origen de su fuente de datos. Específicamente qué es XY 0,0. Las únicas fórmulas que he encontrado calculan la distancia entre dos puntos o la ubicación de un rumbo / distancia.

Utilizan el XY para mostrar un mapa en una aplicación muy antigua. El XY está en PIES.

Tengo estas coordenadas:

47.70446615506108, -122.34469839507263: x=1268314, y=260622
47.774182540800616,-122.3412994737105:  x=1269649, y=286031
47.60024792289405, -122.32767331735774: x=1271767, y=222532
47.57012494413499, -122.29129609983679: x=1280532, y=211374

Necesito averiguar cuál es la latitud y longitud de x = 0, y = 0 y cuál sería la fórmula para averiguarlo.

Tienen dos fuentes de datos, una es más actual que la otra. La fuente con los datos más actuales NO incluye la latitud, la longitud, sino solo XY. Estoy tratando de extrapolar según su alimentación de datos menos actual, pero más informativa (incluye lat, lon) qué 0,0 es, así que simplemente puedo convertir las coordenadas XY de su alimentación de datos (más actual) a latitud y longitud.

¿Fue útil?

Solución

¡Pregúnteles qué sistema de coordenadas están usando! (o si obtuviste el conjunto de datos de alguna base de datos, mira los metadatos para el conjunto de datos y debería indicarte. De lo contrario, sería escéptico sobre su valor)

Lo más probable es que este sea uno de los sistemas de coordenadas del plano estatal . Son para áreas localizadas de la tierra (como UTM ), y se utilizan con frecuencia para topografía

Puede usar CORPSCON (u otros programas GIS; ExpertGPS hará esto si tiene el paquete de opciones GIS pero no es gratis. Olvido si GPSBabel hace conversión) para convertir entre lat / long y cualquiera de los sistemas de coordenadas del plano de estado. También deberá saber en qué datum están las coordenadas. WGS84 y NAD83 son Muy cerca pero NAD27 es diferente.

Otros consejos

Si observas las primeras 2 líneas de datos y restas la latitud

47.7044 - 47.7741 = -0.06972 degrees

Hay 60 millas náuticas por grado de latitud y 6076 pies por milla náutica.

-.06972 * 60 * 6076 = 25,415 ft

Restar los dos valores 'Y':

260662 - 286031 = 25,409 ft

De hecho, eso parece probar que los valores de X e Y están en pies.

Si toma alguno de los valores de Y, y vuelve a convertir en grados, por ejemplo

260622 ft / ( 6076 ft/nm ) / ( 60 nm/degree ) = .71
286031 ft / 6076 / 60 = .78

Por lo tanto, restar esos valores de las latitudes de (47.70 y 47.77) te da casi exactamente 47 grados, lo que debería ser tu y = 0 punto.

Para la longitud, un grado es de 60 millas náuticas en el ecuador y 0 millas en los polos. Por lo tanto, el número de millas por grado debe multiplicarse por el coseno de la latitud, por lo tanto, aproximadamente cos (47 grados), o .68. Entonces, en lugar de 6076 nm por grado, se trata de 4145 nm.

Así que para los valores de X,

1268314 ft / ( 4145 ft/nm ) / ( 60 nm/degree ) = 5.10 degrees
1269649 ft / 4145 / 60 = 5.10 degrees

Estos números X aumentan a medida que aumenta la latitud (menos negativo), por lo que creo que deberías agregar 5.1 grados, lo que significa que el punto base X se trata de

-122.3 + 5.1 = 117.2 West longitude for your x=0 point.

Esta es aproximadamente la posición de Spokane WA.

Así dado X = 1280532, Y = 211374

Lat = 47 + ( 211374 / 6096 / 60 ) = 47.58
Lon = -117.2 - ( 1280532 / ( 6096 * cos(47.58)) / 60 ) = -122.35

Que es aproximadamente equivalente a los datos dados 47.57 y -122.29

La variación puede deberse a diferentes proyecciones: el sistema X, Y puede ser un " aplanado " ¿Proyección a diferencia de lat / long que se aplica a una proyección esférica? Entonces, para ser precisos, es posible que necesites más matemáticas avanzadas o esa biblioteca de código abierto :)

Esta pregunta también puede ser útil, contiene código para calcular grandes distancias circulares:

Calcule la distancia entre dos latitudes ¿Puntos de longitud? (Fórmula de Haversine)

Hay muchos sistemas de coordenadas diferentes. Debe averiguar qué son los sistemas de coordenadas tanto para los lat / lons (por ejemplo, WGS84, etc.) como para los de x / y primero (por ejemplo, algún tipo de sistema proyectado).

Una vez que tenga esa información, hay varias herramientas que puede usar para hacer conversiones y manipulaciones. Un ejemplo (de una biblioteca de codificación de código abierto) es proj4 .

Ya tienes un buen consejo sobre sistemas de coordenadas, así que solo te uniré a la biblioteca que he usado con gran éxito en el pasado.

Geotrans está aprobado para su uso por el Departamento de Defensa de los EE. UU., por lo que puede estar seguro de que está bien probado. Puedes agarrarlo desde aquí:

http://earth-info.nga.mil/GandG/geotrans/index.html

Ese podría no ser el enlace correcto ya que esa página habla sobre la aplicación, no sobre la biblioteca. Espero que la biblioteca esté en el paquete de Desarrolladores. Los términos de la licencia eran muy liberales de memoria, pero asegúrese de revisar los términos antes de usarlos comercialmente.

Editar:

Una discusión interesante sobre las licencias de Geotrans se puede encontrar aquí:

http://www.mail-archive.com/debian-legal@lists.debian.org/msg39263.html

Por aquí, dije esto:

En Java, usaría el Convertidor de OpenMap de la expresión de un punto en UTM a uno con latitud y longitud (asumiendo un elipsoide WGS-84 que se usa más comúnmente en GPS).

OpenMap es de código abierto y yo publicaría un enlace a su página de descarga, pero tienen un script de licencia corto en el camino. Entonces, para evitar ser grosero, no haré un enlace profundo. En su lugar, diríjase a su página de inicio y haga clic en Descargas .

Eso debería resolver su problema directamente o al menos señalarle un algoritmo útil.

He usado gPoint PHP class de Brenor Brophey para hacer esto en Un par de ocasiones. Sólidos resultados, código GPL, y de fácil implementación. Recomendado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top