Using the Cambridge (Massachusetts) GIS data, we can compute some interesting geospatial statistics.
Subway stations
Using the address points (20844 points) and the subway stations data files, we can find out how many Cambridge addresses are in a certain radius of a Cambridge subway station. More particularly, we want to find the percentage of Cambridge addresses less than 1/8, 1/4 and 1/2 mile from a Cambridge subway station.
- Less than 1/8 of a mile: 3%
- Less than 1/4 of a mile: 14%
- Less than 1/2 of a mile: 57%
Note: You can have many people living at the same address point.
Note: This does not take into consideration subway stations outside Cambridge.
Note: Distance is a straight line between two points.
Bus shelters
We can perform the same calculation as above but with bus shelters (55 in Cambridge).
- Less than 1/8 of a mile: 26%
- Less than 1/4 of a mile: 68%
- Less than 1/2 of a mile: 99%
Note: This does not take into consideration bus shelters outside Cambridge.
Sports areas
We can find the percentage of Cambridge addresses less than 1/8, 1/4 and 1/2 mile from a sports area. In addition, we can do the same calculation for a specific sports area type:
A sport area (265 in Cambridge)
- Less than 1/8 of a mile: 66.8%
- Less than 1/4 of a mile: 95.8%
- Less than 1/2 of a mile: 99.9%
Basketball sport area (34 in Cambridge)
- Less than 1/8 of a mile: 31.3%
- Less than 1/4 of a mile: 75.3%
- Less than 1/2 of a mile: 99.3%
Tennis sport area (18 in Cambridge)
- Less than 1/8 of a mile: 7%
- Less than 1/4 of a mile: 31%
- Less than 1/2 of a mile: 80%
Park sport area (1 in Cambridge)
- Less than 1/8 of a mile: 0.02%
- Less than 1/4 of a mile: 1.48%
- Less than 1/2 of a mile: 10.17%
Field sport area (24 in Cambridge)
- Less than 1/8 of a mile: 10%
- Less than 1/4 of a mile: 38%
- Less than 1/2 of a mile: 89%
Baseball sport area (23 in Cambridge)
- Less than 1/8 of a mile: 14%
- Less than 1/4 of a mile: 48%
- Less than 1/2 of a mile: 92%
Playground sport area (138)
- Less than 1/8 of a mile: 58%
- Less than 1/4 of a mile: 93%
- Less than 1/2 of a mile: 100%
Note: This does not take into consideration sports areas outside Cambridge.
Neighborhoods
One data file lists the different neighborhoods, 13 in total:
- Area Four
- Neighborhood Nine
- Area 2/MIT
- Cambridgeport
- Riverside
- Mid-Cambridge
- Wellington-Harrington
- East Cambridge
- Agassiz
- Cambridge Highlands
- Strawberry Hill
- West Cambridge
- North Cambridge
Single-Family assessed value
Using two data files, we can find out the average assessed value for a single-family house per neighborhood. Here are the results sorted from most expensive to least expensive:
- West Cambridge – $1507544
- Neighborhood Nine – $1451155
- Agassiz – $1075459
- Mid-Cambridge – $786673
- Riverside – $712027
- Strawberry Hill – $707192
- Area 2/MIT – $599264
- Cambridgeport – $592257
- North Cambridge – $534844
- Cambridge Highlands – $507051
- Area Four – $505535
- Wellington-Harrington – $456673
- East Cambridge – $407907
Single-Family assessed value per sq. ft.
We can also perform a similar calculation per sq. ft. Here are the results sorted from most expensive to least expensive:
- West Cambridge – $318
- Neighborhood Nine – $318
- Agassiz – $287
- Mid-Cambridge – $261
- Riverside – $253
- Area 2/MIT – $225
- Cambridgeport – $223
- Cambridge Highlands – $222
- Wellington-Harrington – $208
- Strawberry Hill – $207
- North Cambridge – $204
- East Cambridge – $203
- Area Four – $200
Condo assessed value
- Agassiz – $603000
- West Cambridge – $591502
- Neighborhood Nine – $581251
- Mid-Cambridge – $483449
- Riverside – $470751
- Cambridge Highlands – $449725
- Area 2/MIT – $431406
- Cambridgeport – $422049
- North Cambridge – $410023
- Strawberry Hill – $387065
- Area Four – $384520
- Wellington-Harrington – $366460
- East Cambridge – $357547
Condo assessed value per sq. ft.
- West Cambridge – $395
- Neighborhood Nine – $387
- Agassiz – $382
- Mid-Cambridge – $376
- Riverside – $371
- Cambridge Highlands – $338
- Area 2/MIT – $334
- Cambridgeport – $334
- Wellington-Harrington – $335
- Area Four – $335
- East Cambridge – $335
- North Cambridge – $330
- Strawberry Hill – $313
Vegetation
There is a data file listing areas with concentration of vegetation. Here is their definition: “Vegetation is a wooded area with a group or high density of trees.”
Each of those is a polygon. We can find which neighborhoods contain which vegetation polygons and calculate the total area of vegetation per neighborhood. Which neighborhood has the most vegetation? It is “Cambridge Highlands” thanks to the Fresh Pond vegetation. “Cambridge Highlands” contains 32% of the total vegetation in Cambridge followed by “North Cambridge” with 26%. Here is the full ranking:
- Cambridge Highlands – 31.7%
- North Cambridge – 25.7%
- West Cambridge – 22.1%
- Strawberry Hill – 7.5%
- Neighborhood Nine – 4.1%
- Agassiz – 3.1%
- Area 2/MIT – 2.3%
- East Cambridge – 1.6%
- Cambridgeport – 1.5%
- Riverside – 0.2%
- Mid-Cambridge – 0.1%
- Wellington-Harrington – 0%
- Area Four – 0%
Fire Stations
There are eight fire stations in Cambridge:
- Fire Headquarters
- Fire Company 2
- Fire Company 3
- Fire Company 4
- Fire Company 5
- Fire Company 6
- Fire Company 8
- Fire Company 9
Going back to each of our neighborhood. We calculate the geometric center of each neighborhood and find out the closest fire station. Here are the results ranked by distance to the closest fire station.
- Neighborhood Nine center is 164 meters from Fire Company 8.
- East Cambridge center is 328 meters from Fire Company 3.
- Area Four center is 407 meters from Fire Company 2.
- Cambridgeport center is 492 meters from Fire Company 6.
- West Cambridge center is 534 meters from Fire Company 9.
- Riverside center is 559 meters from Fire Company 6.
- Agassiz center is 602 meters from Fire Headquarters.
- Mid-Cambridge center is 613 meters from Fire Headquarters.
- Wellington-Harrington center is 694 meters from Fire Company 5.
- Area 2/MIT center is 910 meters from Fire Company 6.
- Strawberry Hill center is 987 meters from Fire Company 9.
- North Cambridge center is 1271 meters from Fire Company 4.
- Cambridge Highlands center is 1340 meters from Fire Company 9.
Note: 1 meter ~= 1.1 yard.
Emergency Shelters
We can do the same with emergency shelters. There are 15 in Cambridge. Here are the results ranked by distance to the closest shelter.
- Wellington-Harrington center is 68 meters from Frisoli Youth Center.
- Strawberry Hill center is 111 meters from Russell / West Cambridge Youth Ctr.
- Area Four center is 138 meters from Fletcher / Maynard Academy.
- Agassiz center is 212 meters from Baldwin School.
- Mid-Cambridge center is 223 meters from Cambridge Rindge and Latin.
- Neighborhood Nine center is 469 meters from Graham & Parks School.
- Cambridgeport center is 567 meters from Morse School.
- East Cambridge center is 634 meters from Kennedy / Longfellow School.
- North Cambridge center is 715 meters from Peabody School.
- Area 2/MIT center is 782 meters from CASPAR Shelter.
- Riverside center is 838 meters from Cambridge Rindge and Latin
- West Cambridge center is 917 meters from Tobin School.
- Cambridge Highlands center is 1038 meters from Tobin School.
Intersections
One of the data file contains the streets/roads intersections. An interesting attribute is the intersecting street count. Here is the breakdown based on this attribute:
- 2 intersecting streets: 1392
- 3 intersecting streets: 109
- 4 intersecting streets: 2
The two “4 intersecting streets” intersections are the “Coolidge Hill Rd & Fresh Pond Pkwy & Gerrys Landing Rd & Mt Auburn St” intersection and the “Magazine St & Massachusetts Ave & Prospect St & Western Ave” intersection. After all, Cambridge is notorious for those type of intersections.
Note: There are 357 intersections without a number of intersecting streets so we dismissed those.
Metered parking spaces
Based on one of the data file, Cambridge has 3094 metered parking spaces. A different data file lists streets segments. Using both data, we can find out the amount of street coverage when it comes to metered parking spaces. We found out that 13% of streets segments have metered parking spaces in Cambridge.
Implementation
Python and the SnowFloat API are used here to compute those statistics. Here is how the subway stations 1/8 mile proximity statistics were calculated:
import snowfloat.client address_points_uuid = 'ecf03fb0e1f34773b53959a2c603e214' subway_stations_uuid = '32d771c0bc0641eb9fc5c2f04305ecb9' points = [] subway_stations = client.get_features(subway_stations_uuid) for subway_station in subway_stations: address_points = client.get_features(address_points_uuid, query='distance_lte', geometry=subway_station.geometry, distance=200) for address_point in address_points: for point in points: if address_point.uuid == point.uuid: break else: points.append(address_point) print len(points) / 20844.
I can publish more of the code used if needed.
More data to analyze
Here is the full list of data files the city of Cambridge made public in the geojson format. Also listed are the fields for each data file. Let me know other statistics you would like to see added to this post.
ADDRESS_AddressPoints
- address_id
- ml
- stname
- stnm
- bldgid
- full_addr
- entry
- type
- editdate
ADDRESS_MasterAddressBlocks
- unq_id2
- unq_id
- nhood
- globalid
ASSESSING_CommercialDistrictsFY2013
- dist_name
- globalid
- district
ASSESSING_CommercialDistrictsFY2014
- dist_name
- district
ASSESSING_EasementsFY2013
- globalid
ASSESSING_EasementsFY2014
ASSESSING_ParcelMapIndexFY2013
- bsize_inch_to_foot
- dsize_map_scale
- globalid
- bsize_map_scale
- pcix_no
- rotation
- dsize_inch_to_foot
ASSESSING_ParcelMapIndexFY2014
- bsize_inch_to_foot
- dsize_map_scale
- bsize_map_scale
- pcix_no
- rotation
- dsize_inch_to_foot
ASSESSING_ParcelsFY2013
- map
- globalid
- ml
- fcode
- lot
- uyear
- editdate
- editor
- approved
ASSESSING_ParcelsFY2014
- map
- uyear
- loc_id
- lot
- ml
- editdate
- editor
- poly_type
- source
- plan_id
ASSESSING_ResidentialDistrictFY2013
- globalid
- district
ASSESSING_SubParcelLinesFY2013
- globalid
ASSESSING_SubParcelLinesFY2014
BASEMAP_Bridges
- type
BASEMAP_Buildings
- top_gl
- elev_sl
- top_sl
- base_elev
- type
- elev_gl
- bldgid
- editdate
BASEMAP_Cemeteries
- type
- name
BASEMAP_Curbs
- type
BASEMAP_Decks
- elev_sl
- base_elev
- top_gl
- elev_gl
- top_sl
BASEMAP_Docks
- type
BASEMAP_Driveways
- type
BASEMAP_Fences
- type
BASEMAP_Firewalls
- type
BASEMAP_Headstones
- type
BASEMAP_MiscStructures
- top_gl
- elev_sl
- top_sl
- base_elev
- type
- elev_gl
BASEMAP_ParkingLots
- type
BASEMAP_Plazas
- type
BASEMAP_Porches
- elev_sl
- base_elev
- top_gl
- elev_gl
- top_sl
BASEMAP_PrivateWalkways
- type
BASEMAP_PublicFootpaths
- type
BASEMAP_Roads
- type
BASEMAP_RooftopMechanicals
- top_gl
- elev_sl
- top_sl
- base_elev
- type
- elev_gl
BASEMAP_RooftopSolarPanels
- top_gl
- elev_sl
- top_sl
- base_elev
- type
- elev_gl
BASEMAP_Sidewalks
- type
- editdate
BASEMAP_Stairs
- top_gl
- stair_type
- elev_sl
- top_sl
- base_elev
- type
- elev_gl
BASEMAP_SwimmingPools
- top_gl
- elev_sl
- top_sl
- base_elev
- type
- elev_gl
BASEMAP_Vegetation
- type
BASEMAP_Walls
- type
BOUNDARY_CDDNeighborhoods
- webpage
- n_hood
- name
- globalid
BOUNDARY_CityBoundary
- globalid
BOUNDARY_Zipcodes
- globalid
- zip_code
CDD_ZoningDistricts
- zone_type
- zcode
- globalid
- pud_type_new
- pud_type
CDD_ZoningOverlayDistricts
- name
- overlap
- globalid
- type
- label
- ordnum
- editdate
DEMOGRAPHICS_BlockGroups1990
- blkgrpid
- globalid
DEMOGRAPHICS_BlockGroups2000
- blkgrps_id
- globalid
- tract
- group_
- fipsstco
- stfid
DEMOGRAPHICS_BlockGroups2010
- awater10
- tractce10
- aland10
- blkgrpce10
- funcstat10
- namelsad10
- countyfp10
- statefp10
- mtfcc10
- geoid10
- intptlat10
- intptlon10
DEMOGRAPHICS_Blocks1990
- pop100
- tractblk
- globalid
DEMOGRAPHICS_Blocks2000
- pop_lab
- fipsstco
- block_id
- globalid
- stfid
DEMOGRAPHICS_Blocks2010
- name10
- blockce10
- tractce10
- complete
- awater10
- aland10
- statefp10
- funcstat10
- countyfp10
- intptlat10
- mtfcc10
- geoid10
- intptlon10
- followup
- comments
DEMOGRAPHICS_Tracts1990
- globalid
- tract
DEMOGRAPHICS_Tracts2000
- fipsstco
- stfid
- tractid
- globalid
- trt2000
DEMOGRAPHICS_Tracts2010
- name10
- awater10
- tractce10
- aland10
- statefp10
- funcstat10
- namelsad10
- countyfp10
- intptlat10
- mtfcc10
- geoid10
- intptlon10
DPW_LitterBarrels
- globalid
- park_distr
- location
- owner
- id
- man
- type
DPW_PedestrianRamps
- ramp_line_
- f_puddle
- f_total
- f_slope
- globalid
- f_cond
- f_total06
- sw_width
- f_align
- lip
- location
- slope_comp
- total_ramp
- puddling
- material_t
- opening_wi
- condition
- f_open
- date
- contract
DPW_StreetTrees
- diameter
- trunks
- creator
- growspac
- location
- streetnumber
- species
- inspectr
- otherriskfactors
- riskrating
- globalid
- sitetype
- sidewalkobstruction
- treeid
- probabilityoffailure
- probabilityoftargetimpact
- overheadwires
- sizeodefectiveparts
- memtree
- created
- modified
- def_cult
- streetname
- notes
- ownership
- formersitetype
- removaldate
- treecondition
- cultivar
- treegrate
- plantdate
- sidewalkwidth
- treegrateactionreq
- adacompliant
- posd
- dw
- rt
- speciesshort
- d
- lean
- structuralissues
- cr
ELECTIONS_CongressionalDistricts
- editdate
- congressman
- name
- district
- party
ELECTIONS_PollingLocations
- w_p
- location_note
- location
- globalid
- address
- editdate
ELECTIONS_StateRepDistricts
- editdate
- party
- rep
- district
ELECTIONS_StateSenateDistricts
- senate
- editdate
- senator
- party
ELECTIONS_WardsPrecincts
- ward
- totalpop
- wardprecinct
- precinct
HEALTH_HealthClinics
- phone
- site_name
- globalid
- address
- editdate
HEALTH_Hospitals
- phone
- site_name
- globalid
- address
HISTORICAL_HistoricDistricts
- name
- globalid
HISTORICAL_HistoricalCPA
- dollaramnt
- globalid
- project
- printedmapid
- granttype
- buildingid
- fiscalyear
- grantid
HISTORICAL_HistoricalMarkers
- name
- neighborhood
- marker_type
- globalid
- address
- description
HISTORICAL_LandmarksEasements
- globalid
- ml
- property_t
- historic_n
- lot
- address
- block
- editdate
HISTORICAL_NationalRegisterHistoricPlaces
- globalid
- nrdis
- location
- labelname
- shape_leng
- histname
- street
- aka
- st_num
- nrind
- pres_restr
- nhl
- doe
HISTORICAL_NhoodConservationDist
- name
- globalid
HYDRO_Floodplains
- sfha_tf
- fld_ar_id
- percentage
- source_cit
- fld_zone
- floodway
HYDRO_WaterBodies
- type
- name
HYDRO_Wetlands
- complants1
- globalid
- wtdescript
- datasource
- wtsystem
- namelocati
- wtsubsyste
- wtlnd_id
- complants2
INFRA_Billboards
INFRA_Drainage
- type
- name
INFRA_Hydrants
- globalid
- subtype
- contractauthority
- lasteditdate
- enabled
- ancillaryrole
- hydrant_id
- lasteditor
- gate
- rotation
- lifecyclestatus
- hydrant_gpm
- installdate
- lastsource
INFRA_OverheadSigns
INFRA_ParkBenches
INFRA_StreetLights2010Flyover
- elev
INFRA_StreetLightsNSTAR2005
- point_subt
- npole_tag
- symbol
- lmp_type
- oldnode_ta
- ver_end
- oldpoint_t
- globalid
- str_des
- equip_locn
- phase__id
- object__id
- no_lamp
- ver_id
- lock__id
- str_name
- group_id
- pole_type_
- intersecti
- oid_
- lumens
- feature_st
- ntag
- point_tag
- point_type
- bracket_cd
- lmp_class_
- cntl_ty
- err_desc
- err_flag
- lamp_id
INFRA_UtilityFacilities
- type
- site_name
- globalid
- address
INFRA_UtilityPoles
- elev
LANDMARK_DayCareFacilities
- site_name
- globalid
- shel_cap
- phone
- publicpriv
- address
- owner
- shelter
LANDMARK_ElderlyFacilities
- owner
- publicpriv
- site_name
- globalid
- address
LANDMARK_MemorialPoles
- source
- type
- name
- globalid
- pole_id
- editdate
LANDMARK_MunicipalBuildings
- type
- site_name
- globalid
- address
- editdate
LANDMARK_PlacesOfWorship
- site_name
- globalid
- address
LANDMARK_PrivateSchools
- owner
- phone
- site_name
- globalid
- address
LANDMARK_PublicLibraries
- phone
- site_name
- globalid
- address
LANDMARK_PublicSchools
- site_name
- globalid
- shel_cap
- shelter
- phone
- address
- shel_food
LANDMARK_YouthCenters
- phone
- site_name
- globalid
- address
PUBLICSAFETY_EmergencyShelters
- capacity
- name
- globalid
- shel_cap
- shelter
- concateid
- zipcode
- phone
- med_fac
- address
- shel_food
- type
- editdate
PUBLICSAFETY_FireStations
- phone
- site_name
- globalid
- address
PUBLICSAFETY_PoliceStation
- phone
- site_name
- globalid
- address
RECREATION_BikeFacilities
- bike_fac
- globalid
- st_type
- pbike_fac
- length
- street
- comments
- editdate
RECREATION_CommunityGardens
- mapid
- park
- location
- globalid
- editdate
RECREATION_OpenSpace
- globalid
- fcode
- owner
- oscode
- rcode
- join_id
- name
- editdate
RECREATION_Playgrounds
- location
- globalid
RECREATION_PublicPools
- owner
- name
RECREATION_SportsAreas
- type
RECREATION_Waterplay
- status
- join_id
- park
- location
- size
TRAFFIC_CommercialParking
- globalid
- ml
- descriptio
- accessvia
- totalsp
- commspac
- address
- id
- structure
- owntype
TRAFFIC_MeteredParkingSpaces
- space_id
- src_date
- globalid
- editdate
- editor
TRAFFIC_MunicipalParkingLots
- sitename
- ml
- type
- globalid
- address
TRAFFIC_PavementMarkings
- type
b>TRANS_BusShelters
- elev_sl
- direction
- oid_
- globalid
- top_sl
- top_gl
- style
- xls_no
- x_street
- street
- elev_gl
- address
- base_elev
- stop_name
- stop_id
- quantity
- editdate
TRANS_Centerlines
- potential_r_to
- street_name
- tonode
- label
- street_id
- zip_right
- direction
- globalid
- fromnode
- roadways
- potential_l_from
- zip_left
- l_to
- r_from
- street_type
- l_from
- id
- majorroad
- restriction
- r_to
- street
- potential_r_from
- potential_l_to
- alias
- editdate
TRANS_Intersections
- nodenumber
- globalid
- p_x
- p_y
- intersection
- intersectingstreetcount
- editdate
TRANS_MajorRoads
- majorroad
- street
- st_name
- globalid
- st_type
TRANS_Rail
- type
TRANS_SidewalkCenterlines
- type
TRANS_SubwayHeadhouses
- elev_sl
- base_elev
- top_gl
- elev_gl
- top_sl
TRANS_SubwayLines
- grade
- source
- line
- globalid
TRANS_SubwayStations
- line
- station
- globalid