Come faccio a disegnare i punti in un ESRI Polilinea, dato il rettangolo di selezione come latitudine / longitudine e i “punti”, come radianti?

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

Domanda

sto usando OpenMap e sto leggendo uno ShapeFile utilizzando com.bbn.openmap.layer.shape.ShapeFile. La casella di delimitazione viene letto come Lat punti / lunghi, ad esempio 39,583,642 mila, -104,895486. Il riquadro di delimitazione è un punto in basso a sinistra e un punto in alto a destra che rappresenta dove i punti sono contenuti. I "punti", che prendono il nome "radianti" in OpenMap, sono in un formato diverso, che assomiglia a questo: [,69,086486 millions, -1,8307719, ,6908,546 mila, -1,8307716, ,6908,518 mila, -1,8307717, ,69,085056 millions, -1,8307722, ,69,084936 millions, -1,8307728 , 0.6908477, -1,8307738, ,69,084626 millions, -1,8307749, ,69,084185 millions, -1,8307792].

Come faccio a convertire i punti come ",69,086486 millions, -1,8307719" in coordinate X, Y che sono utilizzabili nella grafica normali?

Credo tutto ciò che serve qui è una sorta di conversione, perché portando i punti in Excel e li graficamente crea una linea la cui curva corrisponde la curva della strada presso la posizione indicata (lat / long). Tuttavia, i axises necessario regolare manualmente e non ho riferimento come regolare le axises, poiché la data casella di delimitazione sembra essere in un formato diverso rispetto ai punti dati.

La descrizione tecnica file di forma ESRI non sembra parlare di questo ( http: //www.esri.com/library/whitepapers/pdfs/shapefile.pdf ).

È stato utile?

Soluzione

0.69086486, -1.8307719 è una latitudine e longitudine in radianti.

In primo luogo, convertito in gradi (moltiplicare per (180 / pi)), allora si avrà unità comuni tra il riquadro di selezione e le coordinate.

Poi si può tracciare tutto in una cornice locale con la seguente:

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

(latitude0, longitude0) sono le coordinate di un punto di riferimento (ad esempio nell'angolo inferiore sinistro del riquadro) unità sono gradi per gli angoli e metri per le distanze

Modifica - spiegazione: Questa è una proiezione ortogonale della Terra considerata come una sfera il cui raggio è 6378137.0 m (semiasse maggiore dell'ellissoide WGS84), centrato sul punto (lat0, lon0)

Altri suggerimenti

In OpenMap, ci sono una serie di modi per convertire da radianti a gradi decimali:

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

Per una matrice, è possibile utilizzare ProjMath.arrayDegToRad (double [] radvals);

Fare attenzione a quello ultimo, lo fa la conversione in atto. Quindi, se si afferra un lon gamma LAT / da un OMPoly, fare una copia di esso prima di convertirlo. In caso contrario, ti rovinare le coordinate interne del OMPoly, che si aspetta di essere in radianti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top