Each lesson in this course includes some simple practice exercises with Python. These are not submitted or graded, but they are highly recommended if you are new to programming or if the project initially looks challenging. Lessons 1 and 2 contain shorter exercises, while Lessons 3 and 4 contain longer, more holistic exercises. Each practice exercise has an accompanying solution that you should carefully study. If you want to use the USA.gdb referenced in some of the solutions you can find it here.
Remember to choose File > New in Spyder to create a new script (or click the empty page icon). You can name the scripts something like Practice1, Practice2, etc. To execute a script in Spyder, click the "play" icon.
- Say hello
Create a string variable called x and assign it the value "Hello". Display the contents of the x variable in the Console.
Practice 1 Solution
- Concatenate two strings
Create a string variable called first and assign to it your first name. Likewise, create a string variable called last and assign to it your last name. Concatenate (merge) the two strings together, making sure to also include a space between them.
Practice 2 Solution
- Pass a value to a script as a parameter
Example 1.6.4 shows the use of the arcpy.GetParameterAsText() function. This function is typically used in conjunction with an ArcGIS script tool that has been designed to prompt the user to enter the required parameters. However, it is possible to supply arguments to the script from within Spyder. To do so, you would select Run > Configuration per file, check the Command line options checkbox, then enter the arguments something like this:
C:\PSU\geog485\Lesson1\us_cities.shp C:\PSU\geog485\Lesson1\us_cities_buffered.shp "10 miles"
Note that the arguments to the two feature class parameters are unquoted, while the argument to the buffer distance string parameter is provided in double quotes.
For this exercise, write a script that accepts a single string value using the GetParameterAsText method. The value entered should be a name, and that name should be concatenated with the literal string "Hi, " and displayed in the console. Test the script from within Spyder, entering a name (in double quotes) in the Command line options text box as outlined above prior to clicking the Run button.
Practice 3 Solution
- Report the geometry type of a feature class
Example 1.6.2 demonstrates the use of the Describe function to report the spatial reference of a feature class. The Describe function returns an object that has a number of properties that can vary depending on what type of object you Described. A feature class has a spatialReference property by virtue of the fact that it is a type of Dataset. (Rasters are another type of Dataset and also have a spatialReference property.)
The Describe function's page in the Help lists the types of objects that the function can be used on. Clicking the Dataset properties link pulls up a list of the properties available when you Describe a dataset, spatialReference being just one of several.
For this exercise, use the Describe function again; this time, to determine the type of geometry (point, polyline or polygon) stored in a feature class. I won't tell you the name of the property that returns this information. But I will give you the hint that feature classes have this mystery property not because they're a type of Dataset as with the spatialReference property, but because they're objects of the type FeatureClass.
Practice 4 Solution
- Do some simple math and report your results
Create a variable score1 and assign it a value of 90. Then create a variable score2 and assign it a value of 80. Compute the sum and average of these values and output to the Console the following messages, filling in the blanks:
The sum of these scores is ______.
Their average is ______.
In constructing your messages, you're probably going to want concatenate text strings with numbers. We'll cover this more in Lesson 2, but this requires converting the numeric values into strings to avoid a syntax error. The str() function can be used to do this conversion. For example, I might output the score1 value like this:
print('Score 1 is ' + str(score1))
Practice 5 Solution