Transcript
00:01My name's Adam Mollenkopf. I've got David Kaiser with me as well here. We're from the tracking team at Esri.
00:04..where we have a track ID, which may be the bus number. And then we have an observed time, so, you know…
00:05What we're going to talk about today is working with real-time data, so, in today's world…
00:10…real-time data is becoming more and more prevalent, from everybody having phones out in the field…
00:14…to other things that need to be tracked. So we really think this is a relevant topic and…
00:21…want to walk you through some of the offerings we have at Esri.
00:24So what we're going to do is we're going to introduce what real-time data is, what the options are within Esri…
00:30…to acquire and analyze real-time data, as well as managing, visualizing, and analyzing that data over time.
00:38And then we'll talk about some client applications and the various environments that you can deploy real-time data.
00:44You can push real-time data to those clients, and we'll talk through some of those scenarios while providing demos.
00:46Filter is a very common one.
00:51So once we get this data collected and brought into Tracking Server, well, you can perform real-time analysis on that…
00:53So a brief introduction. Common applications of real-time data, or tracking, would be for these three primary areas here.
00:59…so operations could be performed against this data. So in this case, we really want to create an alert to notify somebody…
01:01So mobile resource management, which would include tracking assets in the field, so be it equipment in a yard…
01:08…or people out in a, a field doing work orders, or, as well as vehicles.
01:14So you know, vehicles is kind of the common application to this.
01:18You may have heard the term AVL or automatic vehicle location. So AVL is a very common application of…
01:24…of tracking. And other areas, you know, in defense and kind of the intel space, being able to track things…
01:31to help us protect our borders and provide intelligence for how to monitor our, the security of our nation…
01:38…as well as from a defense command and control kind of application.
01:43And then other, less obvious applications of tracking are things from sensors.
01:48So this could be anything from a traffic sensor on the road to a, a buoy out in the ocean that's tracking…
01:56…the ocean and the various aspects of, of that…as well as seismic activity. You've seen the…
02:02…you've probably seen the common applications of earthquake tracking and, and things of that nature…
02:06…and being able to, to analyze in real time what's happening with the earth and the health of the earth.
02:11And then finally hydrographic.
02:16So the big picture of real-time data is that there's all these heterogeneous devices out in the field.
02:22So there's boats, aircraft, phones, vehicles, construction equipment, sensor networks, you name it.
02:30Anything that could provide a GPS coordinate is a trackable entity.
02:34So what we're going to walk through today is, how do you work with those data? How do you get this data into…
02:39…your organization, and how do you analyze that data? So there's ArcGIS Server, and there's also Tracking Server…
02:46…as part of the product line at Esri, and these are very complementary technologies to one another.
02:51It's, it's, it's not a one or the other. They're very complementary to each other, and we'll show how that…
02:57…that is, is the case in some of the demos that we show.
03:00Tracking Server primarily is the conduit to collect this data or acquire this data from the field.
03:07So we'll walk through some examples of how we collect that data from various devices.
03:12And then it also provides real-time analysis of that data, so as opposed to logging in to a…
03:19…a geodatabase and then performing GP on it after the fact that the data's received, it provides a conduit…
03:25…to provide real-time analysis as the data's received and the event's observed…
03:30…we can provide analysis on that in real time, and then push that to various clients.
03:35And it works in really any environment, be it desktop, web, or mobile. We'll show illustrations of…
03:41…of each one of those as we walk through here. So, managing real-time data.
03:46The first step to dealing with real-time data is acquiring the real-time data.
03:51So as I mentioned, you know, there's very many different devices out in the field.
03:55Tracking Server provides a capability called a data link, and this, what a data link is primarily responsible for…
04:02…is connecting to that data out in the field, connect it to the device, acquiring information from that device…
04:10…if it's broadcasting information or if it's requested from the device…
04:14…and then converting the format that the device is providing…
04:18…into a common format that Tracking Server can understand to perform that analysis on it.
04:23So for a mobile phone, there may be an application that's sending data, or it may be requested through a cell provider…
04:31…that I want to know where this particular phone number is.
04:34We can gather that data in, and the data link will be responsible for collecting and formatting that data into the right form.
04:43So an example of that is, it needs to come into a format that Tracking Server understands, as I mentioned before…
04:50…and that format is something that conforms to a message definition. So the message definition is basically a very simple…
04:57…definition about the data coming in, and at the bottom, you can kind of see…
05:02…a message, a very simple message definition for a bus…
05:10…usually all of these need to have a time element to it so we know when that position report was reported…
05:16…as well as the shape, so it would have the x,y coordinate and z or n or…
05:20…whatever else was appropriate for that device as well…
05:23…and additional attributes. So in this case, the application that we'll show here is one that…
05:29…where we want to know if a panic button has been pressed inside a bus, so maybe there's some issue on the bus…
05:33…and the driver pushes a panic button. So that data can come into Tracking Server in a variety of different formats.
05:40What comes out of the box with Tracking Server is what's called generic input, and generic input provides text-based data…
05:48…to flow into Tracking Server, so it can be CSV or a common XML form. In the case of what's on the screen…
05:56…we're showing the XML form, so you would get a message, and what we call that message is a data message.
06:02So a data message flows in from a device, and it has an ID that tells you what message definition to use.
06:09So that ID in this case is Bus, and then it has various fields on there…
06:13…so you can see how it conforms to that message definition below.
06:16And in this case, the panic button is false. On the left is what the device on the bus is actually reporting…
06:22…so that could be a binary protocol, it could be various different protocols. And Tracking Server supports TCP, UDP…
06:30…pretty much every protocol that is possible from these devices. And if you can't…
06:34…if you don't want to use the generic input, you can actually write your own data link that can do anything you want.
06:40So if you want to acknowledge with the device that you received the data, that's something that you could customize…
07:06…when a panic button is pressed on a bus so we can take corrective action to, to remedy that situation.
07:13But this could be really anything. It could be an attribute. In that…in this case of, you know, the panic button…
07:17…or it could be a spatial condition. So this, this vehicle or this aircraft has entered a certain space that's a restricted space…
07:25…or it's deviated from the route that it's supposed to stay on. So you could have, you know, enter, exit, polygon kind of actions.
07:33So spatial conditions can be applied, and we'll…David will show some examples of that here in a moment.
07:43The five that are listed over there are the ones that are out of the box.
07:48In this case where we want to filter out all the message except the ones that have panic buttons.
07:53So a very common application of, of tracking is that you've got a very large amount of data…
07:59…and you are only interested in exceptional events, where you want to know…
08:03…that there's a panic-button press so you can take action on that.
08:05So Filter's a very good mechanism to filter out the data that you may not be interested in…
08:10…or to narrow your focus of what you're interested in.
08:14Data modification is an action that basically augments the message with additional information…
08:19…or removes attributes that aren't necessarily interesting going forward.
08:23And then e-mail alert is a standard alert…
08:28…standard action that can e-mail somebody in the case that the panic button is pressed.
08:32So we can e-mail somebody. And then Data Partition. If you have a message coming in and you want to perform multiple…
08:39…steps of analysis on it, and you want to do that in a fashion where you can split it off and split the message…
08:44…and have it go down different paths, that's what the Data Partition is about.
08:48And then Data Summary provides statistical information about the data coming in to the server.
08:56So a couple utilities that are provided by the Tracking product out of the box is what's called a Tracking Simulator.
09:03So oftentimes when you're in the office and you're developing your application for this, you need to simulate the data that's…
09:09…out in the field 'cause you don't necessarily have a device that's giving you the conditions that you want to test against.
09:15So the Tracking Simulator is a utility out of the box that you can play back something you recorded in the field…
09:21…or you can make up a scenario and play that scenario through. And it basically sends those data messages, be they XML…
09:28…or whatever format they are, into Tracking Server. There's also another utility called Data Message Viewer…
09:34…which receives these messages from Tracking Server. So it listens to the end result of what's coming out of Tracking Server.
09:41And Tracking Server provides a number of tracking services that can be subscribed to a client…
09:47…and Tracking Server pushes observations to those clients so that they can receive that data. So in this…
09:54…in the case that we're about to show, a bus is going to send a message; want to run a test to see if the panic button is on.
09:59If it's not, then we're going to filter that message out. If it is, the panic button is on, then we're going to send that message…
10:06…to the Data Message Viewer. And Tracking Manager is the configuration interface for Tracking Server.
10:13So this is where you set up your message definitions. You set up what your generic input is going to be and your data links.
10:19So let's show a quick demo of that.
10:27So here's the Tracking Simulator, and what this is, you can tell what Tracking Server you want to connect to.
10:33In this case, I'm going to browse to a bus file that we recorded out in the field. Now, I'm going to play through that data.
10:39So you can control what the data rate is, which would tell you to send a message every 10 milliseconds…
10:45…and you can provide it on a continuous loop.
10:47So we also have the, the Data Message Viewer, and if I connect to the server…
10:52…then I'll start to receive messages from that.
10:54So we're just going to show a, you know, full-fledged bus tracking application here.
10:59And when we start this, we'll start to see data messages flowing through here.
11:03So you see the message count kind of updating here.
11:06Tracking Server is, is built to be very high volume, high throughput application.
11:12So we have common applications of, you know, multiple, hundreds of message per second that go through this.
11:18…But it's also very applicable to other applications that…
11:21…don't necessarily have that volume. So you can see that we've got, you know, a thousand messages that came through here.
11:27But this was every message. This was, the panic button was false, the panic button was true.
11:31So I want to go define an action that's a real-time analysis step in Tracking Server that'll basically filter that down.
11:37So if I go onto my Tracking Server Manager, this is the generic input where the data is flowing into.
11:43And if I open this up, you can see that it's an XML generic input. It could be CSV or XML.
11:50And we specify what the transport protocol is here. So if you happen to have devices that [inaudible/unintelligible]…
11:56…you just establish that as a new data link. So that's the data link.
12:01And then our message definitions, this is the bus message definition. If I edit this, you can go in here and see.
12:07These are the fields of the messages that are coming in.
12:10So this is kind of the schema of what the data messages are supposed to look like.
12:14And there's various data types that are supported here, and in this case, we're reporting points.
12:19Tracking Server is not limited to just receiving point data. It can also receive polygon data or other types of data.
12:25So, you know, if you have aircraft producing imagery or polygons of what's coming in…
12:31…that's also valid data that could come in, and you can analyze it. So it's not just point data. It can be lines or polygons.
12:38So I want to go define a new action, and if we go to our Actions tab, based on each message definition…
12:44…you'll notice that I don't have any actions defined now. So if I go in here, I can define a new action…
12:49…and you'll see the out-of-the-box actions that are supported here. Like I mentioned before…
12:53…you can extend this. There's an SDK to create your own types of actions if you'd like to.
12:58Then they would show up as a valid option here. In this case, we're going to create a bus panic action that's a filter.
13:05So we're going to filter based on the panic button. So I hit OK on this.
13:09You'll notice that we have our Conditions section here.
13:13So these are the conditions that I want to make sure are met for this particular action.
13:17You didn't choose Filter.
13:19Oh. Thank you. Let me actually create a filter action 'cause I did a data modification action.
13:27So if I choose Filter, then we can come in here, and this is our Conditions list. So if I want a location query…
13:34…I can go select what my sources. This can be a shapefile, it can be a feature in a geodatabase…
13:40…it can come from just about any standard ArcGIS format.
13:44You can select those sets of polygons or whatever you're interested in.
13:48And then you can detect what the trigger is. So you can say, "I want to know when this bus intersects this polygon…
13:54…or when it arrives inside," arriving being there is a point observed outside and a point observed inside…
14:00…as well as departing, or it crosses.
14:02So if you have a line or a small polygon that you want to see if a position was reported on…
14:09…one side and then another position was reported on the other side, we can interpolate that it crossed that polygon.
14:16So in this case, I just want a simple attribute query. So I go into my Query Builder. This should be very…
14:24…this should be very familiar to you if you're familiar with ArcMap. And I can go define a Panic Equal True.
14:31And if I do that, if I apply that, and I come back over here, when I run the simulator, if I clear out this data…
14:37…we should filter out based on just the messages that have Panic Equal True.
14:43So what you'll notice here is we're getting, you know…
14:45…only four or five messages here for the same bus that's reporting a true panic button status.
15:01So we're going to shift into, how do you visualize this data? So now we've received the data from a device…
15:06…we've acquired it and collected it. We've performed some real-time analysis on it. But now we want to visualize this.
15:12David's going to walk you through some of the examples here.
15:18Okay, so Adam talked quite a bit about the data path, or how messages get processed through the server.
15:26So I'm going to actually kind of focus on clients and clients' ability to visualize and display this real-time information…
15:34…into a tracking display. I'm going to do kind of just a remedial overview of the real-time GIS patterns.
15:40This is something that you'll see in just about any tracking, training, or even in like our time and GIS workshop.
15:49So the most common thing that people think of for a real-time GIS pattern is something that just call, like, a dynamic GIS.
15:56And this is most easily thought of as a moving object, and so the majority of us think of an AVL system…
16:04…or any kind of system for tracking flights or ships or anything in motion. And that's really…something that moves.
16:11The other common one that comes up quite a bit is what we call, like, a discrete event, such as a lightning strike or a crime…
16:21…or sometimes your boss schedules a meeting at work without any warning…
16:23…which could be like a lightning strike to him or a crime to you, so…
16:27These kinds of things are just sporadic; they happen. The next thing that you'd think of as a stationary…
16:33…which is still kind of a dynamic event except we know where it's going to be, so it's kind of a combination of the…
16:40…nonmoving, like a discrete event but it's something that is continuing to evolve. So it's a center network pattern.
16:47We're getting continuous data source readings. And then there's the change pattern, where we're really using the value to display…
16:57…a cumulative growth, or analysis, over time as the real-time data is coming into the solution.
17:05So what we're going to focus on today is largely the dynamic pattern, but Tracking Analyst…
17:09…and other visualization clients can be configured or you can actually…
17:14…make use of any of our APIs that can consume Tracking Server services to do the change pattern, the discrete pattern…
17:22…any of these other solutions can be implemented quite easily, but we're going to focus on the dynamic GIS pattern.
17:29So real-time mapping is something that I guess you could say is a hands-off or unattended display…
17:36…where as information is being brought to the context of the application, information is just displayed for you.
17:42So in a technical sense, it means we're not querying the database continuously. We're actually just listening for information…
17:49…to be pushed to us from Tracking Server. In that case, you may have a map display that is receiving a small amount of…
17:55…information at some times and a great amount of information at other times. If it's a sensor network-type map…
18:01…you might see a nominal amount of data, and then as a storm blows through your area, you might receive lots of…
18:07…moving-event information or sensor information. But the advantages in Tracking Analyst are more than just…
18:14…real-time information processing but also specific display that shows how we can get analysis from the visualization…
18:24…of that information. So there's an ability to render tracks where there were only multiple features…
18:31…and this is easily represented in many of the displays that you've seen, either the plenary or any of our screen shots…
18:37…or having seen any of our demos at our booths. You might see multiple individual symbols. Well, with Tracking Analyst…
18:44…you can actually display those as a line without actually viewing the data as a line or processing the data as a line.
18:51And there's a number of advanced options that go with that tracking-style symbology.
18:57The other thing that is real interesting about real-time mapping is what we call actions, and this is the same framework…
19:02…that Adam demonstrated in the server. But it's the ability to individually…
19:07…per data message or per update in that real-time sense…
19:11…make a decision of what to do to visualize that information. So filtering information out is a simplistic example, but…
19:18…you could also change the symbol dynamically based upon how frequently it's being updated or…
19:23…if it has crossed into a specific boundary area. So here are some additional examples of these symbology options.
19:31These are all available out of the box in Tracking Analyst. Some of the ones that we've demonstrated are seen.
19:37The most current symbol is different than any of the other symbols, so you can see if you're looking…
19:41…at a sequence of symbols, the one that's arrived most recently would have a different symbol type, for example.
19:48There is the ability to display multiple textural attributes, so if you see the upper two screen shots…
19:54…that we're labeling five or six attributes for the most current symbol of that hurricane track.
20:01There is a number of other things. I won't go into all the details, but being the predictive vectors…
20:05…and the smoothing of the tracks are some of the more common usage in displaying these tracks.
20:14So I'm going to actually do a demo here and cover some basic Tracking Analyst capabilities.
20:24So in my local workstation here, I'm running Tracking Server and I am subscribing to some AIS information.
20:32So AIS is a nautical information source. It's actually tracking the ship positions. And ships use AIS for…
20:41…collision avoidance, so they can actually see each other through some short-range radio with some identifiers.
20:46But we have the ability along our coastlines to also receive that information…
20:50…so we're able to get kind of an operational picture of these ship positions.
20:56So right now, I am connected to Tracking Server, and as soon as I get to the right display here…
21:08So we're looking at 36,000 ship positions.
21:14If I were to bring this up again in my attribute table, you know, we have 40,000, so…
21:23…we're getting I think it's about 60 a second or something that we're receiving here.
21:28And Tracking Analyst is actually configured with some memory management.
21:31I have it set at about 50,000 rows, so at some point, I will start to release the old information as new information arrives.
21:38So it's going to keep me about a 30- or 45-minute window of data continuously being updated onto the screen.
21:45If I were to, you know, kind of zoom into an area here, I kind of like to look at these canals, like by Lake Ontario, and…
21:55…kind of, you know, see the AIS information is actually fairly accurate when registered against the imagery we have…
22:03…looking at the barges and other ships kind of moving up and down our canals.
22:08But this is a good use case here of looking at…and by the way, I have symbolized on ship type.
22:16So in that attribute table, you might have seen that of the different types of ships, there's 15 to 20.
22:20It's a category. There might be a small, private ship; there might be a large freighter or cargo container ship.
22:27So this is just a typing kind of field for categorization, so that's what I've symbolized on, and there's…
22:33…0 through 99, we've received some of those in our live feed. But I can easily tell, I guess, that maybe this yellow one…
22:39…is one ship and that maybe this green one might be one ship. So something I can actually do is instantly say…
22:48…I only want to display the most current event and not all the events. So I'm going to redraw my display, and then you'll see here…
22:56…is that yellow one is the ship that's kind of left that canal and is already moving out into the next body of water.
23:02But that doesn’t really add as much value as if I can actually find here and enable the track lines.
23:09So this is one of the basic functionality, where we're just taking multiple observations and rendering it as a line feature…
23:15…where we didn't have a line feature inside of our source data. So these are some of the basic ways to visualize that data.
23:25I have another use case here, where I've kind of looked at…if I can find it here…to kind of demonstrate…
23:34…the action processing methods that we have. This is in the central coast of California.
23:39This is, you know, Oxnard and Point Hueneme…
23:42…which is kind of north of Los Angeles, if you recognize Santa Barbara and further north.
23:47And this here is actually an interesting…something that we recognize with, like, the tsunami in Japan…
23:55…where there's a nuclear reactor right on the coast. So this is Diablo Canyon nuclear reactor.
24:00What I've done is actually taken from a NOAA nautical chart that there was actually a…
24:08…I didn't actually preload this one, so it's going to go out to the Internet to fetch it in here.
24:12But there's actually a buffer that was drawn for me here, which was the nuclear plant security zone.
24:22And so that is recognized by the Coast Guard and everything as an area that we don't really want to see any ship traffic.
24:28So I've just kind of taken this buffer and created this outline. And so I actually…
24:36…because we don't see any real ships going through there today, just for the purpose of running a demo…
24:41…I've been running a simulator here to kind of show that there is a particular ship kind of passing through this area.
24:49So one of the things I'm going to set up first is to, let's go look at this action configuration for the Tracking Analyst action.
24:55So I've got this highlight where I'm going to overlay an additional symbol on top of the additional symbology settings…
25:03…which are still looking at the ship type category. Still going to draw the track line, it's still going to…
25:07…if you have any scaling or aging or any other tracking properties enabled, we're going to use those.
25:13But we're also going to do a location query. It's the same triggers that we had in Tracking Server.
25:18We're still looking at whether it intersects or doesn't intersect, but I'm going to just set it to Intersect.
25:23If it intersects with that outline around that Diablo Canyon nuclear center power plant.
25:28So let's go ahead and save that…and…So I've got my simulator running…got this guy coming up through here…
25:40…I think we should speed it up a little bit. Just for the demo purposes, we'll speed it up.
25:50And all you're really going to see is when that particular ship crosses into the boundary area…
25:56…the symbology action will kick in…
25:59…and will actually put on that highlight symbol on top of that ship, so you can visually see.
26:06And you may even have cases where the symbol is extremely small, and all you do is make it larger.
26:14The action makes it larger based upon a particular condition being met or not met. Yeah?
26:21[Inaudible audience question]
26:39Alright, so I'm going to repeat the question. The question is, if you have multiple areas of interest that you've set up…
26:46…either as a buffer or…it says it's reached the end of my simulation file. I don't know where the rest of my data has gone!
26:52Let's go ahead and try…
26:54It went into stealth mode.
26:55It did go into stealth mode. We'll try this again.
27:00So the question was, if you have multiple areas of interest or buffers that you had established…
27:06…could you autocenter the map so to essentially refocus the map display to the thing that's causing, you know…
27:12…the action of your process. We actually don't have that particular functionality.
27:16We do have a new functionality in 10.1 to follow a tracked object to kind of…
27:22…repan and focus and zoom the map so you kind of, as you have a track that's selected…
27:28…you can stay selected on it and follow it as it may progress around.
27:31But moving to the area of interest is not something that we currently have, so…
27:37Well, I'm going to move forward and go back to the next section here.
27:43My data seems to be disappearing from my simulation file, so I will find the next section here. Where's the slideshow?
27:55So we're going to move on and talk about the analysis of real-time data, and as you might expect…
27:59…this is heavily focused on that action framework that we've seen both in Tracking Server and Tracking Analyst.
28:08So the actions are, as you've seen, I guess, preconfigured, small, little bits of analysis, and they're designed for…
28:16…something that would run in real time. Not a batch mode or a geoprocessing tool, but something that would be running…
28:22…across that stream of data. The example that I just tried to show was really seeing that the symbology can be triggered…
28:31…based on that action changing, but there's a couple of other patterns. I know Adam already kind of covered these, but…
28:37…from the server context, the Tracking Server action's running in server actually play a pretty important role because…
28:44…you don't need a client to be connected. You don't need to be visualizing, so there's nobody logged in at a workstation.
28:50There's no running ArcMap, there's no web browser or any device that really needs to be part of that other than the server…
28:56…running in the back end that's processing the information. So, some of the common things that we've seen are…
29:04…a custom action being developed to call an external application. So if we're integrating with third-party systems…
29:10…where we need to just call another process and hand that particular piece of information.
29:15And we don't know what the third-party process does. It might actually do an alert or run it through another software process…
29:22…to do something pretty specific. What I'm actually going to demonstrate today is doing the broadcast e-mail alert.
29:31So I'm going to show, again, with Tracking Server Manager, again, we're looking at the Actions tab here, and for the…
29:43…Ship's Tracking is the name of the service I have. I'm going to look at this alert.
29:48I've set myself up as an e-mail recipient. I've made an e-mail template, and this looks quite a bit like a mail merge.
29:55So I've got these little square bracket, kind of…I'm going to read from that particular message.
30:01If I'm getting 500 messages a second but this one is the one that triggers it, it will fill out the e-mail message…
30:07…with these attributes from that message.
30:09So it's going to send me an e-mail talking about the name of the vessel and its position…
30:12…and what it's heading and speed, and again, instead of the…I've used the exact same shapefile…
30:18…which was the buffer around that nuclear power plant. But other than using an intersect…
30:24…because I would receive 30 or 40 with, as that ship crosses through that buffer.
30:29I'm just going to do Arriving. It's going to send me only the first e-mail until it has left the boundary and comes back in.
30:36I would get the second one. So it's…that's the difference between Arriving and Intersect. So what I also have running here is…
30:48…This is the data viewer application showing my ship tracking feed that I'm subscribed to.
30:56Since we've started this presentation, exactly 30 minutes ago, I have processed through my Tracking Server here…
31:04…97,000 ship observations and been updating that screen display with them. So what I'm going to do is go ahead and…
31:17…I've just started that simulator of that ship crossing through that boundary area…and I guess I should maybe at least…
31:30…try and show some of my ship tracking information here.
31:33This is just the display as the, from a develop or utility standpoint…
31:37…what the data looks like as it's coming through the tracking message bus.
31:44But I've just received something pretty important in my e-mail just now, and it says, at nine-oh-one, 56 seconds…
31:53…this vessel, which I named Bogie, and it's got its unique ID number from the AIS source…
31:58…and it gave me the location and its speed and heading, and you can tell that this is a simulated data source…
32:04…'cause the ship was in motion, but I had speed at zero. But this is an example of, within roughly a second or two…
32:11…when that simulated data went through, it generated an e-mail and pushed it out, sent it to my mail server…
32:16…and it already brought it into my mail client. So that's basically what the e-mail alert function does.
32:26So this is just kind of a simple example, shows the capabilities of having the server do the processing, and Adam showed you…
32:36…each one of these, kind of explained them in detail, but if you have more questions on these…
32:41…you can stop by after our workshop today or stop by the Tracking Analyst booth, and we can cover the action framework…
32:46…and talk about customizations here. The one that we haven't demonstrated yet is just really…
32:52…the highlighting of the symbol in the client. So I'm just going to bounce back there and see…
32:59Well, see, now it went through. Apparently I had to restart the simulator for the second time. So that's just an example of…
33:08…when it intersects that boundary, there's an additional symbol being drawn on top of that yellow, round circle…
33:15…just showing that, hey, you need to look at this. And now that it's outside the boundary, we're not drawing that.
33:19So it's a simplistic example. There's actually future work being done in the action framework to be able to combine…
33:26…multiple polygon boundaries into one action so that you could actually look at, say, hundreds or thousands of zones…
33:34…and kind of tag a feature as to which boundary it intersected and be able to do some specific things there.
33:40So I'm going to hand the screen back to Adam and he's going to continue on.
33:46[Unintelligible audience question]
33:47Yes?
33:48[Unintelligible audience question]
33:50Could have what?
33:51We don't really have a capability to do a sound alert. We did for a while when, through the ArcGIS 8.3 and 9.3 series…
34:00…there was the VBA macro language, and so there was an action in Tracking Analyst to call a Visual Basic function…
34:08…which you loaded as a macro. And you could then do a pop-up or whatever you wanted to from Visual Basic…
34:14…'cause you were writing the code. So as of 10, we've removed the Visual Basic support…
34:19…as the platform is moving toward Python scripting as kind of the predominant macro language.
34:26I guess we could come up with a solution to play a sound alert, but I'm afraid it would involve kind of developing an add-in…
34:31…or something that gets registered with your ArcGIS Desktop. There's not a built-in, simplistic, you know…
34:38…"load this sound file and click here" kind of answer for that, but…so, yeah, we could certainly talk to you about that…
34:46…if you wanted to have some requirements that you could transfer to us about how to play a sound when an alert happens.
34:53[Unintelligible audience question]
34:55Uh-huh, yeah. I have fallen asleep in front of a screen before. I understand, so…Okay. Adam?
35:02Alright, thanks, David. So I'm going to show you some client applications with real-time data, so…
35:08What we've shown you thus far is kind of the Tracking Server side of things as well as the Tracking Analyst…
35:13…which is the standard extension for ArcMap to render this data as client to Tracking Server.
35:21So I'm going to show you some other client applications, which are going to include desktop, web, and mobile.
35:27So from a desktop perspective, we obviously just showed you the Tracking Analyst extension.
35:31That's the out-of-the-box product, if you wanted to buy a product to solve your solution.
35:36But oftentimes, organizations need to have custom applications. You need more control, or you don't necessarily want to expose…
35:44…the full power of ArcMap to your user base. So if you want to create a more focused application…
35:50…there's a number of options to do that at a desktop level. You know, you can use ArcObjects as one option.
35:56There's an SDK for Tracking Analyst that you can extend and basically create your own desktop-focused application…
36:04…but that would again run in ArcMap. So what we provide here is a Tracking client API.
36:11And this API works for desktop, web, and mobile, and we'll walk through each of those here. The…
36:17We support pretty much every language that you'd want to use in those environments.
36:21So right now, what's out of the box at 10 is .NET and Java.
36:26Very shortly, within the next month or six weeks, we will be releasing on our Resource Center…
36:32…Qt C++, so if you are a C++ developer and want to write a desktop app in that environment…
36:38…that'll be available to you shortly. But basically, this real-time data that's being pushed out of Tracking Server…
36:45…as we demonstrated in Tracking Analyst, can be consumed by these other languages or custom applications.
36:51And in this case, it would be an Engine application at 10, or if you're at 10.1, it might be an ArcGIS Runtime application…
36:59…and we provide the interfaces through those languages to do that. The common API for this is that the application would…
37:06…connect and authenticate with the server, and what you get back is a list of services, be it a, you know…
37:14…a ship tracking service or a bus service, whatever it is. And then your client can subscribe to that and receive alerts…
37:21…and receive the real-time data through a push mechanism. So there's an open socket to the client for that.
37:27Now on the Tracking Server side, one thing we didn't show is, we do have the ability to feature log this data.
37:32So what we've been showing so far is kind of a real-time stream of data that's being analyzed…
37:37…and pushed directly to the client, so there's very low latency in receiving this data at a client level.
37:43But it's also an option that the organizations oftentimes want to have this data recorded historically…
37:48…so they can do historical analysis. So we have an archive option, which is what we call a feature logger action.
37:54And basically, what that does is it logs to any standard geodatabase, so any SDE-enabled database can be logged…
38:00…the observations as they come through will be logged. That doesn't affect the performance of what's being pushed…
38:07…up to the client as well, so it's kind of offline from that execution path. And the historical data can be viewed…
38:15…directly through the desktop applications or indirectly through ArcGIS Server…
38:19…as standard feature services on ArcGIS Server. From a web perspective, we support Flex, Silverlight…
38:29…and coming very soon will be JavaScript as well. So if you have an application that's a Flex application…
38:36…or you make use of the various viewers that we have for Flex or Silverlight, we actually have a widget…
38:43…that I'll demonstrate here in just a moment, that's a tracking widget that allows you to connect with the server…
38:49…receive data, do a lot of the rendering that David just kind of walked through, but at a Flex application level.
38:55So, Flex, you know, JavaScript is useful also in a mobile environment, and we'll get into that more in a moment.
39:00It comes in two flavors. You can get a full viewer that's built just for a Tracking application.
39:01But these can be combined with ArcGIS web APIs.
39:06So you start off your application with the ArcGIS web application.
39:10And then if you want to add real-time data, you can use the Tracking client API to receive that data on.
39:15And in this case, the historical data would flow through ArcGIS Server. There's not a direct connection to…
39:20…the web application to the database. Those are exposed through standard feature services at the ArcGIS Server level.
39:29So let me give you a quick demo. What I'm about to show you is our Tracking Viewer for Flex.
39:39Or you can take just the widget that I'll show you and incorporate that widget into your own ArcGIS viewer application.
39:52So this is our Tracking viewer. This is available on our Resources site for free. The source code's available as well.
39:58So if you want to take this application and build your own application from it, you're welcome to do that.
40:04The license rights allow that. So what I'm going to do is, it asks you for a user name password…
40:08…and this is to restrict and authenticate with the user what services are eligible to see.
40:15So this is the Tracking widget. You'll notice that I'm now connected, and I get a list of services that are available to me.
40:22So I've got, you know, everything from, you know, incidents on the California Highway Patrol to satellite data here.
40:28So let's look at some of this data. If I subscribe to the satellite feed, what you'll see is, if I zoom to this extent here…
40:34…we're starting to stream in data about satellites flying over the world…
40:38…so this is a real-time feed of satellite data that's coming in.
40:42If I hover some of these, I can get kind of the information about these various satellites.
40:48And like I said before, you can control the symbology of this, so you can control this to, you know…
40:54…maybe we want this to show gray instead of red, or if you want to put a picture in…
40:58…you can basically define a picture for that.
41:00So this widget allows you to do a lot of the same things that were shown in Desktop.
41:04Now, let me go look at some other data.
41:06So maybe I'm not necessarily interested in satellites, but I want to look at some flight data. So if I subscribe to flight data…
41:14…what you'll see is I'm starting to flow in data. The green and the red are flights that are active over the US right now.
41:21If I zoom in to this, you can kind of see information about these, so here's a Southwest flight, you know…
41:26…coming from LAX. And I can actually click on this track here, and what it's going to do is…
41:34…it's actually going to start monitoring this track. So it'll actually refocus and rezoom the extent of what's happening.
41:41So if I actually click into Monitor and I go into the monitoring, I can tell it to follow. And now it's actually going to follow this aircraft.
41:47And maybe I want to see this particular information about this so I can get, kind of, the flight number…
41:52…you know, where it's going, where it's coming from, what the speed is, and various aspects of that.
41:56And you can start to graph information about, you know, maybe I want to track what the altitude of this aircraft is…
42:02…and it'll start to track that information. You'll notice that we just got a new message, so it kind of resets the context…
42:09…of what the altitude is. So it'll track that over time, and again, you can have actions define that if it's, you know…
42:15…below a certain foot threshold, over a certain area, you want to get an alert about that.
42:21But I can also go into the tracks of this. So this is a full view of all the tracks that are streaming in on the service.
42:27And we provide a, you know, kind of, as you click, it filters a view of this. So if I wanted to see what's going, you know…
42:33…into Boston, I can type this, and it kind of filter it down. So it's a quick search into a particular feature.
42:39And then I can refocus my analysis onto the Boston flight.
42:45So we don't just track satellites and aircraft. We track many other things as well.
42:50So maybe I want to look at the same ship data that David was looking at just a moment ago, and if I go into this ship data…
42:59…let me stop monitoring this aircraft here.
43:04I can see that ship data starting to flow in here, but now I need to change the symbology…
43:09…so I can actually tell what's a ship versus aircraft. And I can see in blue, this is ship data.
43:15And maybe I want to zoom in to Seattle and see that ship data…
43:20…and I can identify, you know, what's going on with the ship data.
43:24So, you know, here's some vessels that are around the Seattle area. And, you know…
43:28…maybe I want to get more focused and look at, you know, what the buses are that are traveling in this area, as well.
43:35So we've got bus data. So we can start to stream in the bus data. So here's real-time buses traveling…
43:41…throughout the Seattle metro area. So it can really be applied to any type of vehicle, be it a satellite…
43:47…being a vehicle or aircraft, bus, ship…or it could be down to the granularity of a person.
43:53So if you're tracking on the phone or some various other device, so…that's a good segue into the mobile piece of this.
44:04So the same applications that we showed from a client API to service the web application…
44:11…we showed the Flex example, but Silverlight is just equivalent, as well…we can use to apply to the mobile environment.
44:17So, you know, in the mobile environment, you know, current landscape is, there's, you know…
44:21…iOS devices, Windows, and Android devices. So I'm going to show you a demo of an Android device in just a moment…
44:27…that'll transpond its location to Tracking Server, and we can start to perform analysis on where that person is traveling…
44:33…or where that phone is traveling…
44:36…but the various APIs that were provided from a Tracking client API are eligible for mobile applications as well.
44:42So we have a Java client API that is what we use to service the Android application.
44:48And at the Silverlight side or…I'm sorry…At the Windows or the iOS side…
44:52…we could use JavaScript as just kind of the standard mechanism to get information to that device.
44:59And we can render the same kind of information that I was showing you on the Flex viewer side on a mobile device.
45:06So let's shift over to the sample demo here…I won't share my password with you.
45:19And so, here you'll see that we've got a couple of applications deployed on here. So this is an Android transponder.
45:26Basically, these are samples that are freely available. The source code is available on our Resources site, and…
45:34…let me try to focus this a little better. Okay, well, you can't really…it's kind of washed out on there…
45:41…but it's connecting to a Tracking Server. And if I hit Connect, then basically, it's going to…
45:46…you can see the satellite icon at the top there. It's going to try to acquire a GPS location of where this device is.
45:52Now, I'm not sure we'll get a signal indoors or not, but it'll put that signal on there, and I can basically…
45:57…send the message to Tracking Server, and as I send that, it sends the location of where I'm at.
46:02So this is just a visual depiction of, you know, kind of what would normally happen just in the background.
46:07The user might not necessarily ever see this interface. It's just something you deploy as part of your mobile application…
46:12…to send data to the server. And as I mentioned before…
46:17…we provide a sample for a tracking viewer on the Android device as well. So if I give it just a moment to connect…
46:24…to the Tracking Server, what you'll notice here as I kind of zoom out to the nationwide level here.
46:32So this is making use of the ArcGIS standard APIs or mobile SDKs that we have for that.
46:38And if I select a service, you'll notice that I've pre-authenticated with the server…
46:43…'cause I don't necessarily want to type in my user name password on this.
46:46But I get the same information and tracking services that I had available to me through the Flex application on here as well.
46:55So if I subscribe to, maybe, the D.C. flights again, I can start to see data flowing in to this device.
47:03So this device is mobile, it's using a cell network, and it's receiving real-time data on the device.
47:09So this may be useful if you've got a field work force and maybe you want to provide…
47:12…visibility of where the other field-workers are to a field-worker. So I can get, kind of…
47:17…what's my proximity to the nearest other field-worker? But there's many applications of this.
47:22But the point here is, tracking is not just a desktop or web experience; it's also a mobile experience.
47:36So, we have one slide on what's new at 10.1. If you want more information about kind of the road ahead for tracking…
47:42…please come down to our booth. We've got a map…we're in the Mapping and Visualization area downstairs…
47:48…in the Exhibit Hall. But we'd be happy to walk you through some of the features that we have, quickly describe…
47:55…what features are upcoming at 10.1. For Tracking Analyst, we provide a new tool called Track Manager…
48:03…which basically allows you to view a track as a unique feature. So as opposed to seeing, you know…
48:10…here's the last hundred, here's a hundred features and they're all the same track…
48:15…we don't necessarily…the users don't want to deal with that at a track, at a feature level.
48:20They want to deal with it at a track level. So I want to know, bus 1 in Seattle…
48:24…where has it been? So you can really drill down at a bus 1 level and view all of the tracks that are relative to bus 1.
48:31So it's a user experience that allows you to view things at a track level as opposed to a feature level.
48:35And then another thing that we provide is proactively monitoring the tracking services that are exposed from…
48:41…tracking service, from Tracking Server. So that kind of gives you a stoplight view of, you know…
48:46…green, yellow, red, of…are we getting data from this tracking service? 'Cause sometimes…
48:50…stuff in the field doesn't move, and the users want to have confidence that the service is still up and running…
48:56…and we're getting valid data. But it just may be the fact that nothing's moving in the field.
49:00And then generating track statistics for analysis. We provide a couple new GP tools at 10.1…
49:07…Track Intervals to Line and Track Intervals to Feature. So David kind of showed you an example of…
49:14…where we took the point data that was observed from a particular feature, and we create the lines from that.
49:19But we don't just create the line features; we also create statistics about that, as well.
49:24So we can calculate what the heading is, what the speed is, what the direction is.
49:29All those different things about the track that you're observing can be done through GP tools.
49:34Again, if you want to see demos of these, go to our booth, and we can walk you over to a road ahead machine and show you.
49:41And then at Tracking Server, we provide this Tracking widget for the Flex viewer. I showed you a demonstration of that.
49:47Again, this is something that's freely available on our Resources Center. And we also provide the ability to…
49:54…apply spatial filters on the client, so there's a massive amount of data typically flowing for these applications.
50:00If you want to focus…if you're a user and you want to focus your analysis just to Seattle…
50:06…and you only want to see ships that are entering in the Port of Seattle, you can draw an area of interest…
50:10…that you want to subscribe to, and you'll only get data that's subscribed for that area of interest.
50:16And that's a per-client thing, so that's not something that's running on the server.
50:20Each client can have their own area of interest. And then industry standard support.
50:25So, we've heard numerous times that we want to be able to consume tracking services…
50:31…and other viewers that can consume KML and other formats…
50:34…such as GeoJSON. So things like Google Earth or ArcGIS Explorer can now consume tracking services…
50:42…from Tracking Server. And if you go to our Resources site, you'll actually see some sample code…
50:47…of how you would consume this in ArcGIS Explorer. And then finally…
50:51…we're creating this concept of application templates for tracking, and this is basically a starter kit…
50:57…for somebody that wants to build a focused application, maybe for a particular domain such as AVL…
51:03…automatic vehicle location. So I want to use Tracking Server as an AVL product.
51:08These are kind of starter kits that would give you the components necessary to do that, so…
51:13…there'd be preconfigured actions that do things like geofences that are assignable to resources…
51:19…as well as predefined data links that…of devices that we support from an AVL market.
51:25So instead of having to write your own data link, you could connect to a device given our catalog support set.
51:33So, in summary, tracking solutions enable ArcGIS with real-time data and analysis. So if you want real-time analysis…
51:42…Tracking Server is a very good solution for that. If you want to real-time analysis at a client level…
51:46…Tracking Analyst is a very good tool for that. It provides capabilities for managing, visualizing, and analyzing…
51:53…real-time data. It can be applied in a variety of environments, be it desktop, web, or mobile.
51:59And then its unified functionality across a variety of developer platforms.
52:03So whatever language your development staff is using…
52:06…is supported here. We've rounded out what our support is with some new offerings with qT as well as JavaScript.
52:14So we think we have a pretty full feature list there. Yes?
52:20[Unintelligible audience question]
52:25Yep, same API. It's a unified set of…
52:29[Unintelligible audience question]
52:32No, they're all consistent. They all have the same APIs, you know. Some language differences, but…yeah.
52:39Same capabilities. So some resources to get started.
52:42I'll quickly show you our Resources Center and how to get to our information.
52:47If we…if you go to the resources.arcgis.com, there's a Tracking Server link here.
52:52This Tracking Server link will take you to everything that we've been mentioning in this session.
52:57So on our gallery are the samples that I showed here. So our Flex viewer and the widget for Flex is available here.
53:05So you can download that here. The source code's available. It's ready for you to use.
53:11You can use it in your own application and extend it to your needs. The Android transponder…
53:16…and the tracking viewer for Android is available on our sample site as well.
53:19And if you're interested in ArcGIS Explorer and how to put a plug-in and to support Tracking Server services…
53:26…that's available as well. Other resources to get started would be just kind of our Resources site.
53:33And, as every other session, please submit a session survey so we can improve and take your feedback on that.
53:41So with that, we'll open it up to questions, and we thank you for your time.
Esri Tracking Solutions: Working with Real-Time Data
David Kaiser and Adam Mollenkopf explore various techniques to manage, visualize, and analyze live data feeds within ArcGIS.
- Recorded: Jul 14th, 2011
- Runtime: 53:45
- Views: 58390
- Published: Sep 16th, 2011
- Night Mode (Off)Automatically dim the web site while the video is playing. A few seconds after you start watching the video and stop moving your mouse, your screen will dim. You can auto save this option if you login.
- HTML5 Video (Off) Play videos using HTML5 Video instead of flash. A modern web browser is required to view videos using HTML5.
Right-click on these links to download and save this video.
- 480x270:WebM (78.3 MB)MP4 (53.9 MB)
- 960x540:WebM (167.5 MB)MP4 (77.3 MB)
If you don't have an Esri Global Login ID, please register here.