<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IFeatureCursor on Marko Apfel</title><link>http://blog.marko-apfel.de/tags/ifeaturecursor/</link><description>Recent content in IFeatureCursor on Marko Apfel</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 12 Sep 2012 15:20:00 +0200</lastBuildDate><atom:link href="http://blog.marko-apfel.de/tags/ifeaturecursor/index.xml" rel="self" type="application/rss+xml"/><item><title>LINQ and ArcObjects</title><link>http://blog.marko-apfel.de/posts/linq-and-arcobjects/</link><pubDate>Wed, 12 Sep 2012 15:20:00 +0200</pubDate><guid>http://blog.marko-apfel.de/posts/linq-and-arcobjects/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;LINQ (language integrated query) is a component of the Microsoft. NET Framework since version 3.5. It allows a SQL-like query to various data sources such as SQL, XML etc.&lt;/p&gt;
&lt;p&gt;Like SQL also LINQ to SQL provides a declarative notation of problem solving – i.e. you don’t need describe in detail how a task could be solved, you describe what to be solved at all. This frees the developer from error-prone iterator constructs.&lt;/p&gt;</description></item><item><title>F# and ArcObjects, Part 2</title><link>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-2/</link><pubDate>Thu, 25 Mar 2010 14:49:00 +0100</pubDate><guid>http://blog.marko-apfel.de/posts/f-sharp-and-arcobjects-part-2/</guid><description>&lt;p&gt;After accessing one feature now i iterate through all features of a feature class:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fs" data-lang="fs"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;System;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#I&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;C:\Program&lt;/span&gt; &lt;span class="nf"&gt;Files\ArcGIS\DotNet&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#r&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;ESRI.ArcGIS.System.dll&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#r&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;ESRI.ArcGIS.DataSourcesGDB.dll&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;#r&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;ESRI.ArcGIS.Geodatabase.dll&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;ESRI.ArcGIS.esriSystem;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;ESRI.ArcGIS.DataSourcesGDB;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;open&lt;/span&gt; &lt;span class="nf"&gt;ESRI.ArcGIS.Geodatabase;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;aoInitialize&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;AoInitializeClass();;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;status&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcEditor);;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;workspacefactory&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;SdeWorkspaceFactoryClass();;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;connection&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;&amp;#34;SERVER=okul;DATABASE=p;VERSION=sde.default;INSTANCE=sde:sqlserver:okul;USER=s;PASSWORD=g&amp;#34;;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;workspace&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;workspacefactory.OpenFromString(connection,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="nf"&gt;);;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureWorkspace&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;(box&lt;/span&gt; &lt;span class="nf"&gt;workspace)&lt;/span&gt; &lt;span class="nf"&gt;:?&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;IFeatureWorkspace;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureClass&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;featureWorkspace.OpenFeatureClass(&amp;#34;Praxair.SFG.BP_L_ROHR&amp;#34;);;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;queryFilter&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;QueryFilterClass();;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureCursor&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;featureClass.Search(queryFilter,&lt;/span&gt; &lt;span class="nf"&gt;true);;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;featureCursorSeq&lt;/span&gt; &lt;span class="nf"&gt;(featureCursor&lt;/span&gt; &lt;span class="kn"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;IFeatureCursor)&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;let&lt;/span&gt; &lt;span class="nf"&gt;actualFeature&lt;/span&gt; &lt;span class="nf"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt; &lt;span class="nf"&gt;(featureCursor.NextFeature())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;seq&lt;/span&gt; &lt;span class="nf"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nf"&gt;(!actualFeature)&lt;/span&gt; &lt;span class="nf"&gt;&amp;lt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;null&lt;/span&gt; &lt;span class="k"&gt;do
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;yield&lt;/span&gt; &lt;span class="nf"&gt;actualFeature&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nf"&gt;actualFeature&lt;/span&gt; &lt;span class="nf"&gt;:=&lt;/span&gt; &lt;span class="nf"&gt;featureCursor.NextFeature()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;};;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;featureCursorSeq&lt;/span&gt; &lt;span class="nf"&gt;featureCursor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;|&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;Seq.iter&lt;/span&gt; &lt;span class="nf"&gt;(fun&lt;/span&gt; &lt;span class="nf"&gt;feature&lt;/span&gt; &lt;span class="nf"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;Console.WriteLine&lt;/span&gt; &lt;span class="nf"&gt;((!feature).OID));;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item></channel></rss>