Расчет параметров локальных СК

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Расчет параметров локальных СК

Сообщение Boris » 06 апр 2011, 23:40

Делал для себя на коленке. Но вот один человек заинтересовался. Пришлось причесать и описать. Раз уж потратил время, то решил, может и еще кому-то сгодиться?
Суть: файл Excel с модулем VBA, который вычисляет параметры локальной (неизвестной) СК на основе известной проекции Гаусса-Крюгера и набора одноименных точек. Не очень быстрая и плохо сходящаяся реализация идей из статьи "ОПРЕДЕЛЕНИЕ ПАРАМЕТРОВ ПРЕОБРАЗОВАНИЯ ПЛОСКИХ ПРЯМОУГОЛЬНЫХ КООРДИНАТ В ПРОЕКЦИИ ГАУССА ПО ОДНОИМЕННЫМ ТОЧКАМ"
В статье итерационный процесс сходится существенно быстрее, чем в моем модуле :( , но как правило - сходится.
proj_tr.7z
(131.77 КБ) 562 скачивания
Готов доработать описание до статьи. :wink:

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Расчет параметров локальных СК

Сообщение Донецков » 13 май 2011, 13:02

Что-то пересчет не работает...
PROJ4 разместил в c:\proj\
proj_tr_.xls и proj_api.dll разместил там же, далее прописал явный путь к файлам в макросе...
Вложения
ошибка.zip
(459.19 КБ) 434 скачивания

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Расчет параметров локальных СК

Сообщение Boris » 13 май 2011, 16:33

Забавно. Я то же вчера на эту же ошибку налетел...
А ведь 40 человек скачали. :shock:
К вечеру поправлю.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Расчет параметров локальных СК

Сообщение Максим Дубинин » 13 май 2011, 16:41

Boris, может правда доработать описание до статьи?
пристегивайтесь, турбулентность прямо по курсу

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Расчет параметров локальных СК

Сообщение Boris » 13 май 2011, 17:57

proj_tr.7z
(120.69 КБ) 620 скачиваний
Свежая версия.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Расчет параметров локальных СК

Сообщение Boris » 13 май 2011, 17:58

Максим Дубинин писал(а):Boris, может правда доработать описание до статьи?
Я готов. Осталось услышать замечания и понять чего не хватает для статьи.

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Расчет параметров локальных СК

Сообщение gamm » 14 май 2011, 05:35

Boris писал(а):
Максим Дубинин писал(а):Boris, может правда доработать описание до статьи?
Я готов. Осталось услышать замечания и понять чего не хватает для статьи.
Борис, для решения этой задачи можно минимизировать не квадрат разности координат, а дисперсию разности, исключив таким образом смещение X0, Y0 из параметров задачи. Поскольку начальный меридиан можно достаточно точно определить перебором (он недалеко от того места, для которого создана МСК), а масштаб положить для начала 1, легко получается начальное приближение, после чего optim() с квазиньютоновским методом находит центральный меридиан и масштаб. X0, Y0 определяются просто расчетом. Метод чисто численный, красивых формул не напишешь, но работает.

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Расчет параметров локальных СК

Сообщение Донецков » 15 май 2011, 21:12

Скопировал новые файлы в С:\proj\
изменил ссылки в макросе
запускаю - Error [53]: File not found С:\proj\proj_api.dll
Ничего не понимаю....
Последний раз редактировалось Донецков 20 май 2011, 08:41, всего редактировалось 1 раз.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Расчет параметров локальных СК

Сообщение Boris » 15 май 2011, 21:54

а я говорил выше - эта ошибка означает, что НЕ находится библиотека proj4.dll из пакета PROJ4. Она должна лежать в каталогах, которые указаны в переменной среды PATH.
Почему так, почему не ищутся библиотеки в том же каталоге где лежит XLS, - я не знаю. Может у MS какая задумка была, а ли наоборот дело в безопастности...

Моего во всей работе только код внутри XLS (и то не весь) и оформление листа. Библиотеку proj_api.dll и ее вызовы на VB я скачал из интернета.

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Расчет параметров локальных СК

Сообщение Донецков » 16 май 2011, 08:49

Может дело в том, что у меня нет proj4.dll, а есть: c:\proj\bin\proj.dll ?.....
Может кто поделится адектватной версией PROJ, свою скачивал с официального сайта, но с ней не идет....
Что значит ПРАВИЛЬНАЯ установка пакета PROJ4, которая не описана в инструкции?
Из прилагаемой инструкции в PROJ следует C:\> set PATH=%PATH%;C:\PROJ\BIN
Пробывал и на х32 и на х64

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Расчет параметров локальных СК

Сообщение Boris » 16 май 2011, 13:35

Я уже разбирался с такой ошибкой:
Обследование поведения вызова указанной функции показало, что она отражает "наведенную" ошибку. У себя мне удалось ее вызвать следующим образом:
а) была очищена переменная path, которая отвечает за места размещения не только вызываемых файлов, к которым можно обращаться без указания пути, но и за DLL библиотеки.
б) получили ошибку
в) добавили в переменную path единственный каталог, то в котором лежит библиотека proj.dll от PROJ4
г) все заработало
е) проверяем значения установленной переменной path:
  • set path=C:\WINXP.X64\System32\Wbem;C:\OSGeo4W\bin - не работает
  • set path=C:\WINXP.X64\System32\Wbem;C:\OSGeo4W\bin; - работает
  • set path=C:\WINXP.X64\System32\Wbem;C:\OSGeo4W\bin - работает
  • set path=C:\OSGeo4W\bin - работает
  • set path=C:\OSGeo4W\bin ; - не работает
ИТОГ:
Если в имени каталога, указанного в path, где лежит proj.dll, НЕ proj_api.dll есть пробел в конце, видимый, если потом идет ;(точка с запятой) , или не видимый, если это конец строки PATH, то это воспринимается как НЕ найденная библиотека proj.dll. Если не найден путь к библиотеке proj.dll - получаем ошибку об отсутствующей библиотеке proj_api.dll.
По крайней мере, это ситуация, которая вылезла сразу, после игр с переменной PATH. Поскольку, я сам переменную path, не заполнял, видимо этот пробел в нее дописал установщик OSGeo4W. Но т.к. у меня путь к PROJ4, был прописан отдельно и раньше, чем путь C:\OSGeo4W\bin, то у меня этой ошибки и не было.
Попробуйте напрямую указать каталог с PROJ.dll в PATH, может ошибка пройдет?
----
Библиотека действительно должна быть PROJ.dll.
----
Код для VBA я то же брал с какого-то официального сайта, который у меня сегодня не отвечает. Но он такой же как здесь http://ftp.dfg.ca.gov/Public/BDB/Tools/ ... oj_api.zip
Описание установки библиотек PROJ4, такое же как и самой программы PROJ4, которая устанавливается многими способами и многими пакетами в частности такое http://ftp.dfg.ca.gov/Public/BDB/Tools/proj4/SETUP.TXT

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Расчет параметров локальных СК

Сообщение Донецков » 18 май 2011, 15:30

Заработало...
в Панель управления\Все элементы управления\Система\Дополнительные параметры системы\Дополнительно\Переменные среды\ Переменные среды пользователя для ****\Создать\
path=C:\proj\bin\
в Системные переменные к существующим:
C:\Program Files (x86)\Corel\Corel SVG Viewer\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\ArcGIS\bin;C:\Program Files\Aladdin\eToken\PKIClient\x32;C:\Program Files\Aladdin\eToken\PKIClient\x64
в конец тоже добавил: path=C:\proj\bin\

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Расчет параметров локальных СК

Сообщение Boris » 18 май 2011, 18:07

Совет дня: как несколько раз было предложено автором GAMM, если призвести усреднение данных, что бы избавться от безумных первых разрядов в координатах, сходимость итераций и точность расчета вырастет на порядок.
Надо бы это в алгоритм засунуть, только руки не доходят :(

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Расчет параметров локальных СК

Сообщение Донецков » 19 май 2011, 08:31

Интересное наблюдение...

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Расчет параметров локальных СК

Сообщение gamm » 19 май 2011, 13:49

Донецков писал(а):Интересное наблюдение...
если одновременно подбирается и центральный меридиан и dEast, то корреляция между коэффициентами близка к 1, что делает решаемую систему ill conditioned. Так что приходится разделять ...

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя