<?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: IEnumLasPoint - Reading into array in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316180#M8262</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I reviewed again and my problem solved. It seems to me that the LiDAR points can only be read one by one. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So, a for loop was used in my codes to pop up a WKSPointZ array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'd like to discuss more about using IEnumLasPoint, if you are interested, please contact me at &lt;/SPAN&gt;&lt;A href="mailto:decluster@hotmail.com"&gt;decluster@hotmail.com&lt;/A&gt;&lt;SPAN&gt;.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 08 Nov 2013 03:43:57 GMT</pubDate>
    <dc:creator>AlexanderXue</dc:creator>
    <dc:date>2013-11-08T03:43:57Z</dc:date>
    <item>
      <title>IEnumLasPoint - Reading into array</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316178#M8260</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: gmcquat&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I cannot retrieve more than a single point from a Las point enumerator. The Next() method definition says that the enumerator can retrieve several points into an array. However, the accepted parameter type is WKSPointZ, not an array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IEnumLasPoint.Next() method &lt;/SPAN&gt;&lt;STRONG&gt;"populates an array of WKSPointZs&lt;/STRONG&gt;&lt;SPAN&gt;, optional arrays of 0-based file indices and 1-based point IDs." &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[C#]public void Next (&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int arraySize,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ref int pPointCount,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ref WKSPointZ pPoints,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ref ILongArray pIntensity,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ref ILongArray pFileIndices,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ref IDoubleArray pPointIDs);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Where &lt;/SPAN&gt;&lt;STRONG&gt;"pPoints is an array of WKSPointZ. Points are retrieved into it.&lt;/STRONG&gt;&lt;SPAN&gt; It must be pre-allocated. It's size must be at least as large as arraySize."&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Create and initialize an array of WKSPointZ:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;WKSPointZ[] pPoints = new WKSPointZ[10]; // Passing this array of WKSPointZ gives an invalid type error.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pPoints.Initialize();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;WKSPointZ point = new WKSPointZ(); // BUT if I pass in this single WKSPointZ it works!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// The method call using the single point instead of the array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;lasenum.Next(1, out pPointCount, &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;out&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;STRONG&gt;point&lt;/STRONG&gt;&lt;SPAN&gt;, null, null, null); // The first parameter (1) should be (10) if attempting to pass in the pre-allocated array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Also notice that the Next() definition says &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;ref&lt;/SPAN&gt;&lt;SPAN&gt; whereas intellisense tells me that the method wants an &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;out&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would really like to be able to read in more than a point at a time. Any help appreciated.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Jun 2013 13:04:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316178#M8260</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2013-06-05T13:04:07Z</dc:date>
    </item>
    <item>
      <title>Re: IEnumLasPoint - Reading into array</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316179#M8261</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: decluster&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, gmcquat,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I suffered the same problem, and I could not even read in one point. I used a filter to define the AOI within which I'd like to collect lidar point information (especially Z values). I do not know how many points there are in the AOI (but I know it's less than 100 points)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'd like to discuss more about using the IEnumLasPoint interface. If you are interested, please contact me at &lt;/SPAN&gt;&lt;A href="mailto:decluster@hotmail.com"&gt;decluster@hotmail.com&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is part of my codes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pFea As IFeature = pUpdateFeaCur.NextFeature&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pCurPoint As IPoint = pFea.ShapeCopy&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pPntNeighbor As IEnvelope = New Envelope&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPntNeighbor.XMin = pCurPoint.X - 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPntNeighbor.XMax = pCurPoint.X + 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPntNeighbor.YMin = pCurPoint.Y - 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pPntNeighbor.YMax = pCurPoint.Y + 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pLasPntFilter As ILasPointFilter = New LasFilter&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pLasPntFilter.AreaOfInterest = CType(pPntNeighbor, IGeometry) 'QI&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pLasPntCloud As ILasPointCloud = pLasDS 'QI&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim pLasPntEnum As IEnumLasPoint = pLasPntCloud.GetLasPoints(Nothing, pLasPntFilter, 0, 1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim points As New WKSPointZ&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pLasPntEnum.Next(100, 100, points, Nothing, Nothing, Nothing)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Nov 2013 02:45:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316179#M8261</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2013-11-08T02:45:03Z</dc:date>
    </item>
    <item>
      <title>Re: IEnumLasPoint - Reading into array</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316180#M8262</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I reviewed again and my problem solved. It seems to me that the LiDAR points can only be read one by one. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So, a for loop was used in my codes to pop up a WKSPointZ array.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'd like to discuss more about using IEnumLasPoint, if you are interested, please contact me at &lt;/SPAN&gt;&lt;A href="mailto:decluster@hotmail.com"&gt;decluster@hotmail.com&lt;/A&gt;&lt;SPAN&gt;.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 08 Nov 2013 03:43:57 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316180#M8262</guid>
      <dc:creator>AlexanderXue</dc:creator>
      <dc:date>2013-11-08T03:43:57Z</dc:date>
    </item>
    <item>
      <title>Re: IEnumLasPoint - Reading into array</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316181#M8263</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: clayton62&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Java is limited to reading only one point at a time but not C# or C++. For performance you definitely want to read a bunch at a time. Pass the 0 index of the pre-allocated WKSPointZ array to load up a bunch of points:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int arraySize = 5000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;WKSPointZ[] points = new WKSPointZ[arraySize];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;enumPt = lasPC.GetLasPoints(null, lasFilter, 1, 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;enumPt.Next(arraySize, out count, out points[0], null, fileIndices, pointIDs);&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 Nov 2013 15:18:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/ienumlaspoint-reading-into-array/m-p/316181#M8263</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2013-11-26T15:18:25Z</dc:date>
    </item>
  </channel>
</rss>

