¿Cómo puedo dibujar los puntos en una polilínea ESRI, dado el cuadro delimitador como latitud / longitud y los “puntos” como radianes?

StackOverflow https://stackoverflow.com/questions/2794290

Pregunta

Estoy usando OpenMap y estoy leyendo un archivo de formas utilizando com.bbn.openmap.layer.shape.ShapeFile. El cuadro delimitador se lee en como lat puntos / largos, por ejemplo 39.583642, -104.895486. El cuadro delimitador es un punto inferior izquierda y un punto superior derecha que representa el lugar donde están contenidos los puntos. Los "puntos", que llevan el nombre "radianes" en OpenMap, están en un formato diferente, que se parece a esto: [0.69086486, -1.8307719, 0,6908546, -1.8307716, 0,6908518, -1.8307717, 0,69085056, -1.8307722, 0,69084936, -1.8307728 , 0.6908477, -1,8307738, 0,69084626, -1,8307749, 0,69084185, -1,8307792].

¿Cómo convierto los puntos como "0,69086486, -1.8307719" en coordenadas x, y que son utilizables en los gráficos normales?

Creo que todo lo que se necesita aquí es una especie de conversión, ya que agrupar los puntos en Excel y graficando los crea una línea cuya curva coincide con la curva de la carretera en el lugar determinado (latitud / longitud). Sin embargo, los axises ser necesario ajustar manualmente y no tengo ninguna referencia de cómo ajustar los axises, ya que el cuadro delimitador determinado parece estar en un formato diferente al de los puntos dados.

La descripción técnica ESRI no parece mencionar esto ( http: //www.esri.com/library/whitepapers/pdfs/shapefile.pdf ).

¿Fue útil?

Solución

0.69086486, -1.8307719 es una latitud y una longitud en radianes.

En primer lugar, convertir a grados (se multiplican por (180 / pi)), entonces tendrá unidades comunes entre su cuadro delimitador y sus coordenadas.

A continuación, se puede trazar todo ello en un marco local con lo siguiente:

x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)

(latitude0, longitude0) son las coordenadas de un punto de referencia (por ejemplo, la esquina inferior izquierda del cuadro delimitador) son unidades grados para ángulos y m para distancias

Editar - explicación: Esta es una proyección ortográfica de la Tierra considerada como una esfera cuyo radio es 6378137.0 m (eje semi-mayor del elipsoide WGS84), centrado en el punto (Lat0, Lon0)

Otros consejos

En OpenMap, hay una serie de maneras de convertir de radianes a grados decimales:

Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal)  // Standard java library

Para un arsenal, puede utilizar ProjMath.arrayDegToRad (doble [] radvals);

Tenga cuidado con esto último, se realiza la conversión en su lugar. Así que si usted agarra una lon gama lat / desde un OMPoly, hacer una copia de la misma antes de su conversión. De lo contrario, desordenar las coordenadas internas del OMPoly, que espera estar en radianes.

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