- How much data?
- Just enough
- Too much in a confusing way, but each points data is important?
- Cluster your points with Leaflet.markercluster
- Too much and the points have some value that can be aggregated
- Create hexbins of your points with the QGIS hexbin plugin, to make polygons. Start again at Polygons
- Too much and the points just represent presence - like tweets
- Create a heatmap with Leaflet.heat or QGIS heatmap plugin. If you use QGIS heatmap, start again at Raster.
- Tons of data, and you don't need labels? Use tippecanoe.
- How much data?
- Just enough
- Convert the data to GeoJSON & make a simple Leaflet map
- Too much, the polygons have necessary detail
- Too much, the polygons have unnecessary details
- Just enough
- What kind of attributes?
- Absolute numbers
- Convert the points to centroids with QGIS and start from Points
- Normalize absolutes to rates by dividing over polygon area, and start from Rates
- Rates or Categories
- Temporal data - values over time
- If there are fewer than 100 samples - like 50 years of data grouped by year, make small multiples: a map per sample.
- If you can code, make an animation with Leaflet or d3.js
- If it's tons of data, use CartoDB and torque
- Multivariate data: like counts of different species or ethnicities
- Make a dot density map with englewood
- Names of places, like countries
- With IDs:
- ISO2 or ISO3 codes
- Download Natural Earth data at the right level, join with QGIS, and start again at Polygons
- ZIP codes
- Download ZCTAs and join
- ISO2 or ISO3 codes
- Without IDs
- Find data with IDs, or manually join with polygons
- With IDs:
- Addresses
- You can't map addresses directly. Geocode them with OpenRefine or Geo for Google Docs, and then start at Points
- Other Geocoding options:
- US: US Census
- Canada: Geogratis
- OpenStreetMap: Nominatim
- Data Science Toolkit can be useful for local bulk geocoding that would be too much for a hosted service.
- geocoding libraries
- node - node geocoder
- Perl - Geo::Coder::Many
- PHP - Geocoder PHP
- Python - geopy
- Ruby - Ruby Geocoder
- Absolute numbers
- Small amounts of data: use Leaflet
- Lots of data, or need line labels (are they streets?)? Use TileMill
- Tons of data, and you don't need line labels? Use datamaps.
- Already georectified & cleaned (from satellites or fixed-up sources)
- Render a map with TileMill and use the tiles in Leaflet
- Read processing satellite imagery to understand GDAL/ImageMagick workflow.
- Raster images from drones
- Raster images from scanned maps
- Use MapKnitter to georeference and georectify
- Install GDAL and use ogr2ogr to convert the file. If you can't install this, you can use it online with Ogre
- Commercial tools:
- Ask your source for a better file format
- I want raw data right from the source, up to the minute, in its original form? planet.osm
- Drawbacks: downloads are very large and require specialized tools to process
- I want raw data for subsets of the world: Geofabrik extracts or Mapzen metro extracts
- Drawbacks: only includes predefined areas, not as up-to-date as Planet.osm
- I want data useful for fast basemaps, already processed into vector tiles: Mapbox
- Drawbacks: doesn't include all features or all tags on features, only those appropriate for visualization
- I want raw data as tiles, which include more data and complete tags: OSM QA Tiles
- Drawbacks: much larger & slower than tiles designed for visualization
- I want a specific subset of data by area, filter, and want the newest data possible: Overpass
- Drawbacks: can't return country-sized chunks of data, only smaller subsets
- I want filtered, up-to-date extracts in extra formats like KMZ, Garmin Image, etc: HOT Export Tool
- Drawbacks: can't do arbitrary regions
- Government Data
- Contact the town or federal GIS dept you need
- Use FOIAMachine.org to request data via FOIA
- Personal Data
- If you want to create data, use geojson.io and draw it.
- Global Data
- For basic data like countries, cities, use naturalearthdata.com
- Use OpenStreetMap extracts for higher-detail local data
- Historical Data
- NYPL MapWarper for historical, scanned (raster) maps
- Greek & Roman: Pleiades
- Projection:
- If it's a web map with tiles, use Spherical Mercator
- If using d3 and not using tiles anywhere, use whatever fits best. Bonus projections are in d3-geo-projection.
- Have a project and not sure what it is? Use epsg.io.
- Colors:
- When in doubt, use ColorBrewer
- Want to know more? Read Subtleties of Color
- Scales:
- For any data
- Try linear first
- Then quantile
- For data of rates or compounding values
- Try log and power scales
- For any data
- Points:
- Start with normal circles with no strokes
- Scale points by area, not diameter
- Flair:
- Only add a north arrow if north isn't up
- Always attribute your data, especially OpenStreetMap, to avoid the nerd wrath
- If it zooms, add visible zoom controls. Pan isn't necessary, but not everyone has a scroll wheel / multitouch