Introduction
In collaboration with the Treasurer/Tax Collector we are making a restful street address geocoding service available. This page describes this service. We are trying to follow the OGC standard which is described here.
The Service
Here is the DEV URL with an example address of "100 Main St":
The service uses the street segment network only.
These data are carefully maintained by Dept of Public works.
We return a single best candidate and have not implemented a scoring system.
Instead of scoring we return exceptions to help you correct the input data.
The location is based on the linear interpolation of the matching street segment.
We offset by 4 meters (about 12 feet) to the even or odd side like this:
This returns JSON like so:
{ "inputAddressString": "100 Main St", "inputZipCodeString": "94105", "spatialReference": { "wkid": 4326 }, "foundMatch": true, "foundEasMatch": false, "candidates": [ { "address": "100 MAIN ST", "location": "POINT (-122.3948959209805700 37.7917552676099080)", "score": null, "attributes": { "StreetName": "MAIN", "StreetType": "ST" }, "addressNumber": "100", "street": { "streetNamePrimary": { "base_street_name": "MAIN", "street_type": "ST" }, "streetNameAliases": [], "l_f_add": 101, "l_t_add": 199, "r_f_add": 100, "r_t_add": 198, "seg_cnn": 8628000, "geometry": "MULTILINESTRING ((-122.3949402377882200 37.7918420903234780, -122.3934079394635700 37.7906126704266400))" }, "zipCode": "94105", "jurisdiction": "SF MAIN" } ], "validations": [], "didYouMean": [] }
We strongly prefer JSON but we can produce XML if you buy us a beer.
We have tested the DEV implementation against all the Treasurers data with these results:
found street match | found eas match | count | percent |
---|---|---|---|
false | false | ||
true | false | ||
true | true | ||
100 |
You can see the unit tests here.
Examples
The nominal example:
You can send data with no street suffix if it's not ambiguous:
http://10.250.60.189/streetNetwork/geocode/findAddressCandidates?f=json&Address=157 Noe&Zip=94114
But be aware that there are ambiguous cases:
We do not parse degraded addresses:
Address that include extra information at the end parse but typically fail to return a candidate
But if it's clearly as unit, it works
Reading JSON
The JSON is formatted for readability but your browser may obscure that.
The way to see the nicely formated JSON is to right click on the web page and select "view source".
The Chrome browser has a nice feature here: (You need to copy and paste the text below to the Chrome address bar and hit enter.)
view-source:http://10.250.60.189/streetNetwork/geocode/findAddressCandidates?f=json&Address=169 SACRAMENTO ST&Zip=94114
0 Comments