00:01Alright, welcome to Best Practices for Designing Effective Map Services. We're glad you chose to come here.

00:06This…learn about this subject this morning.

00:08My name is Sterling Quinn. I'm a product engineer on the ArcGIS Server development team.

00:13I work out of the Olympia, Washington, office.

00:16With me is Tanu Hoque. He's on the…he's product engineer on the map team in Redlands.

00:22So we'll talk today about designing and planning effective web map services.

00:27We'll talk about the transition from going from a desktop map into a web map…

00:32…and some of the things you have to think about in order to get the best performance and visual quality of your maps on the web.

00:40So we'll talk about three ways to serve maps.

00:41We're going to go into great detail about why you would choose these three techniques in one.

00:46Cache tiles, a dynamically drawn map service, and then client-side graphics that are actually drawn by the web browser itself.

00:53We'll talk about how to author a nice-looking web map, and then we'll give some performance tips at the end…

00:58…and we should have time for questions and answers at the end of the session.

01:01So if you see something that causes a question, please jot it down. Be happy to talk to you about it at the end.

01:10When planning this session, we thought, you know, how much web maps have changed over the years.

01:15It seems like this convention center is always the same, same old chairs and everything…

01:18…but the technology really, really changes.

01:20This is something I pulled out of the help for ArcIMS from years ago.

01:23I don't know if that's Internet Explorer 4 or 5 that really…

01:29…things have really changed, and, we think, for the better.

01:34It's often…we've seen that a lot of people have moved into the server world from just working in pure desktop GIS.

01:41And one of the main things to consider as you do that is how you're going to expose your GIS maps as web services.

01:47Often, it's not as simple as just going from a desktop map and clicking a button and putting that straight onto the web.

01:55What we've found is most effective is that you break up your layers from your map into separate maps…

02:02…one containing your basemap, and other maps containing your operational layers or your business data.

02:08So the basemap gives a geographic context to your web map.

02:13It's not really the reason that people are going to the map, usually.

02:16We don't often go to a web map just to see the basemap, unless you're going to maybe a new place like San Diego…

02:22…and you just want to explore the layout.

02:24But typically, it's going to be in the background, and it'll be reused in multiple applications.

02:28Think about that Google Maps basemap. How many websites do you see that map on?

02:33If you go to shop for a house, sometimes you see Google Maps in the background, or if you go to locate a restaurant…

02:39…maybe they've got Google Maps pulling in their basemap. These basemap web services have become very popular.

02:44Now, it's not always the case that you can just pull in an existing basemap from ArcGIS Online or from Google.

02:51You have to make your own, so we'll talk a little bit about that today.

02:54The other types of web services that you might want to expose are your operational layers…

03:00…and these are really the reason that people are visiting the map.

03:02Often, this represents your proprietary data, or your data of study…

03:07…whether that's wildfires or weather or crime incidents or what have you.

03:13This is often the reason people are viewing the map, and you put them on top of the basemap.

03:17You often symbolize them with larger or brighter symbols than you would basemap symbols.

03:24So it pays off and to think about your, your map documents that you have…

03:28…and maybe use a whiteboard to draw out which layers will go in my basemap…

03:33…and which layers should be exposed as operational layers.

03:36Google Maps really changed our way of thinking, MapQuest and those, those types of commercial mapping sites.

03:43It used to be that…I guess it was a hard pill to swallow for GIS analysts to put up a web map…

03:51…and not have people to be able to turn on and off every single layer and reorder all the layers and things like that.

03:57Google Maps changed the game in this regard.

03:59We did a little study where we looked at all the layers that are inside the Google Maps basemap…

04:04…and that thing is just called, I believe it's just called Map on the button that you click.

04:09And I've never heard anybody complain that they can't turn on and off the golf courses in Google Maps.

04:14People have just learned over the past few years, I believe, to take these basemaps as they are…

04:19…and they realize that in most cases, that's not the reason that they're visiting the map, and as a result…

04:26…the map has become simpler to use.

04:29Let me just bring, bring up that website.

04:33So the map is very easy to use. How many buttons are there here? Is there a big layer list with a table of contents?

04:38There's not, but even still, my sister, my grandma, my dad can use this map site just fine.

04:45And that's because of some of the usability that they've put in, and people also like this map because it's fast.

04:52You know, as I zoom in, I don't see the map loading.

04:55Maybe for a brief second, I see a tile off on the side of the screen come into my browser.

05:01That's the performance people have come to expect from maps, and we'll talk about, today…

05:05…how you might be able to achieve that.

05:07So Google Maps has a couple of basemaps. How about operational layers? Here's an example of one – that's traffic.

05:14So you can turn this one on and off, and that might be the specific reason that somebody comes to this map.

05:19It's to see, what's the traffic like today? Same goes for photographs.

05:24You don't always want to see those, but if you're interested in what things look like…

05:28…you'll want to turn that layer on and maybe later, turn it off.

05:32So these are a couple of the operational layers that are inside of Google Maps.

05:38Now when you go to design your own maps, you'll think about these things…

05:41…and you can certainly take this approach using ArcGIS.

05:45In fact, we pulled up just some of our favorite sites that use this…

05:49…to show an example of separating out basemaps and operational layers.

05:53So let me take you to one that I like. This is District of North Vancouver in British Columbia.

06:02And you can see, they've made some basemaps here that perform pretty well, and they look very nice.

06:09Now, these are meant to have other layers displayed on top of them, so they've provided operational layers, such as bus stops…

06:15…that you can turn on and off, or bike routes.

06:20They've also provided a number of different basemaps…

06:23…so if you want to see this on top of neighborhoods, for example, you can easily switch between the two.

06:29So they've obviously put a lot of thought into the types of layers they want to have in their different basemaps...

06:34…and then what operational layers they want to expose.

06:37It looks to me, just by examining this map – I haven't talked to these folks, but it looks to me…

06:43…that they have a separate service for each basemap, and then they have just one or two services for the operational layers.

06:50The operational layers can be turned on and off because they are not cached, like the basemap is.

06:56And so we'll go into that a little more later.

06:59Another option, or another website that I like is the Solar Boston website. We saw a little bit of Boston GIS in the plenary.

07:06They've made this site showing solar potential at different sites around the city of Boston.

07:12And you can see that they've added their own cartography and style to the basemap, and they've provided some buttons…

07:19…where you can switch between different basemaps, so you can get the aerial photograph view if you want.

07:24Now, they have an operational layer on here, too, and that's the Solar Potential Sites.

07:29As I mouse over this, you can see that that layer changes.

07:32Often, operational layers are interactive. They invite people to click on the map and learn new things.

07:42Tanu will talk to you a little bit later about how this is drawn with client-side graphics…

07:46…and that allows it to, to symbol, to dynamically change as I mouse over it.

07:49And then I can show some extra information like a picture and attributes on this map.

07:56So those are just a couple of examples of how people have used ArcGIS to think through and build basemaps and operational layers.

08:06Today, we'll talk about three techniques you can use when displaying map services, the first one being cached tiles…

08:13…and then we'll talk about dynamically drawn images and Tanu will talk about client-side graphics.

08:20We've already seen a couple of maps that use map caching.

08:22Those basemaps from Google Maps, all of the basemaps that you saw in Solar Boston and North Vancouver…

08:27…all of those basemaps were cached so that they could have high cartographic quality but, at the same time, perform very quickly.

08:33When you create a cache, you draw the map over all the scales of the map at its full extent…

08:39…and you save those map draws as image tiles on your server, and that way, when somebody visits an area of your map…

08:46…your server just hands it the tile. It doesn't have to do the work of drawing the map at that time.

08:52It's a lot faster for a server to just hand out tiles than it is for a server to draw the map and send it back.

08:59This has really become a web, a web standard.

09:02One thing that it does require you to do is maintain the cache.

09:05Now, this can be tricky if your cache covers a whole country or the whole world at very large scales.

09:10That winds up being a lot of tiles. What happens if your data changes underneath that?

09:12That won't be immediately reflected in the cache because the cache is basically a snapshot of your data at one point in time.

09:15So you need to rebuild those areas of the cache that have changed, and in this way…

09:25…a cache requires maintenance and server power to build and store those tiles.

09:33We recommend that you cache your basemaps to your web applications in most cases.

09:38You can also cache operational layers sometimes.

09:41In fact, if you're going to be experiencing very high volumes of traffic, you might consider doing this.

09:47Google Maps, from what we can tell, has cached their photographs in Wikipedia entries.

09:53Now you may think, "Wikipedia – that's something that people are adding to and removing from every day.

09:57How can you cache that?"

09:59Well, in their case, they've determined, apparently, that it's okay to just update that at certain intervals.

10:05Maybe once a week, they rebuild that cache, or once a month.

10:08You know, and if somebody added an entry within the past few days, maybe it doesn't show up…

10:13…but they've just decided that that's okay for their cache. You may need to make decisions like that.

10:18You know, do I need to see certain updates to my data in real time…

10:21…or is it okay to wait one day and then I can just rebuild a cache overnight? You'll need to think about that.

10:28Some things don't change very often, and if that's true over a small area, over just a few scales, then you may consider caching.

10:37And then, some things are, tend to be viewed just at small scales. I'm talking about when you're zoomed out on your map.

10:43Now when you're zoomed out, that cache is a lot easier to build because it takes a lot fewer tiles to build those levels.

10:50So here I have a tile in the lower right that shows weather radar, and you may think…

10:55…well, the weather changes all the time. How would I cache that?

10:59Well, this type of data is something that people tend to look at at very small scales.

11:03It's very rare that you would zoom in to your city block to see if it's raining on the next street over versus your own street.

11:09So people are going to be zoomed out typically.

11:11Well, in that case, you may be able to build the first 10 levels or 15 levels of your cache fairly quickly…

11:17…and you update your cache maybe every 10 or 15 minutes, and this can certainly be done with things like scripting.

11:25All of map caching in ArcGIS is done with geoprocessing tools that can be automated.

11:29So you may set up your automation to occur, or your automated caching to occur on a regular basis.

11:37I'm not going to go into all the cache formats.

11:39I love talking about caching; I could do it for a couple hours. That's not the purpose of this session.

11:43But I did want to bring up one property of your cache where people tend to make the most mistakes…

11:50…and ArcGIS Server 10.0 introduced the mixed-image format for your cache.

11:56When you go to build a cache, you have to choose an image format. You can choose JPEG or PNG…

12:01…and now, you can choose mixed, and mixed, what mixed is…

12:04…is it has JPEG tiles in the center of the cache. JPEG is desirable because it has a relatively small file size on disk.

12:13The mixed cache on the periphery has PNG tiles, and that allows the transparency to work.

12:20Transparency is not available on raw JPEG images.

12:24So you have this type of cache. We have PNG on the periphery and JPEG in the center.

12:31You can change the JPEG image quality on these caches.

12:34If you have vectors and line work and labels, you probably want to have a higher quality…

12:39…around 90; we've found, that works okay.

12:42If you have imagery, you can get away with a lower quality…

12:45…and then you can wind up taking up less space on disk with your cache, so that's one tip.

12:51If you have a type of cache that's just an overlaid network of roads or boundaries…

12:55…where transparency is going to be almost everywhere, then you'll need to use the PNG format.

13:00And if you have under 256 colors, you can get away with PNG-8, which is probably...

13:05…which is one of the smallest image types.

13:08So you need to be thinking when you choose your image format, how much space on disk am I going to take…

13:13…and how large are these tiles going to get, and will they be, easily be able to be download…

13:18…will they be able to be easily downloaded to the browser?

13:24If you want to get into more of the caching properties that are available and how to choose these wisely…

13:29…there's a couple of sessions. Well, we missed the Wednesday, eight-thirty. But there's one tomorrow on beginning caching.

13:35That's the top one. And then, if you're going to be building caches that cover, like, a whole country or the world…

13:41…down to very large scales and you need to get some guidance on that…

13:45…then this advanced map caching topics would be a very good one to attend later today.

13:52If you're not going to build a cache, another option is to do a dynamically drawn map service.

13:57This is the default in ArcGIS Server when you publish a map service.

14:00So if you've never built a cache before, you've probably been using this way to draw your map services.

14:06In this scenario, the server actually receives a request from a website to draw a map, and it will do the work to draw the map…

14:13…and then it will send back the image to the, to the requesting client machine.

14:20Now, this is slower than caching, but it may be that you can get satisfactory performance out of it, as well…

14:25…if you follow some best practices.

14:31Obviously, if you need to see your data in real time, you won't be able to cache it, because the cache could go out of date.

14:37So it may be okay to draw real-time data dynamically.

14:41Also, if your data is changing all over the map and it would be unfeasible to maintain that cache…

14:48…dynamic drawing is, is an option.

14:50And then, if just a few people are going to access your map within your organization…

14:54…maybe you're working on a research project with just a few other folks…

14:58…in that case, it may not be worth it to go through the hassle of maintaining a cache.

15:02A good rule of thumb is if performance is good enough for you, you may not need to go beyond that.

15:09Why do the, why do extra work if it's good enough?

15:12Now, one thing you want to think about is scalability.

15:15It may be, appear good enough to you as you create the app, but if hundreds of people are going to hit this at one time…

15:21…it may need to be super good and be able to be more scalable, and that's where caching is actually better than drawing dynamically.

15:31In ArcGIS Server, there are two types of files that you can use to create a map service.

15:36On the right is the one that you know and love, the MXD map document. That's what you make in ArcMap.

15:43And for the first few releases of ArcGIS Server, this was the only thing that you could use to create a map service.

15:49And consequently, this one used the traditional map drawing engine that was used by, by ArcGIS.

15:55After a few releases, we found that that was not yielding acceptable performance in many scenarios…

16:02…where people needed to do dynamic drawing.

16:04So at 9.3.1, we wrote a new drawing engine that was optimized for the server, and in order to use that…

16:11…you need to make an MXD, or Map Service Definition, file and publish your map service using that.

16:17Raise your hand if you've used an MXD to publish a, a map service in the past. Okay, so a little more than half, or about half. Good.

16:28So the way you get an MXD, I will demo in just a second.

16:31You use this toolbar that looks a little fuzzy here in ArcMap. It's called the Map Services Publishing toolbar.

16:37So if you see me use these tools in the demo, that's where I got those.

16:41MXD supports many of the most common layer and symbol types.

16:46You'll see that there's a few things that are not supported, and we'll teach you how to detect those.

16:51And we found that in most cases, these yield faster dynamic drawing than ArcIMS, so that was our…

16:59…our benchmark when developing that drawing engine, and we feel like we reached that point.

17:03And we encourage you to use these MXDs, or what I'm going to call them for the rest of the presentation is optimized map service.

17:10So when I say optimized map service, I mean MXD-based services.

17:15Let me show you how to create one. I'm going to open ArcMap, and even if you've created one before…

17:20…hopefully, this little demo will be helpful in just showing the processes of working through and removing some performance bottlenecks out of your, out of your maps.

17:29So I have already right…right-clicked. I've displayed Map Service Publishing; that's the toolbar up at the top.

17:35And typically, you work from left, left-to-right fashion when using this toolbar.

17:40So the first thing I'm going to do is click Analyze…

17:43…and this brings up a report of potential things that are not supported in optimized map services.

17:49And also things that might cause performance problems, and I'm going to go through and fix some of these during this demo.

17:58The first thing that I see is an error, and error means…

18:01…you have something in your map that will not allow this to be published as an optimized map service.

18:05It's telling me there's a layer type that's not supported.

18:08Now, this is pretty easy to spot because I have a small table of contents, but…

18:12…if you had a large table of contents or you didn't know what that was…

18:15…you could right-click this and choose to select the layer in the table of contents.

18:21If I investigate this further, I find that this is a geoprocessing tool layer.

18:25Now, sometimes that's used in ArcGIS Server to be able to run a geoprocessing model within your map...

18:30…and see the results on the map.

18:33Now, there's other ways to do geoprocessing in ArcGIS Server, and if I really needed this…

18:38…I could take it and put it in another map document and publish it separately.

18:42What you want to do is try to get out all the things that will prevent you from publishing as an optimized map service…

18:48…and move those into their own documents or work around or get rid of them.

18:52So I'm going to remove this from this map, and when I reanalyze, it goes away.

18:57And now, I just have warnings and messages, so at this point, I could publish this right now as an optimized map service.

19:05I also now have a Preview button available…

19:08…and this allows me to preview what the map would look like when drawn as an optimized service.

19:14One thing that's cool about this – well, I'll show you a couple things.

19:18One thing that you might notice about optimized map services is…

19:21…this image quality seems a little better than the one in ArcMap.

19:26One subtle thing is that this applies anti-aliasing, and it can do it rather quickly.

19:31So anti-aliasing is a way of smoothing out the lines of…smoothing out the edges of lines in text that may appear jagged.

19:40If you look closely at this highway, you may see some pixilation; also, a highway that runs diagonal.

19:47These look a little bit smoother over here in the optimized map service.

19:51Now previously, it was…

19:53…you had to pay a cost to get this. You had to make a cache, and you had to turn on anti-aliasing, and it took a lot more time.

20:00Optimized map services apply anti-aliasing very well.

20:03When you zoom in and pan around, you can see the dynamic drawing happening.

20:09And each time, it's giving me the time that it took to make that previous draw.

20:14So you can watch this time as you go about fixing errors and warnings, and hopefully…

20:21…well, the idea is that it will go down as you fix those.

20:23And then when you get to a point where performance is acceptable for you, you can go ahead and publish the map to your server.

20:31If you want to change that anti-aliasing level or if you don't want to have it, you can use this button on the far right…

20:37…and you can change it to maybe work in a faster way.

20:41So you can choose a balance between quality and performance.

20:45It does cost…it does introduce a performance cost to use anti-aliasing, so you might want to experiment with those settings…

20:52…and then go back to the Preview window and see if the visual quality is good enough for you.

20:58Let's work through a few more of these errors and warnings.

21:01Here's a warning that's telling me that I've got a layer in my map with a different projection than the data frame's projection.

21:07Now this means that projection on the fly is occurring in my map document…

21:11…and projection on the fly is calculation intensive.

21:15If you can eliminate that, then you'll free up time and ability on your server to serve more maps.

21:21In my case, I'm just going to right-click and choose Change the Data Source Properties.

21:26To prepare for this demo, I already reprojected this layer. It's the hillshade layer.

21:30So I'm just going to switch it out for the projected one, and that goes away.

21:36It tells me to reanalyze here, and if I reanalyze, it goes away.

21:41Another thing it's telling me is that there's a layer in my map that doesn't have a spatial index built.

21:46Now, a spatial index is a way in ArcGIS of cataloging the general spatial locations of certain features…

21:52…and then that allows for faster map drawing within the software.

21:56And so if you take time to build these spatial indexes for your layers, they'll appear faster both in desktop maps and in web maps.

22:04You build a spatial index using a geoprocessing tool, and one cool thing about this message is I can right-click it…

22:11…and it just brings up the tool for me with all the parameters filled out in order to build that spatial index.

22:17For demo purposes, I choose a very…I chose a very small layer so that we could do that quickly.

22:22Sometimes it takes a while to build a spatial index, so you'll want to plan that into your…

22:26…into your timing for optimizing a map.

22:32Here's another error and warning, and sometimes you'll come across ones that you don't understand immediately.

22:38When I saw this, I didn't know what it meant. It says…

22:41…if I convert layer transparency to color transparency, that might improve performance.

22:46If you see a warning and you don't know what it means, you can right-click and choose Help.

22:50Each of these warning and error codes are associated with a help topic, and that will just pop up automatically when I choose Help.

22:57So this gives me all kinds of information about the types of transparency I can use.

23:02To make a long story short, if I choose Color Transparency, it's a way of precalculating some of these transparent colors…

23:09…instead of applying them in real time, so that can improve performance.

23:13And if I want to use that, it's as simple as just right-clicking, and I choose Use Color Transparency.

23:18When I save out the MXD file, that will be a property in the file that will just be applied for me.

23:25There's another one that could be tricky to understand just if you saw it for the first time.

23:30It's saying I have a multilayer line symbol whose symbol widths may result in aliasing when displayed.

23:36Now, to explain this one, it's easier just to show it.

23:41When I zoom in, I've got some streets here that are symbolized with a multilayer line symbol.

23:47Now, the optimized map service actually interprets line widths a little differently than ArcMap…

23:52…and that's resulting in some overlap here, where my lines don't look good.

23:57Sometimes the casing disappears.

23:59Now, there's an automatic correction that you can apply for this. It's pretty easy.

24:03You just right-click and choose Automatically Correct Line Width.

24:06So I'm going to do this on each of those layers where I get that warning.

24:12I'm going through and doing a number of these in sequence.

24:17It'll probably happen to you when you analyze your map that you'll see a number of these repeated warnings…

24:21…so what I'm doing here may not be too far off from what you do.

24:26My enhancement request, I'll submit right now to Tanu, is for a multiple select right here on this, on this dialog.

24:34It's Notepad.

24:35Good. Yeah, on your user ID is Notepad that you get; put that down. There we go.

24:41So I resolved all of those warnings, and now I'm just left with some informational messages.

24:47This'll tell me things like, well, you forgot to set up a scale range on your streets layer, for instance, so…

24:53…are you sure really want that? Because when people zoom way out, they're going to be drawing all your streets.

24:58In my case, I'm not too concerned about this for this demo map.

25:03Occasionally, the optimized map service will show certain symbols a little differently, like…

25:08…it tells me about a gradient fill.

25:10If I'm concerned about that, I can just use the Preview window.

25:14I've got a gradient on this runway, but it looks okay to me, so I'm just going to ignore that.

25:20And as we pan around, my performance is still pretty good, and I think I'm ready to just go ahead and publish this as a service.

25:29At this point, you can go one of two ways.

25:32What most of you will probably do is just click this button to save out the map service definition file.

25:38I recommend that you go and you just save this in the same place as your MXD.

25:42It needs to be in a location where ArcGIS Server, the ArcGIS Server account has access to read it.

25:47The other thing you can do that's kind of a shortcut, if you have admin rights to the server…

25:52…is you can just click Publish to ArcGIS Server, and this'll set things up to run right, right away and publish as a service.

26:01So I have this little wizard that I use to publish a map service.

26:04I want to point out something here, where you choose the capabilities you want to enable.

26:09If you use optimized map services with 9.3.1, there are only, I think, three capabilities that you could do.

26:15You could do mapping, WMS, and KML.

26:18With 10.0, we've added a bunch of the other capabilities, including some of the OGC ones, WFS, WCS.

26:26And then you can also develop, if you're developing server object extensions…

26:30…this is sort of an advanced topic, but those are also supported with optimized map services…

26:35…if you program your server object extension in a certain way, so we've documented how to do that.

26:41So really, there's a lot more ability to use these optimized map services as the releases go on.

26:49That's the last page of this wizard.

26:52Now when I click Publish, it's making a service, and I also want to show you what's being created on disk.

26:57So I have ArcGIS Server installed just with the default server directories, and if you're new to optimized map services…

27:05…this may be a new one for you – ArcGIS input.

27:07That's where all of your MXDs are created when you use this shortcut to publish straight out of ArcMap.

27:14So if I go into this folder, I can see the Map Service Definition file got created.

27:21Now let's just give this service a try by viewing it in a blank map. Oh, here's something to point out.

27:26It's asking me if I want to save the changes to this map document.

27:29So, even if you save out a map service definition, it has no intelligence about its associated map document…

27:37…and you have to save both in order to keep both of them in sync.

27:40So this means that if I go back later and I change this map document, I need to resave my map service definition…

27:47…and then refresh the service, stop and start the service for it to pick up the changes. So I'm going to choose Yes here.

27:56So I've got a blank map, and let me…whoa! Too many windows in this new 10.0.

28:04Okay, I'm going to view the Catalog window, and this is my ArcGIS Server and I'll just refresh it here.

28:12Here's the one I just published, and let's add it to ArcMap and test out the performance.

28:20So if you look closely, you'll see that the anti-aliasing has been applied here on the roads. That looks very nice.

28:27And I'm going to zoom in and just do some dynamic draws.

28:32And the performance of this service is as good as it was in the Preview window.

28:37You'll notice that the label positions are changing as I pan around, so that thereby proves that it is a dynamically drawn service.

28:44If you wanted to improve performance even more on this, though, you might create annotation for these labels.

28:50Annotation assigns each label a certain place on the map…

28:54…so that the map doesn't have to make label placement decisions every time that you pan or zoom.

28:58So that's another way you can even squeeze out more performance.

29:07I already talked about this with anti-aliasing. You can see again, in this example, its effect.

29:11This might be a little easier to see than the demo I was doing.

29:19You might be wondering what types of layers are not available or what's available through optimized map services.

29:25That's available in a help topic that we have. It's called Supported Functionality in MXD-Based Map Services.

29:34So we list everything that's available, and you'll find, I think, most things in your map are going to work.

29:44…that you've got one of those, you'll see that bright red warning, error pop up…

29:48…and you won't be able to use the optimized map service until you move it out of that map.

29:49Certain things, like TIN layers, Network Analyst layers, are not available, and if that's the case…

29:53Some new features that are available in the optimized map service at 10.0 include Maplex labeling and cartographic representations.

30:03These two things, by nature, are computation intensive, so they will be in many cases slower than if you did not use them.

30:12However, they're available to you. You have the choice of whether you want to use it or not.

30:17And if you feel like they're still too slow, you might consider making a map cache then.

30:22And once you have those cache tiles, it doesn't really matter whether you use an optimized map service or not.

30:28You're just handing back the tiles.

30:30In my case, I actually had a basemap of Mississippi, and you may be thinking, well, aren't you just going to cache that basemap?

30:37You know, why do you go to the trouble of making this optimized map service for dynamic drawing?

30:42The answer is that if you optimize the drawing performance, the cache will build faster.

30:46So if you have a cache that's taking you hours or days to build, you might go through the process…

30:52…of making the optimized map service just so that it will create your tiles more quickly.

30:59If you are not able to use the optimized map service for whatever reason…

31:04…we recommend that you still work as hard as you can to improve performance…

31:09…either getting out those unsupported layers and putting them in their own service…you might attempt to use…

31:14…the Esri optimized style for drawing, although I talked to one of our cartographic researchers today at Esri…

31:21…and he says he doesn't get the visual quality he likes out of that one, but it is an option to you.

31:26This uses very simple symbols for drawing that are designed to work faster.

31:31And the real secret here, the thing I would recommend for everybody to do, is still…

31:36…use that Analyze button to catch performance warnings, 'cause some of these…

31:39…the nature of these warnings and errors that you see will help you whether you're going to publish your map to the web…

31:45…or not, or whether you're going to use optimized map service or not.

31:48These are things - like projection on the fly, missing spatial indexes - you may not have ever noticed before.

31:54This toolbar can be very helpful in any ArcMap scenario.

31:58Now you probably won't go through all the steps of saving out the MXD in publishing…

32:03…but you can always use the Analyze button to help you.

32:08With that, I'm going to switch things over to Tanu...

32:12…and he's going to start talking about client-side graphics, the third option.

32:43Alright, can you hear me now? Everyone good? Alright. Good morning. So how is everyone doing? Good?

32:52How about your legs? Are they doing good, too, from walking all three days? Good.

32:58This is my yearly walk-around, actually, once a…once a year, I do. So, anyways. Quick question.

33:06How many of you never, ever use client-side graphics? Never used client-side graphics. Some of them? Okay, don't…

33:15…don't lower your hand right now. I have another question.

33:18Okay, now lower your hand if you use Google Maps, Bing Maps, Yahoo! maps or similar technology, then lower your hand.

33:27Okay, so most of the people use this one, right? So, okay. Why I ask you the question? I'll get back to you in a second.

33:33Before I do that, I have my Google map application right now over here.

33:38So all I want to find out is how I can go back to my office, back in Redlands…

33:43…something that we all do very often.

33:46So to do that, I need to find out where I am right now.

33:49I look for the San Diego Convention Center, I see a little pushpin, I click on it…

33:54…brings up some information. There's an option called Directions. I click on it, and there I am asked for the destination.

34:02I'll say "Esri Redlands headquarter." It's amazing. They find it out right away. Yeah! They're tracking all of us.

34:12Okay, it shows the route in blue line. Alright.

34:16Now, what I want to do is, since I love, take a peek of ocean when I'm driving…

34:22…which is not recommended, by the way, so what I'll do, I'll…still a good idea to travel on Interstate 5.

34:29To do that, I'll just click on the blue line and move it on the Interstate 5, right?

34:36And that gives me a fabulous route with an ocean view, which is mainly blocked by hundreds of trucks and cars, right?

34:44So, anyways, I get my result and the thing that I was clicking here, this pushpin on the blue line?

34:52That's what we call client-side graphics, alright?

34:56So those who of you raised your hands before that you never use client-side graphics, now you know…

35:01…that we have been using client-side graphics, one way or another, you know, with one application or the other application…

35:07…pretty much very often, and we did not recognize that we have been using client-side graphics. Alright.

35:14So think for a moment, what this client-side graphics did to this application. Alright.

35:21This make this Google application very interesting, gives a very nice user experience…

35:27…and more importantly, it makes this very intuitive.

35:31So while I was preparing for this presentation, I realized that the very first time I used Google Maps…

35:37…no one actually taught me how to use it, right? Did anyone teach you how to use the Google map? No. Oh, there's one! Okay!

35:48Okay, but most of us, no, right? So this is, we're living in an age where we…we're living now, what do you call, the click?

35:56Age of clicking? Everything, something pops up on the window, on the monitor - we have a habit to click on it. Alright.

36:03So that's what I was doing. I see something popped up on my monitor; I just clicked on it, and I see something comes up.

36:10So that's the power of client-side graphics, and that's what we consider client-side graphics as a key to interactivity…

36:19…and an important factor to make the intelligent web map that they have been talking in the plenary on Monday, alright.

36:27So now that we know what it is, let's see how it actually differs from the other two approaches, what Sterling said before.

36:35The other two approaches, the client-side application, actually play a very dumb, stupid role.

36:42All it does, it sends a request to the server, says, "Hey, server, give me a map for this particular extent."

36:49Server does all the heavy lifting, pulls the geometry and the attribution from that database…

36:56…draws them with the appropriate symbol, export it out to an image, and send that image back to the client.

37:02And client's application just simply paints it on that browser. Alright.

37:08With this client-side graphics approach, the client is the smart one this time, like a smartphone, right.

37:15So instead of asking for the image, it asks the feature which includes the geometry and the attribute from the server.

37:24So once it gets back, it takes full responsibility of drawing it with appropriate symbol on the client side. Make sense?

37:35Okay, there are…where we can learn about this one, or how you will use this…

37:40…with all of our web APIs, like JavaScript, Silverlight, Flex APIs…

37:45…they all support that - what they call feature layers.

37:49So if you use a feature layer, it will do the same thing for you, so you don't have to write any single line of code to do that. Alright.

37:57Now there are two approaches you can take. One is, you can download all the geometry at once and hold onto it…

38:04…or you can download those features as you need it, right, which is the on-demand case.

38:10Speaking of that one, I'll take you back to another, a new application that…

38:16...web application that came up just a few weeks ago.

38:19I don't know many of you noticed this one. This is called Passage 2011.

38:25There were two artists in Europe. They actually decided to take a boat all the way from Berlin to Venice over the Alps.

38:35Don't ask me why they did that, okay?

38:39So I just zoomed in to one interesting area, and this site [was] actually hosted by Esri Germany.

38:45So I see the redlines, the solid one, dotted line shows the path, the plan or the path they actually, in fact, the two.

38:53They show up. As I zoom in…

38:54…I see some of the boat's location pops up; that shows the location where they actually blogged or took some photos.

39:03And in the lower left corner, I see a graph, and you see that. There is something interesting.

39:07I will just grab that. As I move my mouse over it, I see some information pops up.

39:13That shows what is the altitude and what is the distance from the basemap, base camp.

39:18And if you look at the, on the map, you'll see that there is a little red crosshair. Can you see that? Right?

39:24That actually shows the graph is location aware. Very smart.

39:30So what if I click on this boat? I can see that it pops up information that shows the blog they posted and some of its images, right.

39:40So let's see what happens behind the scene.

39:42So I'm clicking this Firebug. Many of you know it. Those who don't know, Firebug is an add-on to Firefox's browser…

39:50…that helps you, number one, debug your web application; number two, it helps so you can monitor network traffic activities.

39:57So I just happen to click another boat on it. So what happens is that there are two…

40:02…only two requests went out of the server, and both of them are JSP, JPEG file…

40:08…bring down their images, right.

40:10If I click on the same image again, there will be nothing went…went back to the server. That's because of all the cache.

40:17I could – but we did not see the one request that I would have expected to go out, is that…

40:23…to the server, to the map service, asking for, hey, please give me the information about that boat.

40:28There is no such thing on, going on.

40:30The reason it's not happening is because of this magic of client-side graphics.

40:35Because we downloaded all the graphics with the attributes and this blog post on the right side…

40:40…and the image of the videos on the lower right corner, that happens to be the attribute information of that feature…

40:48…and you're just pulling it from that memory and showing it.

40:51So deep…it actually demonstrated a very important point of client-side graphics, that it off-loads the work from the server.

40:59Since it downloaded everything from the server, it holds onto that one.

41:04It doesn't have to go back to the server and bring that information again until exited out and go back to this application. Alright.

41:10That means your server is free and the same server machine can serve more clients at the same time. Make sense? Alright.

41:22So now that we know…we are aware of this one, the next one, question comes up is…

41:32…What should you draw with the client-side graphics?

41:34It depends on the focus of your application. Alright.

41:37If your application's, application focus is the parcel layer, yeah, you may draw the parcels as graphics. Okay.

41:46And the last case, in the last example pursuant to Passage 2011, the…the route, the location of those blog posting on the pictures…

41:55…was their focus, so they actually drew them with the client-side graphics.

42:00Often we actually show the query result or the geoprocessing result as client-side graphics.

42:07A typical example is that when I click on a map on a feature and I want to identify it, and I highlight that one…

42:14…those are client-side graphics. Alright. In the previous case, that…

42:20…the grab that we, that was displayed in the lower right corner, lower left corner…

42:24…that was client-side graphics, too, and that's what it was, you're location aware.

42:29Web editing, of course, is a no-brainer because you need to, in order to edit it…

42:33…you need to get hold of the geometry. You cannot just draw it on…draw the pixel of the image, right? So you need that.

42:42The last thing on my slide, but not the least one, is the client-side thematic mapping. What it is…

42:49I'll just go to another website that actually demonstrates that example very well.

42:53This is National Center of Education Statistics. By default, this application shows the African population…

43:01…African population at, below the age of 18 of, for, per school district for the state of Virginia.

43:10The nice thing about this one, it allows me to change it. Like, if I want to know the per capita income for each school district…

43:17…from 2000 census, I can do that, too. I can click on it; it refreshes the map right away.

43:22If I don't like the color or the number of classes or the class breaks, all, we are familiar with, ArcGIS Desktop, we can do that.

43:30We can click on it, raise the number, I choose the natural breaks are equal interval, or change the color to something else.

43:37It draws it right away; it doesn't have to wait, even. Alright.

43:40Another cool thing about that one, they have advanced options, where it shows that, right here…

43:46…it actually shows the histogram for each class, and it allows you to…custom…customize the breakpoints.

43:54As you see that, as I…and I move this little box here, it changes the number as a percentage.

43:59So how does it do that? [unintelligible] can do that.

44:04That much interactivity is because this is client-side graphics…

44:09…the application is our fullest spectrum of this dataset because it's holding onto that client.

44:15So it is, it can do the computation very, very fast. It doesn't have to send anything to the server.

44:23The last one in this example is that it also allows you to add another state, right.

44:29In this case, I will just add West Virginia, and it will draw the West…

44:33…school districts from West Virginia with the same values that I chose before.

44:37So this is another good example of the, the second [unintelligible] that I mentioned earlier, that on-demand case? This is what it is.

44:45So you pull the geometry when you need it. You don't want to draw all those, like, I don't know…

44:51…50 million school districts, maybe, in the United States at once. That will slow you down. Alright.

44:57So now that we, we know what it is and how exciting the client-side graphic is, how awesome and cool it is…

45:04…you maybe say, Okay, I need to go back to my office and start working on it.

45:08But I would say, hold onto that part for just next couple of slides. That's because, two things.

45:15One is that, as I have been saying that client-side graphics requires you to download the geometry, right.

45:21The bigger the response is, the slower it will…the much time it will take to download that information.

45:28Number two, it holds that information too on the client side.

45:31That is, the more information you put it on the client memory, it may make your browser behave very slow.

45:38So…and I'm pretty sure you don't really want that to happen to your map, or your application, alright.

45:45So, but, now that…there is a question now comes up is that, when would you use the client-side graphics versus the other two approaches…

45:56…alright, because of those two issues. And the bad news is, there is no such line. You have to test it out.

46:03The good news is that we have been putting some blog posts out in recent few weeks…

46:08…and that will help you out to test and find out what is the line for you, for your test application. Right.

46:15And we have a couple of blog posts that will help, that will help you to work with large dataset…

46:21…the feature layer, and it'll explain what is vector tiling, which is a new one that's on-demand case.

46:27It pulls that information on demand for you. You don't have to click anything.

46:31How you'll generalize the geometry to make your response smaller.

46:35And the number one on my list is how to you determine the number of clients…

46:38…the number of features you can draw on the client application.

46:41Speaking of that, I will take you back to that, that blog post. I will highly recommend you to read through this blog post.

46:48And they have good two samples. One is this one that allows you to actually draw client-side graphics…

46:55…and see whether it will [unintelligible] up, and what is the limit where it will eventually start slowing you down.

47:02Let us start by adding only 100 circles with simple symbols. Click on it. See? It performs really good.

47:10On the right side, I see that it takes about 100 milliseconds. Pretty good, right?

47:15What if I add, for example, a thousand circles?

47:22Okay, it's not that bad, half a second, right? I'll clear it out and I'll add, like, 2,000.

47:31It is slow now. Takes about a second and half. Pretty slow, right?

47:39So it's not about the number of features you were drawing. It also depends on the symbol you are choosing.

47:47Right, with a simple symbol, it may draw okay, but the moment you actually switch it to picture symbol…

47:52…or a very complex symbol, it may slow you down within a small number of graphics. All the labeling, too.

48:00Also, keep in mind that it also depends on the feature type. As we all know that points is points…

48:09…is there is one coordinate, single coordinate attached to one point, but when it comes to a line or polygon…

48:15…by nature, we all know, it made of many, many, many, many points, right.

48:20You were lucky if there was one feature that counts as only two points, alright.

48:25Speaking of that one, I'll take you to another example that will let you, allow you to download the polygon features on demand...

48:33...and see when you hit that limit.

48:37In this next case, I will download the first 10 [unintelligible] counties of the United States.

48:41These happen to be the first 10 in that database, by the way, alright.

48:45So that drew really fast, right? No problem.

48:49And you see that it is on the lower left corner, there is something called Max Allowable Offset, that is check box, that is checked on.

48:55And what it does, it actually tries to generalize your geometry.

48:59What would happen if I, if I don't have this thing checked, right?

49:02To do that, I will use another software called Fiddler.

49:06Fiddler is a downloadable software, free downloadable software that allows you, again, to monitor your network traffic.

49:13So I'll start capturing the data. I will go back to my side.

49:17This time I'll check it, and I'll say, okay, draw the same number of features this time but don't generalize the geometry.

49:26And it's thinking and thinking and thinking, right.

49:31I did the same mistake before in the last presentation. I have chosen a number only 5 polygons, alright, instead of 10.

49:38Okay. No music? Can anyone sing? Yeah. I'm horrible when it comes to singing. Anyway. [unintelligible]

49:46So let me go back to Fiddler and see how long it took.

49:49So I'll click on that request, and I see it took about 18 seconds to download that one, right.

49:57And one thing I usually forget about this one when I'm delivering my software in house is that my server box and my machine…

50:05…live in the same network if not on the same box.

50:07So the speed is not a problem at all, but what if your client or customer lives somewhere…

50:13… and they're not lucky enough to have a decent Internet connection, like as you do, right?

50:19So this, Fiddler actually helps you to find out or guesstimate how much time it might take.

50:25So for example, if your client has just happened to be in Japan or not…

50:29…Europe with a decent DSL line, it may take about, what is that, 168 seconds, which is two and a half minutes.

50:36Your clients don't want to wait that long. They'll just bail out and never come back to your site, right?

50:43So good. Now next thing is...I mentioned something called Max Allowable what, right?

50:52And so this is called, this is a geeky way to tell the server...

50:58...we all love the geeky things here, back in Redlands, by the way...

51:02...tell that, the server, hey, server, please weed out some of the vertices from that feature, but try to preserve that shape.

51:11So in that screen shot below, I have, I have two examples side by side, showing the same number of states.

51:18They look, at that scale, they look identical. With your bare eyes, you cannot see any difference.

51:23But see them sized at the response size? On the right side, I see it took about...

51:28…is that, what, like 300 kilobyte? On the left, with Max Allowable Offset set, it's about one-fifth of the size than previous.

51:37So it takes much less time to download. So what happens behind the scene?

51:41If you at that same scale, if you zoom in without changing the Max Allowable Offset, it actually tries to generalize it.

51:47That's where you see some gaps and some overlaps. Alright.

51:50So choose that Max Allowable Offset very carefully. You can choose them or you can set...

51:58...reset them as you zoom in or zoom out.

51:59Alright, so as you zoom in, you may only, you can ask for more geometry points to come in, but it will actually, what you call...

52:08...since there is less geometry points coming in, it's okay to do that.

52:13Now for some performance tips, we talked about the generalization geometry, but don’t do that while editing scenario.

52:19The editing scenario, you don’t want that overlap or gaps to be there in your database.

52:24Don’t try to download too many features at once.

52:27Beware of the number of features you download, and there’s a limit on the server side.

52:32It’s a thousand, but you can increase that.

52:34Another one is the firewall, Fiddler…filter. Sorry about that.

52:43With a feature layer, if you don’t have any [unintelligible] by default, it pulls that 1 equals 1…

52:47…and some of the, what do you call, firewalls block that, so beware of that one when you publish your map service to a public network.

52:57Where you can learn this information, of course, you can talk to us.

53:00There are…we have a couple of sessions going on all over the week.

53:05You can learn them from there or you can visit Resources Center.

53:09And we have examples, API references, samples, everything.

53:14Some general performance tips of the map service…

53:17…Sterling mentioned all of those - caching, annotation, performance better than geometry join…

53:23…projection is the number on [unintelligible].

53:25Make sure the spatial index is updated; it's just a recap.

53:28Data access tips. If you happen to have SDE, make sure it's well-tuned, it's compressed, statistics updated…

53:30…if you happen to have versions, make sure you have a good workflow to deal with version.

53:37Use direct connect if possible and not application server connection.

53:45When it comes to local data, try to put your local data on the same box where your server is running.

53:50Avoid using [unintelligible].

53:52If you have to use it, you may get a little more performance using the map drive rather than the [unintelligible].

53:58But you're always highly recommended to put your data on the same machine.

54:03Try to cache [unintelligible] your tool results.

54:05Speaking of that one, I will take you back to the Boston Solar example that Sterling showed before.

54:13So I will zoom in to Charlestown. I'll zoom in as I see…

54:20…okay, see some of those buildings there.

54:22And the cool thing about this one, it actually allows you to click on a building and shows a graph…

54:29…which shows the solar radiation potential for each building for each month over the year.

54:36And as I click on another building, it shows up right away. Right. It's very fast.

54:41But what if I choose an arbitrary polygon, and it will take horrible, horrible long time.

54:47Why is this happening?

54:49That's because those people in Boston, they're really smart enough. They knew their client does not want to wait.

54:56So they ran the geoprocessing tool previously for each individual building, and those results are saved in the database…

55:06…or a different table, so when you click on it, they are actually extracting the peak competent result…

55:10…rather than trying to fire up that geoprocessing tool. See how long it takes? Right.

55:15So that's what I, I said. If possible, you know, have your geoprocessing result or query result, you know…

55:23…saved to compute it.

55:26Avoid downloading all attributes if you don't need them.

55:29Like if, in an example, if your layer has, like, millions of fields, which is not really…maybe 50…

55:36If you don’t need all of them, don’t download all of them, okay.

55:41Indexing. If your application, you see that your client will actually run the query against some of the [unintelligible] fields.

55:49For example, a parcel. You want, your client will actually search parcels using Parcel ID.

55:55Have your parcel ID field indexed.

55:57Otherwise, you will do a full scan of your table, and if you happen to have five million records in the table, it’ll take forever.

56:04Do the same, too, for joins. If you have joins, make sure the common fields, we do left and right tables or the layer and table…

56:12…are indexed. You’ll get significant performance boost.

56:15Authoring a good web map. That’s a horrible area for me, because I’m a horrible, horrible person…

56:20…when it comes to mapmaking.

56:22So what I do, I steal work from other people. Don’t tell it to anyone.

56:28So to do that, what I usually do, I go to the Resource Center at…

56:33…and they have tons of map templates available for each individual industry.

56:37I download one of them and start working for, with, you know, one of them and work my way up.

56:43And what I’m trying to say about that one is, okay, I’ll just show you the demo.

56:51So this is website. I’m sorry, I actually went further.

56:55So this is where I click. This is the first page. I click the land records, I see there’s a…

57:00… called Gallery link, I click on it, I see a bunch of, I’ll see a bunch of templates pops up in a few moments…

57:09…and there are a bunch of templates. And so many that it actually gives you a filter to filter some of them out.

57:15So I’ll just filter that’s appropriate for ArcGIS Server 10, and I see only a few of them…

57:20…and this is a tax parcel viewer that you happen to see at the Plenary Session.

57:23Click on it. It gives some information. You can try it out from here, that application…

57:29…or you can download that. So if you click on it, it gives the details about that, and you can get the download link from here, too.

57:37So what you see with that, to do that, I will just go to, I will start using Sterling’s machine…

57:42… because I don’t have 10, ArcGIS Desktop on my machine.

57:49So if you go to that side, once I have this downloaded, you’ll get some of those folders that will contain that map…

58:01…that application, so you just open that, one of the maps [unintelligible] ArcMap and they just happened to publish it.

58:08It’ll just work, but something that you really don’t want to.

58:10So you want your data to publish. There are two approaches you can take.

58:14The one that I usually do is, I use the Distributor Geodatabase toolbar.

58:19Click that Extract Data, and I follow this wizard to create a geodatabase with that same schema in it, right.

58:28I’ll just follow this one, and it’s time.

58:34One nice thing about this one is that it allows you to change the spatial reference because it comes in one spatial reference.

58:40That may not be what’s appropriate for your data, so you’re allowed to change that spatial reference.

58:47You can do that. Click Next, and the last option will allow you actually, allow you to save an MXD as a new MXD…

58:55…and it will change that data source and point to that new database rather than pointing to this existing database.

59:00And after that, you can download your data to that database, and you can just start working on it and publish it…

59:07…and you know, run the same application that you saw before, it will work right away. No problem.

59:12So that is one advantage that you will get out of it, is that you get…you get your data to a standard data format…

59:18…and especially in the land records area or local government area, all the templates are based on the same data model.

59:25So if you just happened, in the couple of months, lately you happened to download some of the templates…

59:28…your, you don’t have to go to the same process. It will just work because you have a data standard, right.

59:35There’s…the down side of this one is that you, your database, you need to modify your data…data model, right?

59:43In case you don’t like that, what you can do, you can create a new data frame.

59:49That one, you bring your dataset, for example, I’ll just happen to use the same dataset, but in your case…

59:53…you will bring your dataset, go to that Symbology tab on the layer properties of that layer…

59:59…click Import, and choose one of the ones from the existing data frame.

1:00:04So what, it actually helps me, at least, I don’t have to think about those…oh, it didn’t work? Maybe it doesn’t have anything. Oh.

1:00:22Oh, well. I will pick a good one next time, next time. Sorry about that.

1:00:26But what helps me is that…that I don’t have to think about the symbols. I can use the, all the…

1:00:31…all the standard symbols that the Esri people actually thought about that will nicely blend with your application.

1:00:37You can do that, right? So with that, I’ll get back to my slides here. And, oh, the demo; we already talked about the demo.

1:00:47There are some cases where you may not find your templates, right, or the templates that you may have, might found…

1:00:53…is not good for you, so you may need to develop from the scratch. So again…

1:00:58…we always recommend you to actually take a look at those templates that's available on

1:01:07That’s because you can learn about how the data was structured, how the layers are structured in ArcMap…

1:01:13…the group layers’ visibility and everything, okay, so keep that in mind.

1:01:17And then you can just work…up your way to create a nice basemap.

1:01:23Next, to the feature service, those of you don’t know a feature service, it’s not really a different feature service.

1:01:28It’s an extension of a map service which allows web editing, and that’s…

1:01:34Since it is being drawn on the client side, using the client-side rendering engine…

1:01:38…there is some limitation you need to consider when you are making a map of, targeting the web editing that…

1:01:47…if you happen to have simple symbols, that works fine.

1:01:50If you have picture field symbols or marker symbols, it works fine, it comes good, nice.

1:01:55But if you happen to have a cartographic line symbol…

1:01:57…it gets downloaded to simple, line symbol because the client server is not smart enough or they are not capable of showing…

1:02:06…all the nice cartographic symbols that we can show in the desktop. Just keep it in mind.

1:02:12Some of the cases, like, for example, if you are character markup symbols or multilayer symbols, especially the marker symbols…

1:02:19…they are converted into image, so you do, most of the case, it will come out fine, but just test it out, right?

1:02:26Try to avoid gradient fields, too. And the next one is the mobile application. This is a completely different one.

1:02:32It’s targeting to a completely different thing. So far, we have been focusing on targeting a desktop application…

1:02:38…or the target laptop application where the monitor is big, versus your smartphone or the mobile devices, where the screen is small, right?

1:02:47So is there, raise your hand if any of you actually took your mobile application and tried to see…

1:02:54…or Google map out in full sun. Did anyone try it? Okay. Don’t tell anyone. I never tried that myself, too.

1:03:02But I trust Tom Brenneman more, you know, than myself when he is doing it, when it comes to this area…

1:03:10…and he told me, no, you cannot build, you cannot see anything, alright.

1:03:14That’s because the contrast on everything is actually, makes this pretty much invisible.

1:03:19So keep it in mind. Have your maps very - I know. Have some meaningful symbols. Have it set to contrast.

1:03:26Take away, take out some of the layers that you really don’t need them. Then, what I mentioned before…

1:03:31…is the screen size. If you happen to have a label that’s pretty big, nice looking, looks pretty good on desktop…

1:03:38…it may not even fit on that small screen, right.

1:03:42And with that, there is one little application that I will just demo before we end, is that…

1:03:49…we talked about this client-side thematic mapping before.

1:03:53Now we saw the little performance issue, right, that you cannot download all those features at one point.

1:03:59For example, if you happen to have, if you want to draw all the layers, all the counties at one time…

1:04:06…there are like 3,000 counties, if you want to draw them with the client-side thematic mapping function…

1:04:12…it will not work, simply not work, right? So you need to take advantage on the server side.

1:04:17So there is a hope that at 10.1, we are going to support that. At 10, you can still do that, but that requires…

1:04:24…significant objects programming, right, and it does not scale well, that. So, speaking of that one, I’ll take you to that example.

1:04:36So this is the map that I publish on my machine, and it, by default, it doesn’t show anything.

1:04:41You saw the similar demo at the plenary. So it doesn’t do anything, but it allows me to change the symbol.

1:04:49If I want to see the population from 2000, I can see that right away.

1:04:52I can change the class breaks, I can change the way I want it to classify, or even the color, right.

1:05:01So how it is doing it? Let’s open Firebug again.

1:05:06So there’s two steps. First is, I’ll choose, and the field that I want to be used to draw.

1:05:16Then I’ll choose the classification method; in that case, I can choose National Grid.

1:05:18I’ll do that. Okay, I want it to be grouped in five classes, and this is the ramp I would like to use.

1:05:23And then I say, generate…oh, I’ll just clear it up. Generate the classes. So it goes out to the server and asks…

1:05:30…hey, server, do that computation for me. Find the class breaks and give me a renderer.

1:05:36Once you do that, you can apply it. And there goes another request, alright, and this request actually brings that image back.

1:05:45You see that image? Alright.

1:05:47So, at 10.1, we’re not only giving you this function…

1:05:51…we’re also giving you the helper function that allows you to come up with those breaks.

1:05:54Otherwise, you’d have to write, like, hundreds of lines and implement that logic on the client side to come up with those breaks.

1:06:02Make sense? Alright, with that, I will hand it back to Sterling to review it.

1:06:09Oh! Thank you.

1:06:19We’re just about at the end. Just to review what we covered, we showed you how to plan your map for the web, right?

1:06:26You’ll take your desktop map and maybe do some whiteboarding or planning of how you’re going to break up your layers…

1:06:30…into basemaps, and then maybe take some of your layers and put them in another map document showing operational layers.

1:06:37From there on, you’ll choose what techniques you’ll use to serve out your map.

1:06:40You can either use cache tiles, a dynamically drawn map service, or the client-side graphics to provide some interactivity.

1:06:48And then you’ll follow the performance tips that we gave. The main thing to remember is precompute where possible…

1:06:54…whether it’s creating annotation, running your model on all of your features and saving those results…

1:06:59…or creating a map cache.

1:07:03We invite you down to the showcase to visit with us some more about this.

1:07:06Both of us are in the, under the web area of the showcase.

1:07:11And especially if you want to learn about the client-side graphics, how to use those in a web map…

1:07:14…and how to use that Max Allowable Offset property on the feature layer.

1:07:19We recommend these web API sessions for JavaScript, Flex, or Silverlight, whichever one you’re more inclined to.

Copyright 2016 Esri
Auto Scroll (on)Enable or disable the automatic scrolling of the transcript text when the video is playing. You can save this option if you login

Best Practices for Designing Effective Map Services

Sterling Quinn and Tanu Hoque show how to optimize the design and performance of a map for online use and publish it to ArcGIS for Server.


  • Recorded: Jul 12th, 2011
  • Runtime: 1:07:27
  • Views: 82139
  • Published: Sep 6th, 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.
Download VideoDownload this video to your computer.
<Embed>Customize the colors and use the HTML code to include this video on your own website
Start From:
Player Color:

Right-click on these links to download and save this video.


Be the first to post a comment
To post a comment, you'll need to login.
If you don't have an Esri Global Login ID, please register here.