问题描述
我正在尝试在 PROJ 库 7.2.2 中计算测地线距离。但是,无论我输入什么数据,proj_lp_dist 函数都会返回 Infinity。命令行工具正常工作,但它不会调用相同的 API。 我曾尝试反转 long-lat 值,但这并不能解决问题。
c:\PROJ\build_vs2019\bin\Release>geod +ellps=WGS84 -I
28.472672560770082 -81.466635213256282 37.41439966801741 -122.07673673962702
-64d33'38.315" 92d36'51.975" 3892821.141
TEST_METHOD(TestDistanceExperimentalReverse)
{
wchar_t message[2000];
SetEnv();
PJ_CONTEXT* C = proj_context_create();
Assert::IsNotNull(C,L"Cannot create PROJ context.");
PJ* P = proj_create(C,"EPSG:4326"/*WGS84*/);
Assert::IsNotNull(P,L"Cannot create PROJ converter");
PJ_COORD a,b;
//Universal Studios,Orlando,Florida
a = proj_coord(-81.466635213256282,28.472672560770082,0);
//Computer history Museum,Mountain View,California
b = proj_coord(-122.07673673962702,37.41439966801741,0);
double dist = proj_lp_dist(P,a,b);
swprintf_s(message,L"distance %g\n",dist);
Logger::WriteMessage(message);
{
wchar_t msg[2000];
int errnum = proj_context_errno(C);
if (errnum != 0)
{
const char* c = proj_errno_string(errnum);
size_t cSize = strlen(c) + 1;
mbstowcs_s(&cSize,msg,c,cSize);
swprintf_s(message,L"Context state %d %s",errnum,msg);
Logger::WriteMessage(message);
}
}
{
wchar_t msg[2000];
int errnum = proj_errno(P);
if (errnum != 0)
{
const char* c = proj_errno_string(errnum);
size_t cSize = strlen(c) + 1;
mbstowcs_s(&cSize,L"Projection state %d %s",msg);
Logger::WriteMessage(message);
}
}
Assert::IsFalse(isnan(dist),L"Distance is NaN");
Assert::IsFalse(isinf(dist),L"Distance is Infinity");
Assert::AreEqual(3892821.141,dist);
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)