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

, но как правило - сходится.
Готов доработать описание до статьи.

Re: Расчет параметров локальных СК
Добавлено: 13 май 2011, 13:02
Донецков
Что-то пересчет не работает...
PROJ4 разместил в c:\proj\
proj_tr_.xls и proj_api.dll разместил там же, далее прописал явный путь к файлам в макросе...
Re: Расчет параметров локальных СК
Добавлено: 13 май 2011, 16:33
Boris
Забавно. Я то же вчера на эту же ошибку налетел...
А ведь 40 человек скачали.
К вечеру поправлю.
Re: Расчет параметров локальных СК
Добавлено: 13 май 2011, 16:41
Максим Дубинин
Boris, может правда доработать описание до статьи?
Re: Расчет параметров локальных СК
Добавлено: 13 май 2011, 17:57
Boris
Re: Расчет параметров локальных СК
Добавлено: 13 май 2011, 17:58
Boris
Максим Дубинин писал(а):Boris, может правда доработать описание до статьи?
Я готов. Осталось услышать замечания и понять чего не хватает для статьи.
Re: Расчет параметров локальных СК
Добавлено: 14 май 2011, 05:35
gamm
Boris писал(а):Максим Дубинин писал(а):Boris, может правда доработать описание до статьи?
Я готов. Осталось услышать замечания и понять чего не хватает для статьи.
Борис, для решения этой задачи можно минимизировать не квадрат разности координат, а дисперсию разности, исключив таким образом смещение X0, Y0 из параметров задачи. Поскольку начальный меридиан можно достаточно точно определить перебором (он недалеко от того места, для которого создана МСК), а масштаб положить для начала 1, легко получается начальное приближение, после чего optim() с квазиньютоновским методом находит
центральный меридиан и масштаб. X0, Y0 определяются просто расчетом. Метод чисто численный, красивых формул не напишешь, но работает.
Re: Расчет параметров локальных СК
Добавлено: 15 май 2011, 21:12
Донецков
Скопировал новые файлы в С:\proj\
изменил ссылки в макросе
запускаю - Error [53]: File not found С:\proj\proj_api.dll
Ничего не понимаю....
Re: Расчет параметров локальных СК
Добавлено: 15 май 2011, 21:54
Boris
а я говорил выше - эта ошибка означает, что НЕ находится библиотека proj4.dll из пакета PROJ4. Она должна лежать в каталогах, которые указаны в переменной среды PATH.
Почему так, почему не ищутся библиотеки в том же каталоге где лежит XLS, - я не знаю. Может у MS какая задумка была, а ли наоборот дело в безопастности...
Моего во всей работе только код внутри XLS (и то не весь) и оформление листа. Библиотеку proj_api.dll и ее вызовы на VB я скачал из интернета.
Re: Расчет параметров локальных СК
Добавлено: 16 май 2011, 08:49
Донецков
Может дело в том, что у меня нет proj4.dll, а есть: c:\proj\bin\proj.dll ?.....
Может кто поделится адектватной версией PROJ, свою скачивал с официального сайта, но с ней не идет....
Что значит ПРАВИЛЬНАЯ установка пакета PROJ4, которая не описана в инструкции?
Из прилагаемой инструкции в PROJ следует C:\> set PATH=%PATH%;C:\PROJ\BIN
Пробывал и на х32 и на х64
Re: Расчет параметров локальных СК
Добавлено: 16 май 2011, 13:35
Boris
Я уже разбирался с такой ошибкой:
Обследование поведения вызова указанной функции показало, что она отражает "наведенную" ошибку. У себя мне удалось ее вызвать следующим образом:
а) была очищена переменная 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
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\
Re: Расчет параметров локальных СК
Добавлено: 18 май 2011, 18:07
Boris
Совет дня: как несколько раз было предложено автором GAMM, если призвести усреднение данных, что бы избавться от безумных первых разрядов в координатах, сходимость итераций и точность расчета вырастет на порядок.
Надо бы это в алгоритм засунуть, только руки не доходят

Re: Расчет параметров локальных СК
Добавлено: 19 май 2011, 08:31
Донецков
Интересное наблюдение...
Re: Расчет параметров локальных СК
Добавлено: 19 май 2011, 13:49
gamm
Донецков писал(а):Интересное наблюдение...
если одновременно подбирается и
центральный меридиан и dEast, то корреляция между коэффициентами близка к 1, что делает решаемую систему ill conditioned. Так что приходится разделять ...