Exploring Optimization and Equity in EV Charging Station Placement
Advisor: Dr. John Hight
Internship Location: Greater Washington Region Clean Cities Coalition
Onsite Mentor: Tracey Thompson
Electric Vehicle (EV) adoption is becoming increasingly widespread and necessitates the development of charging infrastructure to support it. The rise of EV charging presents cities with the complex task of navigating infrastructural expansion efficiently and cost-effectively and carries implications for a growing inequity gap. Historically, access to clean energy, including electric vehicle access, has been correlated with certain demographic and geographic trends. Regional lack of public charging infrastructure is a common barrier to entry, a limiting factor to EV adoption on the individual level. It is important to address this issue from a data-driven perspective, in order to understand historical patterns and to optimize for intentional equitable and efficient solutions. The goal of this project is to explore how geospatial technology and public data can be used to reveal patterns in the EV landscape and contribute to a better understanding of equity-related and broader EV placement considerations. The specific research will consist of a case study of Washington, D.C. and will be conducted through work with the Greater Washington Clean Cities Coalition.
Project Blog
Post 1: Introduction: Creating an EV Charging Ecosystem in the DMV
I have always been interested in environmentalism. While often framed as concerns for the future, issues such as emissions and global warming are problems that require future-facing solutions today. I believe it is the responsibility of the current generation to come together to drive change. That is what led me to seek out an internship with the Greater Washington Region Clean Cities coalition. After starting an internship there, I was given several options for projects to choose from. I became interested in the Mid-Atlantic Electrification Partnership (M.A.E.P.), where the aim is to create an EV ecosystem in the DMV. Effective electric vehicle station placement is a significant part of the electrification issue and a priority for the organization. From a learning perspective, I saw this project as a way to explore my interests in data and technical analysis while contributing to this important mission. It also provides me with the opportunity to work hands-on with real public data and develop familiarity with new technical tools, such as ArcGIS. I am excited that this project will allow me to further develop my technical capabilities and strengthen my understanding of data analysis tools, while also contributing to a real-world issue I care about. It also provides an opportunity to observe how data shapes the world around me in real time.
Week 5: Proving Viability
This week, I completed setup for the environment where my senior project will be housed: ArcGIS Online with the ArcGIS API for Python. I also had the first section of my data pipeline execute successfully. The bulk of the work was applying for a National Renewable Energy Laboratory (NREL) Alternative Fuels Station API key, then coding the initial script to query it. The ability to grab active charging-station locations, rather than relying on a static snapshot of data, is one of the core design goals of the tool, ideal for a planner coming in later to have a current picture of the infrastructure. Having that process work start-to-finish, even in a first rough pass, means the assumption of being able to work with live data that underlies the whole project has now been confirmed as viable. I also built out the script framework for the two major components: the coverage heatmap and the public facilities ranking. With that out of the way, I’ll be able to jump right into generating and visualizing buffers next week. Speaking of, my plan for next week is to work towards the completion of the first script (current station coverage heatmap), which will involve loading the NREL stations as an ArcGIS feature layer and creating 0.5-mile buffers to produce the charging infrastructure coverage heatmap.
Week 6: Developing the First Piece of the EV Coverage Script
The objective of this past week was to develop the first functional component of the EV coverage analysis Python script: to access live EV charging station data from an API and to integrate it into ArcGIS Online (AGOL) for future mapping and analysis. The first step I took was setting up an API key through the National Renewable Energy Laboratory, or NREL, which allows for continual access to the Alternative Fuels Station database, which keeps track of EV charging stations throughout the country, updating constantly with new data. Successful data retrieval using the API was a critical step, as one of the core components of the tool in development is the ability to access live data. Written in Python and using only the lightweight “requests” library, load_ev_stations.py is free from dependency on larger GIS-specific packages. The script authenticates with AGOL using OAuth2 and queries the NREL API for publicly available Level 2 and DC Fast Charger stations in Washington, DC. Results are uploaded to a feature layer titled GA_EV_Stations_DC.
There were some technical hurdles along the way. The NREL API only returns 200 records per call, and their paging function did not appear to work (it kept returning duplicate records). In order to address this, I split our zip codes into two groups, querying the two separately and removing any duplicates according to station ID. The run resulted in the successful accounting for of all 246 relevant stations in DC. One crucial design change I made along the way was related to how the script handles being run multiple times. The original logic merely resulted in a clearing of the feature layer, refreshing from scratch every time. That's fine for a proof of concept but wouldn't work for a tool that someone would run repeatedly, as it would delete any edits or notes they added to the layer. Rather than deleting and reloading all of the data every time, the script now "smart syncs" by only appending new stations and deleting old ones (matched by ID), leaving pre-existing records intact. This allows users to manually edit station info or make annotations without worrying about losing that data if they need to re-run the tool.
Week 8: From Data to Desktop App
This was the most technical week on the project so far. The EV Coverage Analysis Tool reached a point where it operated as a cohesive end-to-end workflow: live data pipeline, hexagonal coverage heatmap, facility ranking engine, and finally a professional Windows desktop app to pull it all together. The heatmap evolved past basic point buffers to a hexagonal binning system, dividing DC into equal-area hexagons, each of which is scored by how many EV station service areas intersect it, weighted by population of the underlying census block group. This results in a coverage map much more useful for planning purposes than a basic point layer. The facility ranking algorithm was also improved; it takes a user-supplied Excel spreadsheet of candidate sites as input, buffers each by 0.5 miles, intersects those buffers with unserved census block groups, totals the population reachable, and produces a normalized 0-1 score per site. The path to the Excel input file was replaced by a file picker dialog so any user can supply their own data without modifying the code. Each of the three operations (sync EV stations from NREL, rebuild the heatmap, rank candidate sites) can now be accessed from a single desktop application (app.exe). The dark-themed GUI displays live console output to a built-in log window and has a status bar indicating idle/running/complete status. It was compiled into a standalone windows executable with PyInstaller, so it can run on any Windows machine regardless of Python installation. Now, one click of a button will run the full pipeline from start to finish.
Week 9: Project Finalization and Draft Revision
This week was largely split between finalizing my work and submitting the first full draft of my paper to my advisor for review, followed by responding to his revisions with specific changes. Having worked on both the technical and writing sides of my project for several weeks now, this week was when everything came together as one finalized document. The introduction, literature review, methods, results, and conclusion were all reviewed and refined before I submitted the draft to my senior project advisor.
My advisor had two main critiques in response. The first pertained to how the tool only uses two measures (existing coverage and population density) and how there could be more nuance on the equity and demand sides of the analysis, especially considering that EV cost barriers may pose a larger limitation than lack of infrastructure in lower-income neighborhoods. The second critique was that the density of chargers in downtown DC isn't only an issue of wealth inequality, that charging stations cluster near workplaces for the convenience of commuters with EVs. I took his feedback and clarified the paper language to note that the tool was meant to be a prioritization framework rather than a definite siting tool and that the output was meant to be further analyzed by planners with their city's context in mind. Additionally, it serves as a proof-of-concept for the efficacy of a lightweight, open-architecture tool. I also rearranged the literature review into two paragraphs and included an inline definition of “greedy algorithms” to increase readability.