<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How do you Query a Map Service in a Map Document? in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387481#M10307</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Thomas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Interacting with a Map service layer is a bit different than if you were connecting to geodatabase objects directly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The primary issue you're running into is that no class implementing IMapServerSublayer also implements IFeatureSelection, which is why your cast fails.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To query the Map service layer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Cast your desired sub-layer as an &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//00120000050p000000"&gt;IFind&lt;/A&gt; object.&lt;/LI&gt;&lt;LI&gt;Invoke its &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//00120000050z000000"&gt;Find &lt;/A&gt;method with the desired parameters (see example code further down)&lt;/LI&gt;&lt;LI&gt;Find returns an IArray of &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#/IFeatureFindData_Interface/0012000004s5000000/"&gt;IFeatureFindData&lt;/A&gt; objects, which expose a Feature property of type IFeature.&lt;/LI&gt;&lt;LI&gt;Use the IFeature.Shape attribute to zoom to the result! (see example code further down)&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Query an IFind object "serviceLayer"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;string[] fieldName = new [] { "APN" };&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;IArray results = serviceLayer.Find(textBox1.Text, false, fieldName, null);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Zoom to the IFeatureFindData result object.&lt;/P&gt;&lt;P&gt;IFeatureFindData result = results.get_Element(0) as IFeatureFindData;&lt;/P&gt;&lt;P&gt;ArcMap.Document.ActiveView.Extent = result.Feature.Shape.Envelope;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this info gets you moving in the right direction.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 18 Aug 2014 20:50:54 GMT</pubDate>
    <dc:creator>ErinBrimhall</dc:creator>
    <dc:date>2014-08-18T20:50:54Z</dc:date>
    <item>
      <title>How do you Query a Map Service in a Map Document?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387480#M10306</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All -&lt;/P&gt;&lt;P&gt;I'm building an Add-in for ArcMap (using C# and ArcObjects) that provides a custom dialog with a textbox that expects a parcel APN number; entered by the user. If the APN is valid, zoom to the location.&amp;nbsp; When I began developing this tool I took a subset of my Map Service parcel data and created a gdb.&lt;/P&gt;&lt;P&gt;I got everything working and assumed...(wrongly)... that I could simply change the CLSID reference in the code from working with geodatabase layers to&amp;nbsp; MapServer sublayer.&amp;nbsp; As I stated, this was wrong. It now appears that I have an invalid cast. Can anyone suggest how I might be able to save most of this code without having to rewrite it to work with a map service? The map service supports the Query operation, I suspect the answer lies within IQuery. On the positive side, I have created a tool that will successfully close ArcMap...rather quickly too I might add.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;Add-in code snippet&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMxDocument pMxDoc = ArcMap.Document;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pMap = pMxDoc.FocusMap;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumLayer pEnumLayer = null;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // string LayerCLSID = "{E156D7E5-22AF-11D3-9F99-00C04F6BC78E}";&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string LayerCLSID = "{B059B902-5C7A-4287-982E-EF0BC77C6AAB}"; // IMapServerSublayer&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ESRI.ArcGIS.esriSystem.UID uid = new ESRI.ArcGIS.esriSystem.UIDClass();&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uid.Value = LayerCLSID;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pEnumLayer = pMap.get_Layers(((ESRI.ArcGIS.esriSystem.UID)(uid)), true);&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pEnumLayer.Reset();&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ILayer layer = pEnumLayer.Next();&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ILayer selLayer = null;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!(layer == null))&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (layer.Name == "Riverside Parcels")&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selLayer = layer;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string sqlStatement = "APN = '" + textBox1.Text + "'";&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFeatureSelection fSelection = selLayer as IFeatureSelection; //&amp;nbsp; &amp;lt;= **** Invalid Cast? ****&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IQueryFilter qFilter = new QueryFilterClass();&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esriSelectionResultEnum selectionResult = new esriSelectionResultEnum();&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qFilter.WhereClause = sqlStatement;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fSelection.SelectFeatures(qFilter,selectionResult,false);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }//closes if&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer = pEnumLayer.Next();&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }//closes while&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;Thanks&lt;/P&gt;&lt;P style="margin-bottom: .0001pt;"&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Aug 2014 18:59:04 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387480#M10306</guid>
      <dc:creator>ThomasHasselbeck</dc:creator>
      <dc:date>2014-08-14T18:59:04Z</dc:date>
    </item>
    <item>
      <title>Re: How do you Query a Map Service in a Map Document?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387481#M10307</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Thomas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Interacting with a Map service layer is a bit different than if you were connecting to geodatabase objects directly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The primary issue you're running into is that no class implementing IMapServerSublayer also implements IFeatureSelection, which is why your cast fails.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To query the Map service layer:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Cast your desired sub-layer as an &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//00120000050p000000"&gt;IFind&lt;/A&gt; object.&lt;/LI&gt;&lt;LI&gt;Invoke its &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#//00120000050z000000"&gt;Find &lt;/A&gt;method with the desired parameters (see example code further down)&lt;/LI&gt;&lt;LI&gt;Find returns an IArray of &lt;A href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#/IFeatureFindData_Interface/0012000004s5000000/"&gt;IFeatureFindData&lt;/A&gt; objects, which expose a Feature property of type IFeature.&lt;/LI&gt;&lt;LI&gt;Use the IFeature.Shape attribute to zoom to the result! (see example code further down)&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Query an IFind object "serviceLayer"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;string[] fieldName = new [] { "APN" };&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;IArray results = serviceLayer.Find(textBox1.Text, false, fieldName, null);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Zoom to the IFeatureFindData result object.&lt;/P&gt;&lt;P&gt;IFeatureFindData result = results.get_Element(0) as IFeatureFindData;&lt;/P&gt;&lt;P&gt;ArcMap.Document.ActiveView.Extent = result.Feature.Shape.Envelope;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this info gets you moving in the right direction.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Aug 2014 20:50:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387481#M10307</guid>
      <dc:creator>ErinBrimhall</dc:creator>
      <dc:date>2014-08-18T20:50:54Z</dc:date>
    </item>
    <item>
      <title>Re: How do you Query a Map Service in a Map Document?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387482#M10308</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Erin -&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the response.&lt;/P&gt;&lt;P&gt;Since this was just one layer, no editing and the application is in house, I just added the SDE data directly to the MXD and used my original logic.&amp;nbsp; I didn't have time to investigate the paradigm of IMapServerSublayer.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hopefully others will find value from this thread.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Thanks&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Aug 2014 21:00:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387482#M10308</guid>
      <dc:creator>ThomasHasselbeck</dc:creator>
      <dc:date>2014-08-18T21:00:49Z</dc:date>
    </item>
    <item>
      <title>Re: How do you Query a Map Service in a Map Document?</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387483#M10309</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Very good.&amp;nbsp; Well, if you ever find yourself going back to the Map Service approach, this code should help.&amp;nbsp; &lt;IMG src="https://community.esri.com/legacyfs/online/emoticons/happy.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Aug 2014 21:32:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/how-do-you-query-a-map-service-in-a-map-document/m-p/387483#M10309</guid>
      <dc:creator>ErinBrimhall</dc:creator>
      <dc:date>2014-08-18T21:32:08Z</dc:date>
    </item>
  </channel>
</rss>

