Ошибка точности при преобразовании координат с помощью proj4js - PullRequest
0 голосов
/ 26 октября 2010

Я использую библиотеку Proj4js для преобразования координат.Я преобразую координаты из EPSG: 23029 в EPSG: 4326. Проблема в том, что при преобразовании координат есть некоторое отклонение от точности, используемой при обработке нагрузки.Я заметил это, преобразовав систему координат из источника в пункт назначения и наоборот.Код, который я использую для преобразования:

<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);

Когда я выполняю преобразование в обоих направлениях, точка начала не совпадает.

 x1= -6.34378379330039
 y1=  39.48007480688388

 x2= -6.343783791584894
 y2= 39.4800748068322604

Кто-нибудь знает, какрешить эту проблему?

спасибо.

1 Ответ

3 голосов
/ 19 ноября 2010

Вы будете всегда терять некоторую точность при конвертации между проекционными системами.Существует ряд источников ошибок, в том числе ограничения арифметики с плавающей запятой в движке JavaScript и обратимость преобразования между проекциями.

С другой стороны, откуда поступают ваши исходные данные?Учитывая, что вы теряете точность только с точностью до девятого знака после запятой, вполне вероятно, что ваши исходные данные на самом деле не настолько точны для начала (конечно, не ваш обычный GPS или даже с дифференциальной коррекцией), поэтому нет особого смыслабеспокоиться об ошибках, внесенных в алгоритм повторного проецирования.

РЕДАКТИРОВАТЬ: Итак, после некоторых вычислений ваша ошибка после двух повторных проекций составляет около 1/10 миллиметра.Я очень сомневаюсь, что стоит попытаться улучшить это для любого реального приложения.

...