<?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 ConstructUnion method some time returning an empty geometry in ArcObjects SDK Questions</title>
    <link>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322297#M8381</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I found ConstructUnion method some time returning an empty geometry even all the geometries added are not empty.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Could you help to find out why? Is it a known issue?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Sample code &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IGeometry pGeomBag = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IGeometryCollection geometryCollection = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;pGeomBag = new GeometryBagClass();&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pGeomBag.SpatialReference = objFeature.ShapeCopy.SpatialReference;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;geometryCollection = (IGeometryCollection)pGeomBag;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//buffer each selected roads and add to geometryCollection&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;geometryCollection.AddGeometry(objBufferResult, ref missing, ref missing);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Do construct union&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IPolygon polygon = new PolygonClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ITopologicalOperator2 objTopo = polygon as ITopologicalOperator2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (objTopo != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; objTopo.ConstructUnion((IEnumGeometry)pGeomBag);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objTopo.IsKnownSimple_2 = false;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objTopo.Simplify();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; IGeometry objExclusion = new PolygonClass();&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;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExclusion = (IGeometry)objTopo;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 07 Jun 2010 18:07:30 GMT</pubDate>
    <dc:creator>ShenglinXu</dc:creator>
    <dc:date>2010-06-07T18:07:30Z</dc:date>
    <item>
      <title>ConstructUnion method some time returning an empty geometry</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322297#M8381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I found ConstructUnion method some time returning an empty geometry even all the geometries added are not empty.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Could you help to find out why? Is it a known issue?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Sample code &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IGeometry pGeomBag = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;IGeometryCollection geometryCollection = null;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;pGeomBag = new GeometryBagClass();&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;pGeomBag.SpatialReference = objFeature.ShapeCopy.SpatialReference;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;geometryCollection = (IGeometryCollection)pGeomBag;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//buffer each selected roads and add to geometryCollection&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;geometryCollection.AddGeometry(objBufferResult, ref missing, ref missing);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;//Do construct union&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;IPolygon polygon = new PolygonClass();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ITopologicalOperator2 objTopo = polygon as ITopologicalOperator2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if (objTopo != null)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; objTopo.ConstructUnion((IEnumGeometry)pGeomBag);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objTopo.IsKnownSimple_2 = false;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objTopo.Simplify();&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; IGeometry objExclusion = new PolygonClass();&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;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objExclusion = (IGeometry)objTopo;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Jun 2010 18:07:30 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322297#M8381</guid>
      <dc:creator>ShenglinXu</dc:creator>
      <dc:date>2010-06-07T18:07:30Z</dc:date>
    </item>
    <item>
      <title>Re: ConstructUnion method some time returning an empty geometry</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322298#M8382</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Good day,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having the same issue with ConstructUnion. In my code, I try 10 times, if one of them works then I'm OK, if not I use the long "union" method instead.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.Vezina&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Aug 2010 14:12:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322298#M8382</guid>
      <dc:creator>PascalVezina</dc:creator>
      <dc:date>2010-08-25T14:12:49Z</dc:date>
    </item>
    <item>
      <title>Re: ConstructUnion method some time returning an empty geometry</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322299#M8383</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;After consulting with ESRI support, it was found that limiting to 100 geometries for the ConstructUnion works.&amp;nbsp; So, process by batch of 100 geometries and you'll be fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;P.Vezina&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Jan 2011 12:55:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322299#M8383</guid>
      <dc:creator>PascalVezina</dc:creator>
      <dc:date>2011-01-13T12:55:19Z</dc:date>
    </item>
    <item>
      <title>Re: ConstructUnion method some time returning an empty geometry</title>
      <link>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322300#M8384</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Same problem: ConstructUnion doesn't work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm developing with ArcGIs Engine SDK 10.1&amp;nbsp; for C++/Qt and I'm on Linux.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;


&amp;nbsp;&amp;nbsp;&amp;nbsp; IGeometryBagPtr cGeometryBag(CLSID_GeometryBag);
&amp;nbsp;&amp;nbsp;&amp;nbsp; IGeometryCollectionPtr cGeometryCollection = cGeometryBag; // QI
&amp;nbsp;&amp;nbsp;&amp;nbsp; IGeometryPtr * cGeomVector = new IGeometryPtr[len];
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; len; i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPointCollectionPtr cPointCollection(CLSID_Polygon);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // I fill the cPointCollection object with my polygones (triangles)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPolygonPtr cPolygon = cPointCollection; // QI
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cGeomVector&lt;I&gt; = cPolygon;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = cGeometryCollection -&amp;gt; AddGeometries((long)len, (IGeometry**)cGeomVector);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FAILED(hr))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Impossible to add geometries" &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; long cGeomCount;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = cGeometryCollection -&amp;gt; get_GeometryCount(&amp;amp;cGeomCount);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FAILED(hr))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Impossible to calculate the number of geometries (1)" &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Number of geometries (1): " &amp;lt;&amp;lt; cGeomCount &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // in this dump I see that the number of geometries (in the GeometryCollection) is OK

&amp;nbsp;&amp;nbsp;&amp;nbsp; IEnumGeometryPtr cEnumGeometry = cGeometryBag; // QI
&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = cEnumGeometry -&amp;gt; get_Count(&amp;amp;cGeomCount);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FAILED(hr))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Impossible to calculate the number of geometries (2)" &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Number of geometries (2): " &amp;lt;&amp;lt; cGeomCount &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // in this dump I see that the number of geometries (in the EnumGeometry) is OK

&amp;nbsp;&amp;nbsp;&amp;nbsp; IPolygonPtr cResultPolygon(CLSID_Polygon);
&amp;nbsp;&amp;nbsp;&amp;nbsp; ITopologicalOperator2Ptr cTopoOp = cResultPolygon;
&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = cTopoOp -&amp;gt; ConstructUnion(cEnumGeometry);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FAILED(hr))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Impossible to do ConstructUnion" &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; IPointCollectionPtr cFinalPointCollection = cResultPolygon; // QI

&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = cFinalPointCollection -&amp;gt; get_PointCount(&amp;amp;cGeomCount);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (FAILED(hr))
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Impossible to calculate the number of points (3)" &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "Number of points (3): " &amp;lt;&amp;lt; cGeomCount &amp;lt;&amp;lt; std::endl;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // In this dump the number (of points of the new geometry) is not OK, is always zero!

&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;/I&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Where do I go wrong?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Are there examples in C++ to refer to?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The result remains the same (negative) if I change the line:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;IPointCollectionPtr cFinalPointCollection = cResultPolygon; // QI&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;with:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;IPointCollectionPtr cFinalPointCollection = cTopoOp; // QI&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any help would be appreciated.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers from Italy.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:18:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcobjects-sdk-questions/constructunion-method-some-time-returning-an-empty/m-p/322300#M8384</guid>
      <dc:creator>AndreaFlesca</dc:creator>
      <dc:date>2021-12-11T15:18:09Z</dc:date>
    </item>
  </channel>
</rss>

