2010-10-26 5 views
0

J'utilise la bibliothèque Proj4js pour transformer les coordonnées. Je transforme les coordonnées d'EPSG: 23029 en EPSG: 4326. Le problème est qu'en transformant les coordonnées, il y a un écart par rapport à la précision utilisée dans la charge de traitement. Je l'ai remarqué en transformant un système de coordonnées de l'origine à la destination et vice versa. Le code que j'utilise pour faire de la transformation est:Erreur de précision lors de la transformation de coordonnées en utilisant proj4js

<script type="text/javascript" src="/proj4js/lib/proj4js-compressed.js"> </ script> 
<script type="text/javascript" src="/proj4js/lib/projCode/merc.js"> </ script> 
<script type="text/javascript" src="/projCode/tmerc.js"> </ script> 
<script type="text/javascript" src="/proj4js/defs/EPSG23029.js"> </ script> 
<script type="text/javascript" src="/proj4js/defs/EPSG4326.js"> </ script> 

source = new Proj4js.Proj ('EPSG: 23029'); 
dest = new Proj4js.Proj (map.projection.toString()); 

x = feature_selected.geometry.x; 
y = feature_selected.geometry.y; 

p = new Proj4js.Point (x, y); 

p = Proj4js.transform (source, dest, feature_selected.geometry); 

quand je fais la transformation dans les deux sens, le point d'origine ne sont pas les mêmes.

x1= -6.34378379330039 
y1= 39.48007480688388 

x2= -6.343783791584894 
y2= 39.4800748068322604 

Quelqu'un sait-il comment résoudre ce problème?

merci.

Répondre

3

Il y a un certain nombre de sources d'erreur, y compris des limitations sur l'arithmétique en virgule flottante dans le moteur JavaScript et autour de la réversibilité d'une transformation entre les projections.

D'autre part, d'où proviennent vos données sources? Considérant que vous perdez seulement la précision à environ la neuvième décimale, il est probable que vos données sources ne sont pas vraiment précises au départ (certainement pas votre GPS habituel, ou même différemment corrigé), donc il n'y a pas beaucoup de points s'inquiéter des erreurs introduites dans l'algorithme de re-projection.

EDIT: Donc, après quelques calculs - votre erreur après deux re-projections est d'environ 1/10ème de millimètre. Je doute fortement que cela vaut la peine d'essayer d'améliorer cela pour toute application du monde réel.

Questions connexes