yangjunbin
路人甲
路人甲
  • 注册日期2004-08-20
  • 发帖数2
  • QQ
  • 铜币123枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:828回复:0

多边形问题

楼主#
更多 发布于:2004-10-25 16:03
<P>那个知道:通过SDE保存在当前层的要素类创建一个新的要素为多边形,但在调用Store()方法时,程序提示不能保存,这是为什么?</P>
<P>void CFouthView::CreatePolygonFeature()
{</P>
<P>IWorkspaceEditPtr pWorkspaceEdit;
IFeatureLayerPtr pFeatureLayer;
IFeatureClassPtr pFeatureClass;
IFeaturePtr pFeature;
OnSetLayer();//设置图层
if (NULL == m_pCurLayer)
{
  MessageBox("未获取当前层!", "错误", MB_ICONWARNING);
  return;
}
    //Create the feature
pWorkspaceEdit = GetWorkspaceEdit();
pFeatureLayer = m_pCurLayer;
pFeatureLayer->get_FeatureClass(;pFeatureClass);
if (NULL == pFeatureClass)
{
  MessageBox("未获取要素!", "提示", MB_ICONINFORMATION);
  return;
}
HRESULT hr;</P>
<P>hr = pWorkspaceEdit->StartEditing(VARIANT_TRUE);
if (FAILED(hr))
{
  MessageBox("开始编辑失败!", "提示", MB_ICONINFORMATION);
  pWorkspaceEdit->AbortEditOperation();
  return;
}
hr = pWorkspaceEdit->StartEditOperation();
if (FAILED(hr))
{
  MessageBox("开始编辑操作失败!", "提示", MB_ICONINFORMATION);
  pWorkspaceEdit->AbortEditOperation();
  return;
}</P>
<P>hr = pFeatureClass->CreateFeature(;pFeature);
if (FAILED(hr))
{
  MessageBox("建立要素失败!", "提示", MB_ICONINFORMATION);
  return;
}
IGeometryPtr pGeo1= NULL;
pFeature->get_ShapeCopy(;pGeo1);
  IPointCollectionPtr ipPointColl = NULL;</P>
<P>ipPointColl = pGeo1;

  IPointPtr ipPoints[5];
  int i = 0;
  for (i = 0; i <5; i++)
  {
          ipPoints.CreateInstance(CLSID_Point);
  }
    ipPoints[0]->PutCoords(-93,28);
  ipPoints[1]->PutCoords(-94,25);
  ipPoints[2]->PutCoords(-89,27);
  ipPoints[3]->PutCoords(-89,23);
  ipPoints[4]->PutCoords(-89,23);
      for (i = 0; i < 5; ++i)
  {
          ipPointColl->AddPoint(ipPoints);
  }
  IMapControl3Ptr        m_ipMapControl = NULL;
  m_ipMapControl=m_map1.GetControlUnknown();
  long lPointCount = 0;
  ipPointColl->get_PointCount(;lPointCount);
  if (lPointCount >= 3)
  {
     m_ipMapControl->DrawShape(pGeo1);
  }</P>
<P>  IPolygonPtr pGeo3 = NULL;
  pGeo3.CreateInstance(CLSID_Polygon);
     pGeo3 = ipPointColl;
hr=pFeature->putref_Shape(pGeo1);
if (FAILED(hr))
{
  MessageBox("加入几何图形!", "提示", MB_ICONINFORMATION);
  return;
}
hr = pFeature->Store();//<B><FONT color=#f73809>程序这时报错</FONT></B>
if (FAILED(hr))
{
  MessageBox("存储失败!", "提示", MB_ICONINFORMATION);
  return;
}
hr = pWorkspaceEdit->StopEditOperation();
if (FAILED(hr))
{
  MessageBox("停止编辑失败!", "提示", MB_ICONINFORMATION);
  return;
}
m_pMap->SelectFeature(m_pCurLayer, pFeature);
</P>
喜欢0 评分0
游客

返回顶部