Hi,
is there a way to programmatically add a elevation surface to a map in ArcGis Pro? And while we're at it.. also add a elevation source to the new elevation surface? I know how to query a elevation surface and list the available surfaces but I didn't find a way to add new elevation surfaces.
Thanks in advance! 🙂
Christian
Updating the ElevationSources of a map requires updating the MapDefinition. The basic approach is:
Craig
I obviously haven't run it, but that seems right reading it over.
Hi Craig,
thanks a lot for you reply. Your solution seems to work 🙂 If you don't mind, would you look over my code to check whether it's okay? I use it to add a new elevation surface whose source is a TIN.
<SPAN class="keyword token">private</SPAN> Task <SPAN class="token function">CreateNewElevationSurface</SPAN><SPAN class="punctuation token">(</SPAN>ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Mapping<SPAN class="punctuation token">.</SPAN>Map map<SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">string</SPAN> surfaceName<SPAN class="punctuation token">)</SPAN> <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">return</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Framework<SPAN class="punctuation token">.</SPAN>Threading<SPAN class="punctuation token">.</SPAN>Tasks<SPAN class="punctuation token">.</SPAN>QueuedTask<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Run</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">=</SPAN><SPAN class="operator token">></SPAN> <SPAN class="punctuation token">{</SPAN> <SPAN class="keyword token">var</SPAN> dataConnection <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>CIMStandardDataConnection</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> dataConnection<SPAN class="punctuation token">.</SPAN>WorkspaceConnectionString <SPAN class="operator token">=</SPAN> String<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Format</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"DATABASE={0}"</SPAN><SPAN class="punctuation token">,</SPAN> System<SPAN class="punctuation token">.</SPAN>IO<SPAN class="punctuation token">.</SPAN>Path<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDirectoryName</SPAN><SPAN class="punctuation token">(</SPAN>ArcGIS<SPAN class="punctuation token">.</SPAN>Desktop<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>Project<SPAN class="punctuation token">.</SPAN>Current<SPAN class="punctuation token">.</SPAN>DefaultGeodatabasePath<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> dataConnection<SPAN class="punctuation token">.</SPAN>WorkspaceFactory <SPAN class="operator token">=</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>WorkspaceFactory<SPAN class="punctuation token">.</SPAN>Tin<SPAN class="punctuation token">;</SPAN> dataConnection<SPAN class="punctuation token">.</SPAN>Dataset <SPAN class="operator token">=</SPAN> <SPAN class="string token">"Tin"</SPAN><SPAN class="punctuation token">;</SPAN> dataConnection<SPAN class="punctuation token">.</SPAN>DatasetType <SPAN class="operator token">=</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>esriDatasetType<SPAN class="punctuation token">.</SPAN>esriDTTin<SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> newElevationSource <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>CIMElevationSource</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> newElevationSource<SPAN class="punctuation token">.</SPAN>VerticalUnit <SPAN class="operator token">=</SPAN> ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>Geometry<SPAN class="punctuation token">.</SPAN>LinearUnit<SPAN class="punctuation token">.</SPAN>Meters<SPAN class="punctuation token">;</SPAN> newElevationSource<SPAN class="punctuation token">.</SPAN>DataConnection <SPAN class="operator token">=</SPAN> dataConnection<SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> newElevationSurface <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>CIMMapElevationSurface</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> newElevationSurface<SPAN class="punctuation token">.</SPAN>Name <SPAN class="operator token">=</SPAN> surfaceName<SPAN class="punctuation token">;</SPAN> newElevationSurface<SPAN class="punctuation token">.</SPAN>BaseSources <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>CIMElevationSource</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="punctuation token">{</SPAN> newElevationSource <SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> definition <SPAN class="operator token">=</SPAN> map<SPAN class="punctuation token">.</SPAN><SPAN class="token function">GetDefinition</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">int</SPAN> numElevationSurfaces <SPAN class="operator token">=</SPAN> definition<SPAN class="punctuation token">.</SPAN>ElevationSurfaces<SPAN class="punctuation token">.</SPAN>Length<SPAN class="punctuation token">;</SPAN> <SPAN class="keyword token">var</SPAN> newElevationSurfaces <SPAN class="operator token">=</SPAN> <SPAN class="keyword token">new</SPAN> <SPAN class="token class-name">ArcGIS<SPAN class="punctuation token">.</SPAN>Core<SPAN class="punctuation token">.</SPAN>CIM<SPAN class="punctuation token">.</SPAN>CIMMapElevationSurface</SPAN><SPAN class="punctuation token">[</SPAN>numElevationSurfaces <SPAN class="operator token">+</SPAN> <SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">;</SPAN> Array<SPAN class="punctuation token">.</SPAN><SPAN class="token function">Copy</SPAN><SPAN class="punctuation token">(</SPAN>definition<SPAN class="punctuation token">.</SPAN>ElevationSurfaces<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> newElevationSurfaces<SPAN class="punctuation token">,</SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">,</SPAN> numElevationSurfaces<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> newElevationSurfaces<SPAN class="punctuation token">[</SPAN>numElevationSurfaces<SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> newElevationSurface<SPAN class="punctuation token">;</SPAN> definition<SPAN class="punctuation token">.</SPAN>ElevationSurfaces <SPAN class="operator token">=</SPAN> newElevationSurfaces<SPAN class="punctuation token">;</SPAN> map<SPAN class="punctuation token">.</SPAN><SPAN class="token function">SetDefinition</SPAN><SPAN class="punctuation token">(</SPAN>definition<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">;</SPAN> <SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Thanks again and Best regards
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.