NJ Geospatial Forum Talk - Homepage of Bill Wetzel

enTaxr[nj] - Tax Maps of
New Jersey
New Jersey Geospatial Forum
6 June 2014
Bill Wetzel
[email protected]
Motivation / Trajectory
• Wanted convenient access property data for
specific parcels & explore neighborhoods
• Browsing difficult, search not forgiving in Open
Public Records. QGIS, ArcGIS don’t scale.
• Initial target was Google Earth, KML files
containing property data, awkward user interface
• Maps followed from generated shapefiles and
property class, assessment data
• Move to Google Maps for intuitive user interface
• Intuitive, graphical geospatial index to
property data through Google Maps
• Property data for 3,441,254 parcels in 565
towns in NJ
• Maps for 21 counties and 565 towns
• Error and mismatch logs for 565 towns
• Tools for automatic generation of property
data files and maps
Governor’s House
• Municipality, not tile, is basic unit of locality
• Fully automatic processing, no manual steps
with gui-based GIS tools
• Most work in EPSG:3424 (NAD 83/ NJ)
projection. Convenient to work in feet.
• Re-project to EPSG:4326 (WGS 84) for KML
Munis Index Map
• All 565 municipalities
• Zoom and click on municipality
• Curiosities – diagonal line from
Readington Township to Little Egg
Harbor – must be a story
Counties Index Map
• 21 counties
• Click on county or text in sidebar
Mercer County Index Map
• Click on municipality
• All index maps semi-transparent to
show town names on map
Trenton Parcels Index Map
• Zoom in, click on parcel
• Parcels index on satellite view
• Large municipalities split into
• Google Maps limitation, 1000
parcels per KML file, about 14 KML
files per section
• Navigate with Prev/Next
300 Riverview Plaza, Trenton
• Search Box on Parcels Index
• Search only meaningful within current
• Hide / Show parcels layer
• Legend – show legend on sidebar
• Parcels Index over satellite view
• County / Munis Index over street view
Nearby Area
• Parcels colored by property class
• Residential, commercial, industrial
• Exempt, vacant, farms and others
less muted
Property Class Map – Rumson
• All maps to consistent scale
• 10 feet /pixel - most
• 5 feet / pixel – Monmouth
• Space limits of web host
Assessment Map - Rumson
• Colored blue to red
• 21 Steps of $150,000
• $0.0 to $3,000,000 and up
• Exempt – light gray
• No data – dark gray
• High assessed value of
exempt parcels confounded
•Tax map almost identical,
not included here
Property Class Map - Rumson
• Class ID shown in parcel
• Same coloring as parcels on Google
• Coastline identified and colored
• Follows from early interest in
identifying waterfront property
• Intersection of parcel with buffered
• Waterfront parcels no longer marked
• Road style of secondary importance
Assessment Map - Rumson
• Assessment shown on edge of parcel if
• Intent is qualitative heat map
Assessment Map –
Monmouth County
• Property Class &
Assessment maps for all 21
State Table Index
• Alternate to index maps
• Thumbnail links to maps
• KML files
• County table and graphical
• Graphs are experimental,
have rough edges, not
discussed further here
County Table Index
• Thumbnail links to property
class and assessment maps,
(property tax maps for
• Parcels graphical index
• Error log
• pams_pin mismatch log
Inputs - Property Data
• Mod-IV assessment data
• SR-1A sales data
Inputs - GIS Shapefiles
Municipal parcels by county - NJ
County & municipal outlines - NJ
State coastline - NJ
Streets – Open Street Maps
Place names – Open Street Maps
Parcels, coastline, street places all clipped to
municipal outlines
Data Quality
• Non-numeric where numeric expected
• Non-ASCII characters
– 0xAC in “Ponce, Luis J-Ces*edes” in Rahway
– Null character
• Property Class – clean, not validated
• Non-Usable Code – oh/zero, spaces, decimal points, some
• Few parcels mislabeled – apparent on maps
• Curiosities - One parcel in Wrightstown lies within New
• Winding direction of polygons/holes in shapefiles slightly
Common Errors
Duplicate pams_pin
Invalid recorded date 00-00-0000
Undefined numeric non-usable code
Incorrect field count in record
Non-numeric non-usable code
Pams_pin has insufficient parts
Overall, given 3,441,254 parcels, data is
remarkably clean
• Critical field – join parcel shapefile with
property data, no data to display if mismatch
• Typos – leading zero, extra decimal point
• Assessor creativity – non-numeric in block/lot
number: 0904_1_2.B, 0904_189.A_29.A
• Inconsistent use of qcode field
• Systemic errors – temporal misalignment, lot
renumbering, missing updates, duplication,
missing qcodes
Correction Heuristics
• Remove qcode – 14,126
• Remove leading zero from lot number - 7527
• Add leading zero to lot number - 1835
pams_pin Mismatch Rate
• Almost classic 80/20 rule – 16% of towns
have 80% of the mismatches
Other Errors
• Log scale
used because of large range of error counts. Zeroerror-count data points are not shown.
• 387 towns have no errors
• Jersey City has 6599 errors from duplication
Questions / Plea to
Assessors and the GIS
• Are lists of errors and mismatches in one place
for all municipalities helpful?
• Has anyone done it before? Does anybody care?
• If so, how disseminate the lists to assessors or
others for correction?
• How validate errors, especially qcode issues?
• Assessors – please look at Error Log on the
website and correct the errors, if any, for your
town’s property data.
Development Environment
Linux Mint, Python, JavaScript
Pyshp – shapefile processing
Pyproj – projection translation
Shapely – intersections, buffers
Simplekml – KML file creation
Mapnik – map production
Pandas, numpy, matplotlib – limited use
Future Direction
• Move property data from KML file to database
• Add generalized search over property data
• Add other maps – zoning, hazard (flood and
toxic areas), census data
• Add error summaries
• Explore GDAL/OGR library
• Find market for project

similar documents