Arhn - архитектура программирования

Ошибка точности при преобразовании координат с помощью proj4js

Я использую библиотеку 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

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

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

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

18.11.2010
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..