programa planas para manualmente gratis google geograficas earth coordenadas convertir convertidor como r latitude-longitude coordinate-transformation utm

planas - coordenadas utm wgs84



Determinación de la zona UTM(para convertir) de longitud/latitud (2)

No sé r-code, pero supongo que este código PL / SQL puede ayudarlo con las excepciones:

UTMZone := Trunc((lon - Zone0WestMeridian) / d); --Special Cases for Norway & Svalbard CASE WHEN (lat > 55) AND (UTMZone = 31) AND (lat < 64) AND (lon > 2) THEN UTMZone := 32; WHEN (lat > 71) AND (UTMZone = 32) AND (lon < 9) THEN UTMZone := 31; WHEN (lat > 71) AND (UTMZone = 32) AND (lon > 8) THEN UTMZone := 33; WHEN (lat > 71) AND (UTMZone = 34) AND (lon < 21) THEN UTMZone := 33; WHEN (lat > 71) AND (UTMZone = 34) AND (lon > 20) THEN UTMZone := 35; WHEN (lat > 71) AND (UTMZone = 36) AND (lon < 33) THEN UTMZone := 35; WHEN (lat > 71) AND (UTMZone = 36) AND (lon > 32) THEN UTMZone := 37; ELSE UTMZone := UTMZone; END CASE;

Estoy escribiendo un programa que espera una cantidad de puntos lat / long, y los convierto internamente a UTM para hacer algunos cálculos en metros.

El rango de los puntos lat / largos en sí mismos es bastante pequeño, aproximadamente 200 mx 200 m. Se puede confiar en que casi siempre están dentro de una única zona UTM (a menos que tenga mala suerte y estén al otro lado de una zona).

Sin embargo, la zona en la que están los lat / longs no está restringida. Un día, el programa podría ejecutarse para personas en Australia (y, oh, cuántas zonas tiene un solo estado, y cuánto dolor me ha causado ya ...), y otro día para las personas en México.

Mi pregunta es: ¿hay una manera de determinar en qué zona se encuentra un determinado long / lat para que pueda incluirse en una biblioteca de conversión (actualmente uso proj4 y también el paquete R rgdal )?

Mi lenguaje es R, pero la respuesta no tiene que ser: quizás sea un simple cálculo, o tal vez pueda incrustar una llamada del sistema al proyecto.

aclamaciones.


Edición: Para el código (no R) que funciona para todas las áreas no polares de la Tierra, vea here o here .

A menos que esté tratando con datos de un par de áreas excepcionales ( Svalbard y partes de Noruega ), este es un cálculo lo suficientemente simple como para que pueda hacerlo usted mismo en R. Aquí está la descripción de Wikipedia de cómo se relaciona la longitud con el número de Zona UTM :

El sistema UTM divide la superficie de la Tierra entre 80 ° S y 84 ° N de latitud en 60 zonas, cada una de 6 ° de longitud en ancho. La zona 1 cubre una longitud de 180 ° a 174 ° W; la numeración de la zona aumenta hacia el este hasta la zona 60 que cubre la longitud 174 a 180 Este.

Por lo tanto, suponiendo que en sus longitudes de datos al oeste del Prime Meridian se codifican como de -180 a 0 grados, aquí hay una versión en código R de lo anterior:

long2UTM <- function(long) { (floor((long + 180)/6) %% 60) + 1 } # Trying it out for San Francisco, clearly in UTM Zone 10 # in the figure in the Wikipedia article linked above SFlong <- -122.4192 long2UTM(SFlong) # [1] 10

Esa expresión obviamente podría simplificarse un poco, pero creo que de esta forma la lógica subyacente a su construcción es muy clara. El %% 60 bit está ahí en caso de que algunas de sus longitudes sean mayores que 180 o menores que -180.