📄 jcview.cpp
字号:
{
int dxindex=ljb.Findczd(pdxstr);
ASSERT(dxindex!=-1);
int dxxuhao=ljb.m_xian.GetAt(dxindex)->xuhao;
if(p_xs1&&p_xs2)
{
p_xs1=NULL;
p_xs1=new xishu;
p_xs1->col=2*dxxuhao-1;
p_xs1->value=-dx3;
p_xs1->followxs=NULL;
p_xs2->followxs=p_xs1;
p_xs2=NULL;
p_xs2=new xishu;
p_xs2->col=2*dxxuhao;
p_xs2->value=-dx4;
p_xs2->followxs=NULL;
p_xs1->followxs=p_xs2;
}
else
{
p_xs1=new xishu;
p_xs1->followxs=NULL;
p_xs1->col=2*dxxuhao-1;
p_xs1->value=-dx3;
m_fc.m_array.Add(p_xs1);
p_xs2=new xishu;
p_xs2->followxs=NULL;
p_xs2->value=-dx4;
p_xs2->col=2*dxxuhao;
p_xs1->followxs=p_xs2;
}
ASSERT(p_xs1);
ASSERT(p_xs2);
}
if(!iszzknow)
{
int zzindex=ljb.Findczd(pzzstr);
ASSERT(zzindex!=-1);
int zzxuhao=ljb.m_xian.GetAt(zzindex)->xuhao;
if(p_xs1&&p_xs2)
{
p_xs1=NULL;
p_xs1=new xishu;
p_xs1->col=2*zzxuhao-1;
p_xs1->value=zx3;
p_xs1->followxs=NULL;
p_xs2->followxs=p_xs1;
p_xs2=NULL;
p_xs2=new xishu;
p_xs2->col=2*zzxuhao;
p_xs2->value=zx4;
p_xs2->followxs=NULL;
p_xs1->followxs=p_xs2;
}
else
{
p_xs1=new xishu;
p_xs1->followxs=NULL;
p_xs1->col=2*zzxuhao-1;
p_xs1->value=zx3;
m_fc.m_array.Add(p_xs1);
p_xs2=new xishu;
p_xs2->followxs=NULL;
p_xs2->value=zx4;
p_xs2->col=2*zzxuhao;
p_xs1->followxs=p_xs2;
}
ASSERT(p_xs1);
ASSERT(p_xs2);
}
p_xs1=NULL;
p_xs2=NULL;
if((t2-t1)>=0)
m_changshu.Add(((t2-t1)-liushizshi(m_zzd->myjiaodu))*po);//以秒为单位
else
m_changshu.Add(((t2-t1)+2*pi-liushizshi(m_zzd->myjiaodu))*po);//以秒为单位
m_quan.Add(1);
m_zzd=m_zzd->myzzdian;
}
}
else
{
zzd m_zzd=ljb.m_xian.GetAt(m_index)->pzzdian;
CString pzzstr;
while(m_zzd)
{
iszzknow=false;
pzzstr=m_zzd->dianhao;
myindex=ljb.Findczd(pzzstr);
if(myindex!=-1)
{
dxdx=ljb.m_xian.GetAt(myindex)->x;
dxdy=ljb.m_xian.GetAt(myindex)->y;
t2=atan2(dxdy-czdy,dxdx-czdx);
if(ljb.m_xian.GetAt(myindex)->isknow)
{iszzknow=true;
jishibc=(dxdy-czdy)*(dxdy-czdy)+(dxdx-czdx)*(dxdx-czdx);
zx1=po*(dxdy-czdy)/jishibc;
zx2=po*(czdx-dxdx)/jishibc;
zx3=0;zx4=0;
}
else
{ jishibc=(dxdy-czdy)*(dxdy-czdy)+(dxdx-czdx)*(dxdx-czdx);
zx1=po*(dxdy-czdy)/jishibc;
zx2=po*(czdx-dxdx)/jishibc;
zx3=po*(czdy-dxdy)/jishibc;
zx4=po*(dxdx-czdx)/jishibc;
}
}
else
{
bool isfind=false;
for(int c=0;c<=m_myyzarray.GetUpperBound();c++)
{
if(!strcmp(pdxstr,m_myyzarray.GetAt(c)->dianhao))
{ isfind=true;
iszzknow=true;
dxdx=m_myyzarray.GetAt(c)->x;
dxdy=m_myyzarray.GetAt(c)->y;
}
}
if(!isfind)
{ CString cuostr;
cuostr.Format("不能处理支点 %s",pzzstr);
MessageBox(cuostr);
return;
}
t2=atan2(dxdy-czdy,dxdx-czdx);
jishibc=(dxdy-czdy)*(dxdy-czdy)+(dxdx-czdx)*(dxdx-czdx);
zx1=po*(dxdy-czdy)/jishibc;
zx2=po*(czdx-dxdx)/jishibc;
zx3=0;
zx4=0;
}
//xiefangchengdaolinjiebiao
if(isczknow&&isdxknow&&iszzknow)
{
MessageBox("发现多余角度观测值,请检查!");
return;
}
xs p_xs1=NULL;
xs p_xs2=NULL;
if((dxdy-czdy)<0)
t2+=2*pi;
if(!isczknow)
{ int czxuhao=ljb.m_xian.GetAt(m_index)->xuhao;
p_xs1=new xishu;
p_xs1->followxs=NULL;
p_xs1->col=2*czxuhao-1;
p_xs1->value=zx1-dx1;
m_fc.m_array.Add(p_xs1);
p_xs2=new xishu;
p_xs2->followxs=NULL;
p_xs2->value=zx2-dx2;
p_xs2->col=2*czxuhao;
p_xs1->followxs=p_xs2;
ASSERT(p_xs1);
ASSERT(p_xs2);
}
if(!isdxknow)
{
int dxindex=ljb.Findczd(pdxstr);
ASSERT(dxindex!=-1);
int dxxuhao=ljb.m_xian.GetAt(dxindex)->xuhao;
if(p_xs1&&p_xs2)
{
p_xs1=NULL;
p_xs1=new xishu;
p_xs1->col=2*dxxuhao-1;
p_xs1->value=-dx3;
p_xs1->followxs=NULL;
p_xs2->followxs=p_xs1;
p_xs2=NULL;
p_xs2=new xishu;
p_xs2->col=2*dxxuhao;
p_xs2->value=-dx4;
p_xs2->followxs=NULL;
p_xs1->followxs=p_xs2;
}
else
{
p_xs1=new xishu;
p_xs1->followxs=NULL;
p_xs1->col=2*dxxuhao-1;
p_xs1->value=-dx3;
m_fc.m_array.Add(p_xs1);
p_xs2=new xishu;
p_xs2->followxs=NULL;
p_xs2->value=-dx4;
p_xs2->col=2*dxxuhao;
p_xs1->followxs=p_xs2;
}
ASSERT(p_xs1);
ASSERT(p_xs2);
}
if(!iszzknow)
{
int zzindex=ljb.Findczd(pzzstr);
ASSERT(zzindex!=-1);
int zzxuhao=ljb.m_xian.GetAt(zzindex)->xuhao;
if(p_xs1&&p_xs2)
{
p_xs1=NULL;
p_xs1=new xishu;
p_xs1->col=2*zzxuhao-1;
p_xs1->value=zx3;
p_xs1->followxs=NULL;
p_xs2->followxs=p_xs1;
p_xs2=NULL;
p_xs2=new xishu;
p_xs2->col=2*zzxuhao;
p_xs2->value=zx4;
p_xs2->followxs=NULL;
p_xs1->followxs=p_xs2;
}
else
{
p_xs1=new xishu;
p_xs1->followxs=NULL;
p_xs1->col=2*zzxuhao-1;
p_xs1->value=zx3;
m_fc.m_array.Add(p_xs1);
p_xs2=new xishu;
p_xs2->followxs=NULL;
p_xs2->value=zx4;
p_xs2->col=2*zzxuhao;
p_xs1->followxs=p_xs2;
}
ASSERT(p_xs1);
ASSERT(p_xs2);
p_xs1=NULL;
p_xs2=NULL;
}
//CString str;
//str.Format("t1=%f,t2=%f,%s,t2-t1=%15.10f,l=%15.10f,po=%d",t1,t2,pdxstr,t2-t1,liushizshi(m_zzd->myjiaodu),po);
//MessageBox(str);
if((t2-t1)>=0)
m_changshu.Add(((t2-t1)-liushizshi(m_zzd->myjiaodu))*po);//以秒为单位
else
m_changshu.Add(((t2-t1)+2*pi-liushizshi(m_zzd->myjiaodu))*po);//以秒为单位
m_quan.Add(1);
m_zzd=m_zzd->myzzdian;
}
}
}
// 把距离写入方程
double pblwucha=mydoc->m_blwucha;
double pgdwucha=mydoc->m_gdwucha;
double pjdwucha=mydoc->m_cjwucha;
double x1,y1,x2,y2;
double jx1,jx2,jx3,jx4;//存放距离系数
bool isshouknow=false;
bool ismoknow=false;
xs m_x1,m_x2;
m_x1=NULL;
m_x2=NULL;
if(m_recordset->IsOpen())
m_recordset->Close();
try
{
CString strselect(_T("Select * From["));
strselect+="距离";
strselect+=_T("]");
m_recordset->Open(dbOpenDynaset,strselect);
if(!m_recordset->CanUpdate())
return;
COleVariant var1,var2,var3;
while(!m_recordset->IsEOF())
{
var1=m_recordset->GetFieldValue(0);
var2=m_recordset->GetFieldValue(1);
var3=m_recordset->GetFieldValue(2);
CString pshoustr,pmostr;
double pjuli;
pshoustr=CCrack::strVARIANT(var1);
pmostr=CCrack::strVARIANT(var2);
pjuli=atof(CCrack::strVARIANT(var3));
int sindex,mindex;
sindex=ljb.Findczd(pshoustr);
mindex=ljb.Findczd(pmostr);
if(sindex==-1||mindex==-1)
{ CString cwstr;
cwstr.Format("发现非法距离观测 从%s到%s",pshoustr,pmostr);
MessageBox(cwstr);
return;
}
czd shouczd=ljb.m_xian.GetAt(sindex);
czd moczd=ljb.m_xian.GetAt(mindex);
x1=shouczd->x;
x2=moczd->x;
y1=shouczd->y;
y2=moczd->y;
double s0=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
m_changshu.Add(s0-pjuli);
m_quan.Add(pjdwucha*pjdwucha/(pgdwucha+pblwucha*pjuli/1000000)/(pgdwucha+pblwucha*pjuli/1000000));
if(shouczd->isknow&&moczd->isknow)
{
MessageBox("发现多余观测值");
return;
}
if(!shouczd->isknow)
{
jx1=(x1-x2)/s0;
jx2=(y1-y2)/s0;
m_x1=new xishu;
m_x1->col=2*shouczd->xuhao-1;
m_x1->followxs=NULL;
m_x1->value=jx1;
m_fc.m_array.Add(m_x1);
m_x2=new xishu;
m_x2->col=2*shouczd->xuhao;
m_x2->value=jx2;
m_x2->followxs=NULL;
m_x1->followxs=m_x2;
}
if(!moczd->isknow)
{
jx3=(x2-x1)/s0;
jx4=(y2-y1)/s0;
if(m_x1&&m_x2)
{
m_x1=NULL;
m_x1=new xishu;
m_x1->col=2*moczd->xuhao-1;
m_x1->value=jx3;
m_x1->followxs=NULL;
m_x2->followxs=m_x1;
m_x2=NULL;
m_x2=new xishu ;
m_x2->col=2*moczd->xuhao;
m_x2->value=jx4;
m_x2->followxs=NULL;
m_x1->followxs=m_x2;
}
else
{
m_x1=new xishu;
m_x1->col=2*moczd->xuhao-1;
m_x1->followxs=NULL;
m_x1->value=jx3;
m_fc.m_array.Add(m_x1);
m_x2=new xishu;
m_x2->col=2*moczd->xuhao;
m_x2->value=jx4;
m_x2->followxs=NULL;
m_x1->followxs=m_x2;
}
}
ASSERT(m_x1);
ASSERT(m_x2);
m_x1=NULL;
m_x2=NULL;
m_recordset->MoveNext();
}
}
catch(CDaoException* e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -