GeoSpatial Training Services Newsletter
Issue: # 1
May 18th, 2015

Last Week to Save 15% on GIS Classes

 

Hard to believe we've been in business 10 years this month! 

 

As always during our anniversary sale the sooner you register the bigger the savings.  

 

May 4th - May 10th - Save 20%

May 11th - May 24th - 15%

May 25th - 31st - 10%

 

Enter the discount code 'anniversary' when checking out online or write in the code when registering using our registration form.

 

____________________________________________________

 
Seats Going Fast for Denver, Bozeman, and Austin Classes

We're quickly running out of available seats for our upcoming Denver, Bozeman, and Austin classes.  

June 15th and 16th we'll be in Denver to teach our Building Web and Mobile ArcGIS Server Applications with JavaScript
class.   Only 4 seats are still open for this class and you will need to bring your laptop.  

$646 when you bring laptop
undefined 

June 22nd we'll be teaching Building ArcGIS Applications with JavaScript: No Coding Required! in Austin.  We'll follow that up on June 23rd and 24th with our Building Web and Mobile ArcGIS Server Applications with JavaScript course in Austin.  Seating is limited to 16 students for both and we're quickly filling up.  

Building Web and Mobile ArcGIS Server Applications with JavaScript
June 23rd - 24th
$610


Building ArcGIS Applications with JavaScript: No Coding Required!
June 22nd
$360


Finally, our new Topics in Programming ArcGIS with Python course will be taught in Bozeman, MT on August 12th and 13th.  More details on this class are below.  We still have 8 seats left for this class.  We recommend taking our Programming ArcGIS with Python Workshop course on August 10th and 11th as an introductory course before moving on to the Topics in Programming ArcGIS class.

Programming ArcGIS with Python Workshop
August 10th - 11th
$646 (must provide your own laptop)
undefined

Topics in Programming ArcGIS with Python
August 12th - 13th
$646 (must provide your own laptop)
undefined 

____________________________________________________

New Class: Topics in Programming ArcGIS with Python

In our newest course we use a project based approach to teach intermediate to advanced level ArcGIS programming techniques with Python.  Using a series of real-world projects you'll learn how to create integrated ArcGIS Desktop, ArcGIS Server, ArcGIS Pro, and third party applications using ArcPy, ArcGIS REST API, and open source Python libraries.  

This course is currently offered only in a traditional classroom setting rather than online due to the hands on nature of the content. You should plan to take our Programming ArcGIS with Python Workshop as a pre-requisite to this course.  

Course Modules: 

1. Extracting Wildfire Data from an ArcGIS Server Map Service with the ArcGIS REST API


 

2. Tracking Elk Migration Patterns with GPS and ArcPy


 

3. Automating the Production of Map Books with DataDrivenPages and ArcPy Mapping


 

4. Analyzing Crime Patterns with ArcGIS Pro, ArcGIS Online, ArcPy, and Plotly


 

5. Real Time Social Media Mapping with ArcGIS Online, ArcPy and the Twitter API


 

6. Viewing and Querying Parcel Data


 

7. Creating Demographic Reports with the ArcGIS REST API, Arcpy, and GeoEnrichment Widgets


 

8. Supporting Search and Rescue Operations with ArcPy


 

Get more information about the course.


 

August 12th - 13th
Bozeman, MT
$646 if you bring your laptop
undefined 

____________________________________________________

6 Instructor Guided, Self Paced, Online Classes this Summer!

 

Save an additional 15% on the already discounted price.

 

July 27th - August 14th unless otherwise noted

 

Programming ArcGIS with Python Workshop   

$567

undefined
 

Advanced ArcGIS Programming with Python 

$567
undefined

 

Building Custom ArcGIS Server Applications with JavaScript  

$567

undefined 

 

Advanced ArcGIS Server Development with JavaScript    

July 27th - August 21st

$567

undefined

 

Introduction to ArcGIS Online 

July 27th - August 7th
$250

undefined 

 

Intermediate ArcGIS Online 

August 10th - 21st
$450

undefined

____________________________________________

Live Training Events


Denver, CO
June 15th and 16th
$760 
undefined
May 26th and 27th
$760

undefined 

 

Bozeman, MT
August 10th and 11th
$760
undefined 


 

Bozeman, MT
August 12th and 13th
$760 
undefined

 

 

_______________________________________________ 

Dealing with Lots and Lots of Point Data in a Web Application

 

I recently had a fun question from a student on the 
Building Custom ArcGIS Server Applications with JavaScript class. He has a busy map service with in excess of 50,000 points on it, and was after some advice as to how to improve performance in a web application he has built to consume that service.

 

Sure, 50,000 points is a lot of data. But we've seen worse and thankfully there are a number of features in the ArcGIS Server API for JavaScript we can take advantage of to keep our users happy when interacting with large data sets like these.

 

How regularly is the data likely to change?

If hardly at all, consider creating a cached map service from all your points. You won't be able to send the feature geometries and their associated attributes down to the browser for immediate responsiveness like you could with a Feature Layer, but users can still interact with your data via a QueryTask, although each interaction with a feature will require a server round trip to work.

 

See: Creating a Cached Map Service in ArcGIS Server

 

What if you need that level of interaction?

If interactivity is likely to require a lot of round trips, but users are likely to want to focus on discrete geographical areas when using your application, consider using a Feature Layer, and setting its mode to "on demand" so that points are only brought down to the client when the user requires them. Conversely, if users are likely to want to work on large areas with most of the points for a decent period of time, it might be better to use "snapshot" mode and take the initial hit of downloading all the data when the application loads. Experiment to see what works best.

 

Click here for a demo of on demand retrieval.

 

Consider clustering your point data

Clustering involves "lumping together" points at smaller map scales, so you don't display the invidual points, just a single marker with a label that denotes the number of points that marker actually represents.

 

Esri has a really nice sample  that shows you how to do this using the Class Breaks Renderer on the Resources Center.

 

Do you need to see ALL points at ALL scales?

If you can get away with only showing certain features at certain scales, use scale-dependent rendering. Features can be hidden or displayed only at certain scale levels.

 

See an example:

 

So you can see that with a bit of creative use of the API, even layers with gazillions of point features can prevent us from using them in our web applications!


 __________________________________________________________________

 

ArcGIS Server - Understanding the Proxy Page and CORS

 

One thing that appears to cause more confusion than anything else among beginner users of the ArcGIS Server API for JavaScript is the use of the proxy page and CORS. Let's see if we can clear up that confusion once and for all.

 

Before we get into the actual mechanics of working with the proxy page and CORS, let's briefly outline what problem they are trying to solve.

 

In web development, if you build an application on your web server at http://www.mywebserver.com and then try and request a resource residing on another server (such as a map service running on ArcGIS Online) then the default behavior is to disallow the request. Why? Because it is considered a security risk. This "same origin policy" is there to prevent a malicious script on one page from obtaining access to sensitive data on another web page.

 

Which is all well and good as a general principle, but really gets in the way of things when we're building web mapping applications which routinely pull in all sorts of different services residing on different hosts.

 

There have been a number of different workarounds for this, but the ones that interest us most as ArcGIS Server API for JavaScript developers are CORS and the proxy page.

 

CORS stands for Cross Origin Resource Sharing. It is an extension to the standard HTTP protocol that allows servers to use new headers in their requests (Origin, and Access-Control-Allow-Origin) which explicitly allow access to resources on other servers that would otherwise have been forbidden by the same origin policy.

 

In order for your web application to use CORS, two things have to happen:

  1. Your browser must support it. Many modern browsers do, but you can check yours at http://caniuse.com/#feat=cors
  2. The server that hosts the resource that you want must also support CORS. ArcGIS Server 10.1 and above supports CORS out of the box, but there are still many servers out there (including some of Esri's own servers) that don't.

Assuming both these things are in place, then you are good to go.

 

If you cannot rely on CORS, then you need to install and configure a proxy page on your web server. Instead of sending the request for the remote resource directly to the web server that hosts it, your application sends the request to the proxy page on your server first, and the proxy then forwards the request to the remote server. It then relays the response returned by the remote server directly back to your application.

 

Because the connection is made to your server, and the data from the resource your requested comes back from your server, the browser does not complain about your web application and the resource that you are interacting with being on different hosts. It's really that simple!

 

So now you know how the proxy works, and all you need to do is pick the right one for your web server, configure it, and tell your application where it is. Thankfully, Esri's documentation on that is really good.

 

Hopefully the time will come when everything supports CORS, but until then you need to make provision for those browsers and ArcGIS servers that don't by using the proxy page.

_______________________________________________


Join the GIS Training & Education LinkedIn Group

 

This group provices announcements and links to GIS, GPS, and other geospatial technology training and education events and seminars. Please feel free to post announcements of traditional face to face instructor led, or e-learning opportunities available over the web. 

 

Join the Group 

 

____________________________________________

 

Python Basics Webinar Recordings Available


Please visit our blog to catch up on our 7 Python Basics Webinar recordings.  

  

_______________________________________________________

 

10 Common Python Errors of Beginning ArcGIS Programmers

 

Over the years I have taught hundreds of beginning level Python programmers how to automate their ArcGIS geoprocessing tasks.   Needless to say I have seen all sorts of errors.  But there are some common errors that I see over and over again.  So if you're a beginner level Python programmer working with ArcGIS hopefully this will help get you over the hump.  Below you will find my list of the 10 most common errors in no particular order.

 

Click here to read the 10 common Python errors that beginners make.

GeoSpatial Training Services provides customized e-learning and instructor led GIS training and communication solutions that assist our clients in achieving excellence in the geotechnology industry.

 

Sincerely,

 


Eric Pimpler
GeoSpatial Training Services, LLC

Social

Popular Courses 
GISCI