<?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: Point class in arcpy... why the limits? in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311701#M24288</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree with you on how the API looks now, but I have heard from various folks that analysis (including geometry) will be a future development.&amp;nbsp; I wish I had more or something concrete to offer, but this is one of those times with Esri where I choose to believe because accepting the opposite will be too defeating.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 26 Sep 2016 17:01:52 GMT</pubDate>
    <dc:creator>JoshuaBixby</dc:creator>
    <dc:date>2016-09-26T17:01:52Z</dc:date>
    <item>
      <title>Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311682#M24269</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;SPAN lang="EN"&gt;Create four points with slightly different properties to test other properties.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pnt0 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;ID&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# a point&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pnt1 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;ID&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# different Z,M and ID&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pnt2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;ID&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# different X,Y,Z,M and ID&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pnt3 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;ID&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;# clone pnt0, changing ID only&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Perform some equality checks to test what is comparable to pnt0.&amp;nbsp; There is some fancy attribute collection and print formatting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; all_pnts &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;pnt0&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;pnt1&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;pnt2&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;pnt3&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; equality &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;getattr&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pnt0&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; getattr&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;p&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; i &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; props&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; p &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; all_pnts&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; i &lt;SPAN class="keyword token"&gt;in&lt;/SPAN&gt; range&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;len&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;equality&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;print&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;'pnt0 vs pnt{}: {}'&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;format&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; equality&lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp; &lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;

pnt0 vs pnt0&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
pnt0 vs pnt1&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
pnt0 vs pnt2&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
pnt0 vs pnt3&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;[&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is good, that pnt0 is identical to itself, and pnt3 only differs by the ID number.&amp;nbsp; All the other comparisons identify what attributes in the properties list (prop) differ.&amp;nbsp; Why not simplify things then and use the built-in methods?&amp;nbsp; Well...because...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pnt0 &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; pnt3
&lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pnt0&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pnt3&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;SPAN lang="EN"&gt;The first equality check ( == ) is comparing objects and all its properties, whilst the second&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;SPAN lang="EN"&gt;check doesn’t consider the ID value.&amp;nbsp; To confirm this consider the following tests.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I would expect this behaviour&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;real_pnt &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; real_pnt2 &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; real_pnt &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; real_pnt
&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; real_pnt &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; real_pnt2
&lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;not this&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; real_pnt&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;real_pnt2&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; a &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; b &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; c &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;X&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Y&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;2&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;Z&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;M&lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; a &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; b&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; a &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; c&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; b &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; c
&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; a&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;b&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; a&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;c&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&amp;nbsp; b&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;c&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Shades of George Orwell...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 12pt;"&gt;&lt;STRONG&gt; "...all Points are equal but some Points are more equal than others..."&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Disappointing if you require comparisons on all point properties.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Well PointGeometry is no better, since it depends upon the points that are used to construct it.&amp;nbsp; Consider the equality check again, using PointGeometry objects instead of Point objects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pg_a &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;PointGeometry&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;a&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pg_b &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;PointGeometry&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;b&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pg_c &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;PointGeometry&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;c&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; 
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pg_a &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; pg_b&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; pg_a &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; pg_c&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; pg_b &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; pg_c
&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; pg_a&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pg_b&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; pg_a&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pg_c&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; pg_b&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;pg_c&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; 
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Any comments as to why the Arcpy Point and PointGeometry class are so feable?&amp;nbsp; Is the implementation in ArcObjects better?&amp;nbsp; Or should I go back to using my own geometry classes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I will be producing a summary on my blog after my musings about the various geometry classes is complete but my impressions are somewhat muted by the seemingly poor implementation or exposure to useful properties and methods.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:54:28 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311682#M24269</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2021-12-11T14:54:28Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311683#M24270</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14253883881571155 jive_text_macro" data-renderedposition="8_8_912_0" jivemacro_uid="_14253883881571155"&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;Aren't you being a little unfair Dan?&lt;/P&gt;&lt;P&gt;The&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="_jivemacro_uid_14253884015439907 jive_macro_code jive_text_macro" data-renderedposition="50_8_912_16" jivemacro_uid="_14253884015439907"&gt;&lt;P&gt;geom1.equals(geom2)&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;is an arcpy geometry method, and the help under arcpy Point clearly states that this is a 2D comparison only.&lt;/P&gt;&lt;P&gt;Whereas "==" is a python equivalence test. They do different things.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Mar 2015 13:14:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311683#M24270</guid>
      <dc:creator>NeilAyres</dc:creator>
      <dc:date>2015-03-03T13:14:39Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311684#M24271</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Nope...I know it clearly states it... it doesn't make it right.&amp;nbsp; Also, working with Z and/or M geometry is far simpler in other packages.&amp;nbsp; Also..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;import&lt;/SPAN&gt; arcpy
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; null_pnt &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; null_pnt
&lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;Point &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0.0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0.0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="comment token"&gt;#, #)&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Really?&amp;nbsp; isn't 0 for X and Y supposed to be valid coordinates?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or this&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; 
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; real_pnt &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; arcpy&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;Point&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; real_pnt
&lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;Point &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0.0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0.0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1.0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1.0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; null_pnt &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; real_pnt
&lt;SPAN class="token boolean"&gt;False&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; null_pnt&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;equals&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;real_pnt&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&lt;SPAN class="token boolean"&gt;True&lt;/SPAN&gt;
&lt;SPAN class="operator token"&gt;&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Not good&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:54:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311684#M24271</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2021-12-11T14:54:31Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311685#M24272</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In terms of null points, I completely agree with you that &lt;SPAN style="font-family: courier new,courier;"&gt;arcpy.Point()&lt;/SPAN&gt; should not return the &lt;SPAN style="font-family: courier new,courier;"&gt;&amp;lt;Point (0.0, 0.0, #, #)&amp;gt;&lt;/SPAN&gt; that it does.&amp;nbsp; I think &lt;A href="https://github.com/Toblerity/Shapely" rel="nofollow noopener noreferrer" target="_blank"&gt;Shapely&lt;/A&gt;/GEOS/JTS handles the situation much better:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt; from shapely.geometry import Point
&amp;gt;&amp;gt;&amp;gt; null_pnt = Point()
&amp;gt;&amp;gt;&amp;gt; print null_pnt
GEOMETRYCOLLECTION EMPTY&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With an empty geometry collection, comparing a null/empty point to a valid regular point with 0, 0 coordinates behaves the way one would suspect:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt; real_pnt = Point(0, 0, 1)
&amp;gt;&amp;gt;&amp;gt; print real_pnt
POINT Z (0 0 1)
&amp;gt;&amp;gt;&amp;gt; null_pnt.equals(real_pnt)
False&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think an empty geometry collection is the way to go; unfortunately, Esri hasn't implemented a geometry collection type with ArcPy.&amp;nbsp; Off the top, four different ideas come to mind how to handle the situation without a geometry collection:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;have &lt;SPAN style="font-family: courier new,courier;"&gt;arcpy.Point()&lt;/SPAN&gt; throw an error saying the coordinates aren't valid&lt;/LI&gt;&lt;LI&gt;implement an empty point concept and return an empty point&lt;/LI&gt;&lt;LI&gt;return a &lt;SPAN style="font-family: courier new,courier;"&gt;None&lt;/SPAN&gt; object&lt;/LI&gt;&lt;LI&gt;return a valid point using the 0, 0 coordinates&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Out of the four options above, I think #4 (the existing condition) is the least desirable from a user/developer perspective.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:54:34 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311685#M24272</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-12-11T14:54:34Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311686#M24273</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How ArcPy is handling methods for testing spatial relations between geometric objects, e.g., equals, is consistent with the &lt;A class="jive-link-external-small" href="http://www.opengeospatial.org/standards/sfa" rel="nofollow noopener noreferrer" target="_blank"&gt;OGC Simple Feature Access - Part 1: Common Architecture &lt;/A&gt; use of Z and M coordinate values:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;6.1.2.5 Use of Z and M coordinate values&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A Point value may include a z coordinate value....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A Point value may include an m coordinate value....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Observer methods returning Point values include z and m coordinate values when they are present.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Spatial operations work in the "map geometry" of the data and will therefore not reflect z or m values in calculations (e.g., Equals, Length) or in generation of new geometry values (e.g., Buffer, ConvexHull, Intersection).&amp;nbsp; This is done by projecting the geometric objects onto the horizontal plane to obtain a "footprint" or "shadow" of the objects for the purposed of map calculations. In other words, it is possible to store and obtain z (and m) coordinate values but they are ignored in all other operations which are based on map geometries.&amp;nbsp; Implementations are free to include true 3D geometric operations, but should be consistent with ISO 19107.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;The operative statement for this discussion is really the last one, i.e., implementations are free to include true 3D [or 4D] geometric operations, but I will circle back to this in a minute.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Other products that implement the OGC Simple Feature Access standards behave the same way as ArcPy in this instance.&amp;nbsp; Looking at &lt;A href="https://github.com/Toblerity/Shapely" rel="nofollow noopener noreferrer" target="_blank"&gt;Shapely&lt;/A&gt;, which is based on &lt;A href="http://trac.osgeo.org/geos/" rel="nofollow noopener noreferrer" target="_blank"&gt;GEOS&lt;/A&gt; and &lt;A href="http://tsusiatsoftware.net/jts/main.html" rel="nofollow noopener noreferrer" target="_blank"&gt;JTS&lt;/A&gt; libraries, and grabbing a few example points from the original code snippets:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt; from shapely.geometry import Point
&amp;gt;&amp;gt;&amp;gt; a = Point(1, 2, 3)
&amp;gt;&amp;gt;&amp;gt; print a
POINT Z (1 2 3)
&amp;gt;&amp;gt;&amp;gt; c = Point(1, 2, 0)
&amp;gt;&amp;gt;&amp;gt; print c
POINT Z (1 2 0)
&amp;gt;&amp;gt;&amp;gt; a == c
False
&amp;gt;&amp;gt;&amp;gt; a.equals(c)
True&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Even looking at how MS SQL Server implements its Geometry data type:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt;Declare @a geometry, @c geometry
&amp;gt;&amp;gt;&amp;gt;SET @a = 'POINT(1 2 3 4)'
&amp;gt;&amp;gt;&amp;gt;PRINT @a.ToString()
POINT (1 2 3 4)
&amp;gt;&amp;gt;&amp;gt;SET @c = 'POINT(1 2 0 0)'
&amp;gt;&amp;gt;&amp;gt;PRINT @c.ToString()
POINT (1 2 0 0)
&amp;gt;&amp;gt;&amp;gt;PRINT @a.STEquals(@c)
1&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think the behavior being seen in ArcPy is typical, some might even argue expected given the Simple Feature specifications/standards.&amp;nbsp; That said, Esri could implement OGC Feature Geometry/ &lt;A href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=26012" rel="nofollow noopener noreferrer" target="_blank"&gt;ISO 19107 Geographic information -- Spatial schema&lt;/A&gt; in ArcPy, but even that would not necessarily address all of the issues here because Esri has created a 5D point model (x, Y, Z, M, ID).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has Esri failed or dropped the ball on this one?&amp;nbsp; It could be argued, but their existing implementation could also be defended on some levels.&amp;nbsp; The Simple Features specification sets the bar pretty low, but Esri also hasn't tried to raise it for themselves.&amp;nbsp; There is nothing in the specifications that prevents them from adding more robust functionality.&amp;nbsp; Think of how Microsoft handled the situation, i.e., they have OGC methods and Extended methods so they can remain compliant but add extra functionality.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:54:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311686#M24273</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-12-11T14:54:36Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311687#M24274</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree that Python object equivalence/equality likely isn't the best approach for comparing spatial objects primarily because I haven't seen any geospatial Python packages where the various geometry classes' &lt;SPAN style="font-family: courier new,courier;"&gt;__eq__()&lt;/SPAN&gt; methods are spatially aware.&amp;nbsp; With ArcPy, they are not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;gt;&amp;gt;&amp;gt; pl1 = arcpy.Polyline(
...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Array(
...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [arcpy.Point(0, 0), arcpy.Point(1, 1)]
...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
... )
... 
&amp;gt;&amp;gt;&amp;gt; pl2 = arcpy.Polyline(
...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Array(
...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [arcpy.Point(0, 0), arcpy.Point(0.5, 0.5), arcpy.Point(1, 1)]
...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
... )
... 
&amp;gt;&amp;gt;&amp;gt; pl1 == pl2
False
&amp;gt;&amp;gt;&amp;gt; pl1.equals(pl2)
True&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For points, Python object equality works in some situations because of how simple points are spatially.&amp;nbsp; Once we move into polylines and polygons, and possibly multipoints, using Python object equality falls short.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:54:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311687#M24274</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2021-12-11T14:54:39Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311688#M24275</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is the problem I am finding, since I now work quite a bit with numpy arrays for a variety of reasons and handling 3D and above coordinates is a breeze the problem getting things out to and back from numpy.&amp;nbsp; As an example, I tried to create a cube which I can do quite readily in a variety of packages that I use.&amp;nbsp; Try to create a polygon that is perfectly vertically aligned...not extruded...but oriented 90 degrees to the axis.&amp;nbsp; No matter what output format I tried, I got nothing and I don't want to use TINs etc.&lt;/P&gt;&lt;P&gt;I even looked at GeoJson etc and Arc kills the m coordinate even though the files are z and m aware, if you have X,Y and Z, I need the M to use homogenous coordinates to do my stuff..&amp;nbsp; Oh well, any more thoughts or workarounds are appreciated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 00:33:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311688#M24275</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2015-03-04T00:33:35Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311689#M24276</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Overall, I think the ArcPy support for Z and M coordinates is poor, quite poor.&amp;nbsp; I wish I had a better response, but I just hit walls/bugs/design limitations around every corner.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I quickly revisited &lt;SPAN style="font-family: courier new,courier;"&gt;arcpy.AsShape&lt;/SPAN&gt; and&lt;SPAN style="font-family: courier new,courier;"&gt; arcpy.FromWKT&lt;/SPAN&gt;.&amp;nbsp; &lt;SPAN style="text-decoration: line-through;"&gt;Although the Help for &lt;A href="http://desktop.arcgis.com/en/desktop/latest/analyze/arcpy-functions/fromwkt.htm"&gt;FromWKT &lt;/A&gt;doesn't state anything one way or another about Z or M coordinates, the function throws an error when you try to use Z or M coordinates&lt;/SPAN&gt;.&amp;nbsp; I have been able to use &lt;SPAN style="font-family: courier new,courier;"&gt;arcpy.ArcSDESQLExecute&lt;/SPAN&gt; to pass Z and M WKT coordinates to SQL Server Express, basically bypass ArcPy and relying on the SQL Server engine to handle creating the shapes correctly.&amp;nbsp; &lt;SPAN style="text-decoration: line-through;"&gt;Even though it has worked for me, and I can view the results in ArcMap, all of the regular and Data Access cursors seem to do nothing with them.&amp;nbsp; It might just be ArcPy cursors can't cope with Z or M coordinates, need to investigate more.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck, let us know if you have any success.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;UPDATE:&lt;/EM&gt;&amp;nbsp; I had to strike through some of my earlier comments.&amp;nbsp; On the WKT comment, it is still the case that the Help doesn't explicitly mention Z or M coordinates; however,&lt;SPAN style="font-family: courier new,courier;"&gt; arcpy.FromWKT&lt;/SPAN&gt; was throwing an error because I wasn't giving it OGC compliant WKT representations.&amp;nbsp; I am used to MS SQL Server's WKT implementation, which is slightly different than the OGC specifications, so what I would pass SQL Server was failing with ArcPy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the ArcPy cursors not working with ZM polygons created through SQL Server and &lt;SPAN style="font-family: courier new,courier;"&gt;arcpy.ArcSDESQLExecute&lt;/SPAN&gt;, I had a goofy projection discrepancy that was causing the problems.&amp;nbsp; Once I went back and straightened out the projections, I was able to use cursors with the newly created polygons.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 20:07:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311689#M24276</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2015-03-04T20:07:42Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311690#M24277</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thanks Joshua... I am currently sub-typing ndarrays and recarrays to make what I do more user friendly when working with geometry objects.&amp;nbsp; I will have to worry about visualizing the outputs in ArcMap in true 3D and when it uses Z values to discern two poly* features that share common boundaries but differ in Z (either for multipart formation without shape dissolve, or for rendering in 3D).&amp;nbsp; There has to be something in arcobjects.&amp;nbsp; I can't believe that all they have is extrusion and base heights as an option.&amp;nbsp; What about City Engine? is anyone using that?&lt;/P&gt;&lt;P&gt;I will post, when I have more.&amp;nbsp; I hope anyone with further info will chime in. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 22:44:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311690#M24277</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2015-03-04T22:44:40Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311691#M24278</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since ArcGIS Pro is an integrated 2D/3D application, it will be interesting to see if Esri extends the existing ArcPy Geometry classes or introduces new ones that support 3D differently.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Mar 2015 17:22:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311691#M24278</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2015-03-05T17:22:58Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311692#M24279</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It seems important to keep in mind that unless arcpy.Point defines a custom __eq__ or __cmp__ operator, then comparisons like pointA ==&amp;nbsp; pointB will only return True if pointA and pointB are references to the same object.&amp;nbsp; Apparently the arcpy developers decided to stick with that behavior and define their own equals() method for geospatial comparisons.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, IMHO your questioning of the whether the semantics of Point.equals() are adequate is a valid question.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Mar 2015 20:00:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311692#M24279</guid>
      <dc:creator>ElleryChan</dc:creator>
      <dc:date>2015-03-05T20:00:50Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311693#M24280</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;from Joshua's post....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;&lt;STRONG&gt;&lt;EM&gt;Since ArcGIS Pro is an &lt;SPAN style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;Since ArcGIS Pro is an integrated 2D/3D application, it will be interesting to see if Esri extends the existing ArcPy Geometry classes or introduces new ones that support 3D differently.&lt;/SPAN&gt; &lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;any news f&lt;/EM&gt;rom the ArcGIS Pro users? or is its incarnation not added to the geometry capabilities much?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 10 May 2015 00:42:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311693#M24280</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2015-05-10T00:42:12Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311694#M24281</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; &lt;EM style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;any news f&lt;/EM&gt;&lt;SPAN style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;"&gt;rom the ArcGIS Pro users? or is its incarnation not added to the geometry capabilities much?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The help for pro looks awfully similar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://pro.arcgis.com/en/pro-app/arcpy/classes/point.htm" title="https://pro.arcgis.com/en/pro-app/arcpy/classes/point.htm"&gt;Point—ArcPy Classes | ArcGIS for Professionals&lt;/A&gt; &lt;/P&gt;&lt;P&gt;&lt;A href="https://pro.arcgis.com/en/pro-app/arcpy/classes/pointgeometry.htm" title="https://pro.arcgis.com/en/pro-app/arcpy/classes/pointgeometry.htm"&gt;PointGeometry—ArcPy Classes | ArcGIS for Professionals&lt;/A&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 10 May 2015 04:08:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311694#M24281</guid>
      <dc:creator>curtvprice</dc:creator>
      <dc:date>2015-05-10T04:08:54Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311695#M24282</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Beyond the ArcPy Mapping module (&lt;A href="https://pro.arcgis.com/en/pro-app/arcpy/mapping/introduction-to-arcpy-mp.htm"&gt;arcpy.mp&lt;/A&gt;), which had to get updated quite a bit because of how different the ArcGIS Pro UI is compared to ArcGIS Desktop, it is disappointing all of the other modules and base classes have been updated and cleaned up so little.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Esri took the release of ArcGIS Pro, a brand new application, to migrate ArcPy to Python 3.x, but I would have liked to see the migration to Python 3.x include cleaning up some of the detritus.&amp;nbsp; For example, why keep the &lt;SPAN style="font-family: courier new,courier;"&gt;iterator.next()&lt;/SPAN&gt; methods around with the cursors in ArcGIS Pro, especially the &lt;SPAN style="font-family: courier new,courier;"&gt;arcpy.da&lt;/SPAN&gt; cursors?&amp;nbsp; &lt;A href="https://www.python.org/dev/peps/pep-3114/"&gt;PEP 3114&lt;/A&gt; was accepted back in 2007 as an acknowledgement that calling for the next item of an iterator in Python 2.x was/is not consistent with how other magic/dunder methods are handled in the language.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Esri did add dunder next methods in ArcGIS Pro because they had to or none of the cursors would work, but they didn't drop the explicit next method.&amp;nbsp; Some might say including the explicit next method allows for a smoother transition from ArcGIS Desktop and Python 2.x to ArcGIS Pro and Python 3.x, but that argument is rather facile.&amp;nbsp; The major overhaul to ArcPy Mapping already broke the smooth transition argument, and keeping an explicit next method with the cursors just promotes poor Python programming, especially for those unfortunate souls who decide to learn Python through ArcPy.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 May 2015 02:39:09 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311695#M24282</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2015-05-11T02:39:09Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311696#M24283</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I thank all for the comments.&amp;nbsp; I have 'Helpful' -ed those that provided some context to the questions.&amp;nbsp; In my estimation here are some conclusions:&lt;/P&gt;&lt;UL style="list-style-type: disc;"&gt;&lt;LI&gt;arcpy may be the holdup and this would include cases such as:&lt;UL style="list-style-type: square;"&gt;&lt;LI&gt;a spatial reference object is required 'precise' geometry to be created within the confines general possibilities (many examples of errors in outputs because a spatial reference not used...workaround...use one).&amp;nbsp; Highest precision geometry should be the default.&amp;nbsp; I erroneously assumed that it would be a fundamental tenant of a GIS platform.&lt;/LI&gt;&lt;LI&gt;equality checks in geometry are 'flawed' at worst or 'incomplete' to be supported.&amp;nbsp; For example, although Z values are included in geometry they are not used in shape geometry checks to see if two geometries differ ... ie (1,1,1 == 1,1,0&amp;nbsp;&amp;nbsp; in terms of X,Y,Z values... I did not bother to go further to check whether X,Y,M exhibited the same behaviour)&lt;/LI&gt;&lt;LI&gt;since equality checks can be called into question ... I presume other Boolean checks, might exhibit similar behaviour... ie. limited to 2D&lt;/LI&gt;&lt;LI&gt;dissolving two adjacent shapes based upon an attribute removes the dividing geometry...this should be an option not the default.&amp;nbsp; What if I wanted to show adjacent equal land classes yet retain the boundary as in the case of disjoint multipart shapes.&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Given the above, effort seems to have been placed on presentation output and dealing with handling of the mapping module in advance to those dealing with analysis .... disappointing to me&lt;/LI&gt;&lt;LI&gt;The enhanced capabilities and integration of 2D and 3D into one 'home' seems moot.&amp;nbsp; I want to be able to form a cube or tesseract given coordinates with respect to a reference plane.&amp;nbsp; We appear to be stuck with extrusion to fill in the sides of a cube between two suspended planes since equality checks &lt;/LI&gt;&lt;LI&gt;digitizing either onscreen or on paper has not evolved, in my estimation....perhaps clouded by students complaining ...'so much easier in CAD...can we use it for the exercise? ....&amp;nbsp; But in the end you will be able to get your frustratingly produced map out in a tiled pdf format using the mapping module&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I applaud efforts being made and that the organization is being drawn in different directions and that the biggest return on investment will dictate what 'barking dog' gets fed first .... but come on ... what is wrong with marketing Arc* for its geometric capabilities and quality.&amp;nbsp; What is also wrong with making it a showcase feature.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Some things on my wish list and for my sabbatical:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;a Selection tool that reports feature geometry properties on-the-fly&lt;/LI&gt;&lt;LI&gt;an Add Data tool that does more than report an undefined coordinate system.&amp;nbsp; It should report that the coordinate systems are mixed and give you the option of physically projecting to one coordinate system&amp;nbsp; ... it would sure get rid of a lot of questions on GeoNet&lt;/LI&gt;&lt;LI&gt;disable any tool that currently enables you to carry out analysis using Geographic Coordinates ... pretty well the whole Spatial Analyst extension in my estimation&lt;/LI&gt;&lt;LI&gt;I will leave the trailing ellipse for others to ponder&lt;/LI&gt;&lt;LI&gt;&lt;STRONG style="font-size: 18pt;"&gt;...&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;​&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 May 2015 06:53:19 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311696#M24283</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2015-05-11T06:53:19Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311697#M24284</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Couldn't agree more.&amp;nbsp; A robust geometry library &lt;SPAN style="text-decoration: underline;"&gt;and&lt;/SPAN&gt; implementation should be seen as the foundation of a Geographic Information System, not as some bin item or nice-to-have.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Esri's lack of and inconsistency with supporting empty geometries is another case in point.&amp;nbsp; I opened five or more bugs in the past two weeks on this topic, and I am not battling Esri to justify cleaning up the inconsistencies and adding better support.&amp;nbsp; The Romans did just fine without a zero, right?&amp;nbsp; Now where is my abacus.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 May 2015 15:14:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311697#M24284</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2015-05-11T15:14:39Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311698#M24285</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Update... as of this date, the geometry class remains the same in ArcMap 10.4.1 and ArcGIS Pro 1.3.1&lt;/P&gt;&lt;P&gt;Maybe some time in the future....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Sep 2016 02:34:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311698#M24285</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2016-09-25T02:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311699#M24286</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I hear you, frustrating but not surprising.&amp;nbsp; I think the only big improvement/update to the ArcPy Geometry classes that users can expect in the next release is indexing and slicing of geometries.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From conversations I have had, I get the impression there is too much history&amp;nbsp;behind ArcPy Geometry classes to see any major "fixes."&amp;nbsp; Since the Geometry classes have worked a certain way for years (even if that way is less than ideal), and Esri doesn't know all of what their customers do with the classes as is, there is a reluctance to change existing behavior.&amp;nbsp; I can't say I agree completely with the logic when it comes to some of the "fixes," but I have resigned myself, sadly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have been told to focus my efforts on the new ArcGIS Python API.&amp;nbsp; Since the API is being written mostly from the ground up, they &lt;SPAN style="text-decoration: underline;"&gt;can&lt;/SPAN&gt; (whether they will or not is a different matter) design different behavior than the ArcPy Geometry classes.&amp;nbsp; I can't say I have had much luck, or feel much confidence yet, but I am focusing on trying to convince Esri to aim high with the geometry model in the new API.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Sep 2016 14:42:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311699#M24286</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2016-09-26T14:42:36Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311700#M24287</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;THe python api unfortunately doesn't address geometry unless the underlying 'classes' have been written. &amp;nbsp;It appears the focus is now on mapping and collecting and not on analysis. &amp;nbsp;I had hopes that when the 3D offerings were enhanced, that would have included the pillars from which they were built&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Sep 2016 16:50:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311700#M24287</guid>
      <dc:creator>DanPatterson_Retired</dc:creator>
      <dc:date>2016-09-26T16:50:25Z</dc:date>
    </item>
    <item>
      <title>Re: Point class in arcpy... why the limits?</title>
      <link>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311701#M24288</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree with you on how the API looks now, but I have heard from various folks that analysis (including geometry) will be a future development.&amp;nbsp; I wish I had more or something concrete to offer, but this is one of those times with Esri where I choose to believe because accepting the opposite will be too defeating.&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Sep 2016 17:01:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/point-class-in-arcpy-why-the-limits/m-p/311701#M24288</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2016-09-26T17:01:52Z</dc:date>
    </item>
  </channel>
</rss>

