Assignment

Assignment jed124

For this week's assignment, please select from one of the scenarios below.  Regardless of the scenario you choose, I'd like you to follow these guidelines:

  • Use the JavaScript prompt() method to ask the user for a subset of data to map (e.g., a state).  We'll see better methods for getting user input and return to your selected scenario to "do it right" in the next lesson.
  • Configure your app so that appropriate information is displayed through pop-up windows.
  • Use ColorBrewer to obtain logical color values.
  • Look at the service in the ArcGIS Online Map Viewer or ArcGIS Pro to get a sense of its data fields and values.

Before reading over all of the scenarios, go to the sign-up page in Canvas to see which of them are still available. Here are the scenarios:

  1. 2020 U.S. Presidential election
    Using this U.S. Presidential election feature service, prompt the user for a state, then display a county-level map of the voting in that state. Use ClassBreaksRenderer to display the margin of victory for either candidate. Set up class breaks like 0-10%, 10-20% and >20% with smaller-margin counties drawn in a light shade of blue/red and the larger-margin counties in a dark shade. The best way is to set the renderer's valueExpression property to an Arcade expression that calculates the value for mapping.  Note: If you'd prefer to map a different election, such as 2024 (I couldn't find a service with county-level data for that election), that's possible.  Just run your idea by me first.
  2. World cities
    Using the World cities feature service, prompt the user for a continent, then display the cities in that continent symbolized by population (varying either size or color). This scenario is a bit trickier than the others in that there is no continent identifier in the Cities layer. To identify the correct cities, you can query this Continents feature service to get the polygon geometry of the selected continent, then use a spatial query to find the appropriate features in the Cities layer.
  3. U.S. National Parklands
    Using the U.S. National Park lands feature service, prompt the user for a National Park Service region, then display the parklands within that region. Use different symbols for the common park types (National Monument, National Historic Site, National Park, National Historical Park, National Memorial) and depict all other types in a class called Other.
  4. U.S. County Demographics
    Using this Popular Demographics of the United States feature service, prompt the user for a state and display the counties in that state based on the proportion of its population comprised of a generation of your choice (Greatest Generation, Baby Boomer, Gen X, Millennial, or Gen Z). Don't worry that the service is listed as deprecated; the updated version is in beta and requires a subscription.  Make sure you base your app on the county layer, not the web map.  Similar to the election scenario, you can calculate the population percentage using valueExpression and an Arcade expression in either ClassBreaksRenderer or VisualVariable.
  5. Alternative fuel stations
    Using the alternative fuel stations feature service, prompt the user for a state, then display the alternative fuel stations in that state. Use PictureMarkerSymbol to show the fuel types as appropriate icons. I've put together a set of free icons.
  6. 2016 EU Referendum in the UK
    Using this 2016 EU Referendum feature service, prompt the user for a region (e.g., Northern Ireland, North East, North West), then display the voting districts in that region based on their remain/leave vote. The remain/leave vote percentages add to 100, so you can safely base your ClassBreaksRenderer on one of the two percentage fields.  As with the presidential election scenario above, set up vote margin classes like 0-10%, 10-20%, >20% and use shades of one color to depict the remain districts and shades of another color to depict the leave districts.  Note: this service will not display properly in a SceneView using SDK version 4.8 or higher.  So use a MapView or version 4.7 of the SDK.
  7. Wildfires
    Using this Historic Wildfire Perimeter Service, prompt the user for a year (between 2000-2018), then display the fire perimeters from that year.  Render the layer by fire size in acres using either ClassBreaksRenderer or VisualVariable with an appropriate color ramp.
  8. Hurricanes
    Using this Hurricane feature service from Living Atlas, prompt the user for a year, then display hurricanes from that year.  The service has a default symbology, but I'd like you to override that using dotted lines (in a 2D Renderer because it's not available in 3D) rather than solid and a light-to-dark color ramp to indicate the hurricane category (using the Wind_Speed field).  You'll find the ClassBreaksRenderer class to be helpful. 

Note: ArcGIS Server-hosted feature services are configured by default to return a maximum of 1000 features.  This limitation comes into play for some of the scenarios above and is clearly not ideal.  The publisher of the service has the ability to override this setting, but app developers like yourselves do not.  One solution for developers is to query the service recursively, such that the full set of features is retrieved in 1000-feature chunks.  If you found that you were able to complete the assignment fairly easily, you might consider researching and attempting such an approach.  But we will not be expecting you to work out a solution to this problem if it affects your app.

Final Project Initial Concept

Review the Final Project requirements. Think about what topic you'd like to use as the basis for the final project app and post your ideas in the Lesson 7 discussion forum. This does not need to be a complete proposal, but I want to know you've started thinking about it. What would you like to do or display? Have you identified any data to use? Is there any specific interactivity you'd like to include or explore? 

This is only a concept, so your idea can evolve or completely change over the next few weeks. You won't be evaluated based on what you propose now, and it's also OK if you don't know some of these details yet. At a minimum, I want to know you are thinking about a topic. I'm sure you're ideas about interactivity will evolve over the next few weeks, too. If you are unsure about something, share that too. 

Please also read through other students' responses and share any helpful thoughts you have about their concepts. 

Deliverables

This project is one week in length. Please refer to the Canvas course Calendar for the due date.

  1. Remember to sign up for a scenario before you start working on it.
  2. Edit your e-Portfolio so that it includes a link to your map, and post a link to your e-Portfolio through the Assignment 7 page.  (80 of 100 points)
  3. Beneath the map or on your e-Portfolio page, provide a short description of your app and how you approached solving this project. Reflect on what you learned from the lesson, what you found challenging, and include what resources you used to get your code right.  (20 of 100 points)
  4. Post your initial ideas for the final project app in the Lesson 7 discussion forum. (Ungraded, but -5 if missing)
  5. Complete the Lesson 7 quiz.