ArcGIS 生成指北针

Step 1

   pPoint.CreateInstance(__uuidof(Point));

pPoint->PutX(pEnvelop->GetXMax()-2.5);

pPoint->PutY(pEnvelop->GetYMax()-3.5);

IUIDPtr pUID;

pUID.CreateInstance(__uuidof(UID));

varVal=L"esriCarto.MarkerNorthArrow";

pUID->PutValue(varVal);

 

pElementExtent.CreateInstance(__uuidof(Envelope));

pElementExtent->PutCoords(pPoint->GetX(),pPoint->GetY(),pPoint->GetX()+2,pPoint->GetY()+2);

pMapSurround = CreateSurround(pUID, pElementExtent, "North Arrow", pMap,   m_pPageLayoutControl->GetPageLayout());

pMarkerNorthArrow=pMapSurround;

 

//ESRI North -- 字体文件  117 是改文件中指北针的Unicode编码

  pSymbol=MakeNorthArrowSymbol(177,"ESRI North");

      

  if(pSymbol)

        pMarkerNorthArrow->PutMarkerSymbol((IMarkerSymbolPtr)pSymbol);

  pPoint=NULL;

  pUID=NULL;

pElementExtent=NULL;

 

step 2

IMapSurroundPtr CMapMakeLayoutHelper::CreateSurround(IUIDPtr pID,IEnvelopePtr pEnv,CString strName,IMapPtr pMap,IPageLayoutPtr pPagelayout)

{

    IGraphicsContainerPtr pGraphicsContainer;

    IMapFramePtr pMapFrame;

    IElementPtr pElement;

    IElementPropertiesPtr pElementProperties;

    IActiveViewPtr pActiveView;

    ITrackCancelPtr PTrack;

    IMapSurroundFramePtr pMapSurroundFrame;

    pGraphicsContainer=pPagelayout;

 

    _variant_t vt(pMap, true);

    pMapFrame=pGraphicsContainer->FindFrame(vt);

 

    pMapSurroundFrame=pMapFrame->CreateSurroundFrame(pID,NULL);

    pMapSurroundFrame->GetMapSurround()->PutName(_bstr_t(strName));

 

    pElement=pMapSurroundFrame;

    pElementProperties=pElement;

    pElementProperties->PutName(_bstr_t("North Arrow"));

 

    pActiveView=pPagelayout;

    pElement->PutGeometry(pEnv);

    pElement->Activate(pActiveView->GetScreenDisplay());

 

    PTrack.CreateInstance(__uuidof(CancelTracker));

    pElement->Draw(pActiveView->GetScreenDisplay(),PTrack);

    pGraphicsContainer->AddElement(pElement,0);

    pElement->PutGeometry(pEnv);

    return pMapSurroundFrame->GetMapSurround();

}

Step 3

ISymbolPtr CMapMakeLayoutHelper::MakeNorthArrowSymbol(int intStyle,CString sSymName)

{

    ICharacterMarkerSymbolPtr pCharSym;

    pCharSym.CreateInstance(__uuidof(CharacterMarkerSymbol));

    IRgbColorPtr pRgbColor(__uuidof(RgbColor));

    pRgbColor->PutRed(0);

    pRgbColor->PutGreen(0);

    pRgbColor->PutBlue(0);

    IFontPtr pFont(CLSID_StdFont);

    pFont->put_Name((_bstr_t)sSymName);

    pCharSym->PutColor(pRgbColor);

    pCharSym->PutSize(100);

    pCharSym->PutCharacterIndex(intStyle);

    pCharSym->PutFont(IFontDispPtr(pFont));

    return pCharSym;

}

 

 

 

### 如何在 ArcGIS 中插入或添加指北针元素 为了在 ArcGIS 中成功添加指北针,可以按照如下方式操作: #### 准备工作 确保已经安装并配置好 ArcGIS 软件环境。对于网页应用或者基于 JavaScript API 的开发场景,需引入必要的样式和脚本文件[^1]。 ```html <link rel="stylesheet" href="https://js.arcgis.com/3.29/dijit/themes/tundra/tundra.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.29/esri/css/esri.css"> <script src="https://js.arcgis.com/3.29/"></script> ``` #### 添加指北针到地图布局 当涉及到桌面应用程序如 ArcMap 或者更现代版本中的 Layout View 时,在其中放置指北针的操作相对直观。可以通过图形化界面完成此过程,具体步骤包括但不限于打开所需的地图文档 (.mxd),切换至布局视图模式下找到“Insert”菜单下的 “North Arrow”,从中挑选合适的样式应用于当前项目中[^2]。 #### 自动化处理与批量设置 针对需要频繁创建具有相同特性的地图产品的情况,考虑利用 Python 脚本来实现自动化流程。Esri 提供了 arcpy 库支持此类需求,允许开发者编写程序来定制化生成含有特定装饰物(比如指北针)的地图页面。此外,还可以探索 ModelBuilder 工具构建重复使用的模型来进行批量化作业[^5]。 #### 注意事项 - 如果遇到任何组件加载失败的问题,请确认网络连接正常以及所引用资源的有效性。 - 使用最新版软件通常能获得更好的兼容性和性能表现;旧版本可能存在已知缺陷影响用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值