<?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: Find new entries when streaming real-time data in ArcGIS GeoEvent Server Questions</title>
    <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605001#M2643</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV style="font-size: 10.5pt; font-family: sans-serif;"&gt;&lt;P&gt;Hello&amp;nbsp;Hossein –&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;Every event record received by an inbound connector is generally atomic, by which I mean the adapter/transport used to implement the connector has no knowledge of event records previously received or knowledge of event records about to be received. The same goes for the nodes (e.g. the processors and filters) in a GeoEvent Service.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;There are some exceptions, with their own limitations. A filter configured with a spatial operation &lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt;ENTER&lt;/EM&gt;&lt;/SPAN&gt;, for example, needs to know if the geometry of an event with a&amp;nbsp;&lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt;&amp;nbsp;previously observed was outside or disjoint so that it knows the &lt;EM style="text-decoration: underline; "&gt;current&lt;/EM&gt; event&amp;nbsp;record's geometry, which is now inside, should evaluate as having entered the polygon used to model the geofence.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;Likewise, a TrackGap Detector processor needs to maintain a cache of &lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt; values it has previously observed so that it knows when a report from a given asset is expected but has not been received. There are other examples, but I won't go into those here. What you need to take away from this that GeoEvent Server - fundamentally - does not hold onto or cache data it is processing. Doing so runs counter to the objective of ingesting, processing, and disseminating data as quickly as possible at the highest possible volume.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;Since you stipulated you only want to notify when the geometry from a&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;new&lt;/EM&gt;&amp;nbsp;tracked asset, as identified by a unique &lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt;, has&amp;nbsp;entered an area ... I'm assuming that if a tracked asset leaves and later re-enters the area you do not particularly care. The best way best I can think of, then, to notify&lt;/P&gt;&lt;P style="margin: 3pt 3pt 0pt 8pt;"&gt;&lt;STRONG&gt;(a)&lt;/STRONG&gt; that an event record's geometry intersects or is "inside" a geofence and&lt;/P&gt;&lt;P style="margin: 3pt 6pt 0pt 8pt;"&gt;&lt;STRONG&gt;(b)&lt;/STRONG&gt; not&amp;nbsp;&lt;EM&gt;re-notify&lt;/EM&gt; that an event record is still inside the area, or later re-enters the area&lt;/P&gt;&lt;P style="margin: 6pt 8pt 0pt 0pt;"&gt;would be to save any event record you've determined intersects your geofence as a feature record. The feature record's schema will need to have an additional field&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt; whose value is&amp;nbsp;initially set to, say, zero.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Part of the trick to making this work is &lt;A href="https://community.esri.com/community/gis/enterprise-gis/geoevent/blog/2018/10/03/using-a-partial-structure-or-schema-to-update-feature-records?sr=search&amp;amp;searchId=52457f48-aa43-4b7c-b83f-c070908bf928&amp;amp;searchIndex=6"&gt;https://community.esri.com/community/gis/enterprise-gis/geoevent/blog/2018/10/03/using-a-partial-structure-or-schema-to-update-feature-records?sr=search&amp;amp;searchId=52457f48-aa43-4b7c-b83f-c070908bf928&amp;amp;searchIndex=6&lt;/A&gt;‌. If you deliberately omit the&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute from the GeoEvent Definition used to add/update feature records as real-time data is received from a sensor, and configure the&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;feature service&lt;/EM&gt; to apply a default value for&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;when no value is specified, then only&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;new&lt;/EM&gt; feature records will have the&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute assigned to zero. It's important to recognize that this zero value is set as a default by the ArcGIS Server Feature Service, not by GeoEvent Server. Event records you receive from the real-time sensor are primarily driving updates into existing feature records, using the unique &lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt;&amp;nbsp;for values such as date/time reported and location, and not touching the &lt;EM&gt;hasBeenNotified&lt;/EM&gt;&amp;nbsp;attribute value. You are&amp;nbsp;relying on a partial GeoEvent Definition to leave the&amp;nbsp;&lt;EM&gt;hasBeenNofified&lt;/EM&gt; attribute value of existing feature records&amp;nbsp;&lt;SPAN&gt;&lt;SPAN&gt;unmodified.&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;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&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;Then, when your &lt;SPAN style="text-decoration: underline;"&gt;other&lt;/SPAN&gt; input&amp;nbsp;polls the feature service for feature records whose&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute&lt;SPAN&gt;&amp;nbsp;value is zero, it uses a&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;different&lt;/EM&gt; GeoEvent Definition – one that does include the&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute&lt;SPAN&gt;&amp;nbsp;– along with a Field Calculator to specifically update the &lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;of the feature record it just polled with the value '1'. The GeoEvent Service you configure for notification, then, is not only pushing out notifications ... it's recording the fact that a notification has been made into the feature record set from which it collects feature records which require notification.&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;/P&gt;&lt;P style="margin: 18pt 8pt 0pt 0pt;"&gt;Hope this information helps –&lt;BR /&gt;RJ&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 25 Jul 2019 22:41:42 GMT</pubDate>
    <dc:creator>RJSunderman</dc:creator>
    <dc:date>2019-07-25T22:41:42Z</dc:date>
    <item>
      <title>Find new entries when streaming real-time data</title>
      <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605000#M2642</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;I am streaming real-time data using GeoEvent Server and then visualize them on the map using stream service. The response format is JSON and I am using "Poll an External Website for JSON" input connector. I have a GeoFence in the area and I want to send a notification when a new point falls within the&amp;nbsp;GeoFence. Each record has a unique ID. Is there any way that I can bring over only new records (For example by comparing IDs with previous records)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jul 2019 20:31:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605000#M2642</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2019-07-25T20:31:08Z</dc:date>
    </item>
    <item>
      <title>Re: Find new entries when streaming real-time data</title>
      <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605001#M2643</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV style="font-size: 10.5pt; font-family: sans-serif;"&gt;&lt;P&gt;Hello&amp;nbsp;Hossein –&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;Every event record received by an inbound connector is generally atomic, by which I mean the adapter/transport used to implement the connector has no knowledge of event records previously received or knowledge of event records about to be received. The same goes for the nodes (e.g. the processors and filters) in a GeoEvent Service.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;There are some exceptions, with their own limitations. A filter configured with a spatial operation &lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt;ENTER&lt;/EM&gt;&lt;/SPAN&gt;, for example, needs to know if the geometry of an event with a&amp;nbsp;&lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt;&amp;nbsp;previously observed was outside or disjoint so that it knows the &lt;EM style="text-decoration: underline; "&gt;current&lt;/EM&gt; event&amp;nbsp;record's geometry, which is now inside, should evaluate as having entered the polygon used to model the geofence.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;Likewise, a TrackGap Detector processor needs to maintain a cache of &lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt; values it has previously observed so that it knows when a report from a given asset is expected but has not been received. There are other examples, but I won't go into those here. What you need to take away from this that GeoEvent Server - fundamentally - does not hold onto or cache data it is processing. Doing so runs counter to the objective of ingesting, processing, and disseminating data as quickly as possible at the highest possible volume.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;Since you stipulated you only want to notify when the geometry from a&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;new&lt;/EM&gt;&amp;nbsp;tracked asset, as identified by a unique &lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt;, has&amp;nbsp;entered an area ... I'm assuming that if a tracked asset leaves and later re-enters the area you do not particularly care. The best way best I can think of, then, to notify&lt;/P&gt;&lt;P style="margin: 3pt 3pt 0pt 8pt;"&gt;&lt;STRONG&gt;(a)&lt;/STRONG&gt; that an event record's geometry intersects or is "inside" a geofence and&lt;/P&gt;&lt;P style="margin: 3pt 6pt 0pt 8pt;"&gt;&lt;STRONG&gt;(b)&lt;/STRONG&gt; not&amp;nbsp;&lt;EM&gt;re-notify&lt;/EM&gt; that an event record is still inside the area, or later re-enters the area&lt;/P&gt;&lt;P style="margin: 6pt 8pt 0pt 0pt;"&gt;would be to save any event record you've determined intersects your geofence as a feature record. The feature record's schema will need to have an additional field&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt; whose value is&amp;nbsp;initially set to, say, zero.&lt;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;Part of the trick to making this work is &lt;A href="https://community.esri.com/community/gis/enterprise-gis/geoevent/blog/2018/10/03/using-a-partial-structure-or-schema-to-update-feature-records?sr=search&amp;amp;searchId=52457f48-aa43-4b7c-b83f-c070908bf928&amp;amp;searchIndex=6"&gt;https://community.esri.com/community/gis/enterprise-gis/geoevent/blog/2018/10/03/using-a-partial-structure-or-schema-to-update-feature-records?sr=search&amp;amp;searchId=52457f48-aa43-4b7c-b83f-c070908bf928&amp;amp;searchIndex=6&lt;/A&gt;‌. If you deliberately omit the&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute from the GeoEvent Definition used to add/update feature records as real-time data is received from a sensor, and configure the&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;feature service&lt;/EM&gt; to apply a default value for&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;when no value is specified, then only&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;new&lt;/EM&gt; feature records will have the&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute assigned to zero. It's important to recognize that this zero value is set as a default by the ArcGIS Server Feature Service, not by GeoEvent Server. Event records you receive from the real-time sensor are primarily driving updates into existing feature records, using the unique &lt;SPAN style="font-size: 12px;"&gt;TRACK_ID&lt;/SPAN&gt;&amp;nbsp;for values such as date/time reported and location, and not touching the &lt;EM&gt;hasBeenNotified&lt;/EM&gt;&amp;nbsp;attribute value. You are&amp;nbsp;relying on a partial GeoEvent Definition to leave the&amp;nbsp;&lt;EM&gt;hasBeenNofified&lt;/EM&gt; attribute value of existing feature records&amp;nbsp;&lt;SPAN&gt;&lt;SPAN&gt;unmodified.&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;/P&gt;&lt;P style="margin: 8pt 8pt 0pt 0pt;"&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;Then, when your &lt;SPAN style="text-decoration: underline;"&gt;other&lt;/SPAN&gt; input&amp;nbsp;polls the feature service for feature records whose&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute&lt;SPAN&gt;&amp;nbsp;value is zero, it uses a&amp;nbsp;&lt;EM style="text-decoration: underline; "&gt;different&lt;/EM&gt; GeoEvent Definition – one that does include the&amp;nbsp;&lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute&lt;SPAN&gt;&amp;nbsp;– along with a Field Calculator to specifically update the &lt;EM&gt;hasBeenNotified&lt;/EM&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;of the feature record it just polled with the value '1'. The GeoEvent Service you configure for notification, then, is not only pushing out notifications ... it's recording the fact that a notification has been made into the feature record set from which it collects feature records which require notification.&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;/P&gt;&lt;P style="margin: 18pt 8pt 0pt 0pt;"&gt;Hope this information helps –&lt;BR /&gt;RJ&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Jul 2019 22:41:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605001#M2643</guid>
      <dc:creator>RJSunderman</dc:creator>
      <dc:date>2019-07-25T22:41:42Z</dc:date>
    </item>
    <item>
      <title>Re: Find new entries when streaming real-time data</title>
      <link>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605002#M2644</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi RJ,&lt;/P&gt;&lt;P&gt;Thank you very much for your complete explanation &lt;A href="https://community.esri.com/migrated-users/44379"&gt;RJ Sunderman&lt;/A&gt;.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 28 Jul 2019 21:35:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-geoevent-server-questions/find-new-entries-when-streaming-real-time-data/m-p/605002#M2644</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2019-07-28T21:35:45Z</dc:date>
    </item>
  </channel>
</rss>

