Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 60 Next »

Introduction

In collaboration with Treasurer/Tax Collector and the Department of Public Health, we have written a restful street address geocoding service. This page describes that service. We try to follow the OGC geocoding standard which is described here.  The service uses EAS addresses. While EAS addresses are bound to the street network, the results will differ significantly from a street network geocoding service. For example, if you try to geocode "100 Main St" using this service, you will get zero candidates. That's because (at the time of this writing) there is no "100 Main St" in EAS.  Although there is a street segment that supports "100 Main St" there is no building or proposed building that has that address. Why use EAS geocoding? If you want units or parcels that are associated with an address, this is probably your best bet. EAS addresses are curated and maintained (not mined) and we synchronize the streets and parcels with Dept. of Public Works on a daily basis. To see what EAS address look like, check out the web interface which is here (internal).

User Contacts
ContactDepartment
Richard HagnerTreasurer/Tax Collector

Darrell Ascano

Treasurer/Tax Collector
Stephanie CowlesDept. of Public Health
Aksel OlsenDept. of Planning
Example URLs

NOTE: all the links in this section are to an internal server which is not accessible from outside the city (sorry(sad))

The URL is case sensitive.

Here is a simple query for 115 Main St.

query for 1200 18th will result in 2 candidates.

Your query does not have to include the zip code.

query for 2655 Hyde returns lots of parcels.

query for 1000 Pine returns lots of units.

Example Response

We currently support JSON; see just below for an example. The basic structure follows the OGC eocoding standard which ESRI helped specify. As you can infer from the sample below, EAS provides unit level and parcel level information. We currently exclude retired entities (base address, unit address, parcel) because that's what 95% of our users need. To see what's available, either contact us or take a look the data model.

{
    "spatialReference": {
        "wkid": 4326
    }, 
    "candidates": [
        {
            "address": "115  MAIN ST", 
            "location": {
                "y": 37.79152826999239, 
                "x": -122.39400753158013
            }, 
            "score": 100, 
            "attributes": {
                "base_address_num": 115, 
                "base_address_suffix": null, 
                "street_name": "MAIN", 
                "street_type": "ST", 
                "zipcode": "94105", 
                "parcels": [
                    {
                        "address_base_flg": true, 
                        "blk_lot": "3717012", 
                        "unit_num": null
                    }, 
                    {
                        "address_base_flg": true, 
                        "blk_lot": "3717013", 
                        "unit_num": null
                    }
                ], 
                "units": []
            }
        }
    ]
}
Results and Performance

Using this example file from Dept. of Public Health, we saw a rate of about 1000 addresses per minute with barely any load on the servers. The results on this same dataset are summarized in this table.

scorepercent
880.02
900.10
946.28
962.89
9890.29
Scoring

If everything matches perfectly, you should get a score of 100.

Client

Here is a working command line client.

Running the client against this input file will produce a file like this.

You should be able to feed any standard comma separated value (csv) file to this client.

You'll need python 2.7 or better and you'll need to install the simplejson python library.

Sometime in the future we hope to provide a web page for a file upload and bulk geocoding; this will move us closer to a self-serve model. For now, this solution is quite workable and will give us a good start on providing the web page. If you don't have the resources to install and run the client on your own, consider dropping us a line - maybe we can process it for you.

If you want to run this client alongside an ESRI product that uses a different version of python, you'll need to take some special steps - we hope to include note on how to do that later.

Server

The server code is here and here.

The tests are over here.

 

  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.