Since your server is timing out, do it this way: On your regular computer, download this ZIP: https://www2.census.gov/geo/tiger/GENZ2024/shp/cb_2024_us_state_500k.zip Upload the ZIP to your server folder: /var/www/html/students/tools/mapoutlines/ State Name: Alabama State Initials: AL Capital City: Montgomery Map Format: geojson cd /var/www/html/students/tools/mapoutlines wget https://www2.census.gov/geo/tiger/GENZ2024/kml/cb_2024_us_state_500k.zip ogrinfo cb_2024_us_state_500k.shp cb_2024_us_state_500k -where "STUSPS='AL'" sudo apt update sudo apt install gdal-bin extract_all_50_states.sh #!/bin/bash SHAPEFILE="cb_2024_us_state_500k.shp" OUTDIR="state_geojson" if [ ! -f "$SHAPEFILE" ]; then echo "ERROR: Cannot find $SHAPEFILE" echo "Put this script in the same folder as:" echo " cb_2024_us_state_500k.shp" echo " cb_2024_us_state_500k.dbf" echo " cb_2024_us_state_500k.shx" exit 1 fi mkdir -p "$OUTDIR" STATES="AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY" for STATE in $STATES do echo "Creating $OUTDIR/$STATE.geojson" ogr2ogr \ -f GeoJSON \ "$OUTDIR/$STATE.geojson" \ "$SHAPEFILE" \ -where "STUSPS='$STATE'" done echo echo "Done. GeoJSON files saved in: $OUTDIR" chmod +x extract_all_states.sh ./extract_all_states.sh A few ideas for future enhancements to your state map project: Student Activities State identification quiz Click-the-state challenge State capitals quiz State abbreviations quiz State symbols scavenger hunt State report generator Printable state fact sheets Teacher Features Track student scores Assign specific states Random state generator State study guides Printable blank maps State coloring pages Map Features Zoom into a state Highlight neighboring states Show state capitals Toggle rivers, mountains, and major cities Color states by region Interactive labels -------------------------------------------------------------- worldmaps ---------------------------------------------------------------- CREATE DATABASE IF NOT EXISTS worldmaps CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE worldmaps; CREATE TABLE countries ( id INT AUTO_INCREMENT PRIMARY KEY, country_name VARCHAR(150) NOT NULL, country_code CHAR(3), capital_city VARCHAR(150), continent VARCHAR(100), region VARCHAR(150), population BIGINT, land_area_sq_km BIGINT, currency VARCHAR(150), official_languages TEXT, government_type VARCHAR(255), major_rivers TEXT, major_mountains TEXT, climate TEXT, famous_landmarks TEXT, natural_resources TEXT, important_history LONGTEXT, famous_people TEXT, fun_facts LONGTEXT, flag_image VARCHAR(255), map_coordinates LONGTEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY (country_code) ); Natural Earth file ? extract each country GeoJSON ? import into MySQL ? clickable world map https://www.naturalearthdata.com/downloads/10m-cultural-vectors/?utm_source=chatgpt.com ogrinfo ne_10m_admin_0_countries.shp -so ne_10m_admin_0_countries To extract a country: ogr2ogr \ -f GeoJSON \ France.geojson \ ne_10m_admin_0_countries.shp \ -where "ADMIN='France'" Automatically Create All Countries This command lists all country names: ogrinfo ne_10m_admin_0_countries.shp \ -sql "SELECT ADMIN FROM ne_10m_admin_0_countries" Then a shell script can loop through them and generate: countries_geojson/ +-- Afghanistan.geojson +-- Albania.geojson +-- Algeria.geojson +-- ... +-- United_States_of_America.geojson +-- Philippines.geojson +-- Kiribati.geojson +-- Zimbabwe.geojson alternatively, go to github https://github.com/johan/world.geo.json?utm_source=chatgpt.com This repository already contains: countries/ +-- us.geo.json +-- fr.geo.json +-- ph.geo.json +-- ki.geo.json ... which may actually be easier for your worldmaps project because each country is already separated into its own GeoJSON file. For your PHP/MySQL setup, I'd recommend the Natural Earth ZIP because it is complete, consistent, and easy to automate into a countries table just like your states table.