An Enterprise Street Addressing System Using Open Source <ul><li>Paul E. McCullough </li></ul><ul><li>City and County of S...
Enterprise Addressing System <ul><li>mundane </li></ul><ul><li>insert, update, delete (retire) </li></ul><ul><li>useful </...
<ul><li>satisfy 80% of street address use cases </li></ul><ul><li>be the “system of record” </li></ul><ul><li>reduce the s...
We thought it should be... <ul><li>geospatial </li></ul><ul><li>web centric </li></ul><ul><li>based on open source </li></ul>
Agenda <ul><li>architecture </li></ul><ul><li>web client demonstration </li></ul><ul><li>extract - transform - load </li><...
Architecture/Deploy Virtualized Linux on Applogic Javascript Ext JS OpenLayers model view controller Web Client Httpd Pyth...
Web Client Demonstration <ul><li>search </li></ul><ul><li>change request </li></ul><ul><li>address review </li></ul>
Extract - Transform - Load ETL app_db map_db Public Works parcels streets Assessor ownership Enterprise GIS transform
Extract - Transform - Load <ul><li>Feature Manipulation Engine </li></ul><ul><li>Python scripts </li></ul><ul><li>dev, qa,...
Messaging Web Services  Address System Web Server look up change notification Client System  Web Server
Review <ul><li>architecture </li></ul><ul><li>web client </li></ul><ul><li>extract - transform - load </li></ul><ul><li>me...
Questions gmail: p.e.mccullough slides: todo – url repo: todo - url
Credits <ul><li>City and County of San Francisco </li></ul><ul><ul><ul><li>Department of Technology </li></ul></ul></ul><u...
the following slides are supplemental
Data Model
Feature:  Simple, Adequate Data Model <ul><ul><li>parcel to address  (many to many) </li></ul></ul><ul><ul><ul><li>apartme...
Feature: Address Lineage 150 change request Main Street 150 152 154 156
Feature: Address Point Table street based geo-coding falls short Add Constraint: point must be within a polygon Main Stree...
 
 
 
 
 
 
 
 
Upcoming SlideShare
Loading in …5
×

Oscon 2010

882 views

Published on

An Enterprise Street Addressing System Using Open Source

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
882
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • About the 80%: An example of such a use: The city is licensing a medical marijuana dispensary at 100 main St. We want to notify the neighbors that are within 300 feet of that addresses parcel boundary. We tried to avoid including tempting things like general purpose geocoder, for example, to answer questions like “where is fishermans wharf?”. About the silos: There are at least a dozen address databases in the city – we’d like to put a dent in this number. Problems with silos: - lots of ETLs to maintain - stale data - inconsistent validations (perfectly appropriate for some use cases)
  • Json works naturally in python and javascript … you serialize an object graph to get create json … you deserialize the json to create the object graph … it ’ s a simple and compelling combination. If you ’ re a developer you should already be familiar with the model-view-controller. Django separates concerns using something I think is best called model-view-template. Note that there are 2 models, really 3. This violates a number of principals. It increase maintenance and complexity. But it ’ s what allows a client to be rich. Debates about these trade offs are common. PostGIS is a spatial extension for postgresql.
  • Search 445 Ashbury – orientation 445 Ashbury - 1 door on the street and 10 units – probably apartments 3513052 - complement to the previous - one parcel or owner – and many addresses 45 Fremont St – 33 stories, mailing room on 2 nd floor, clients visit the other floors 1000 Pine St – some time shares – one flat or unit with multiple owners 4712008 – single parcel with 240 addresses and a mutlipolygon Change Request Address Review
  • We separated the map data because we want to provide mapping and geospatial services to applications other than the address system.
  • Oscon 2010

    1. 1. An Enterprise Street Addressing System Using Open Source <ul><li>Paul E. McCullough </li></ul><ul><li>City and County of San Francisco </li></ul><ul><ul><li>gmail: p.e.mccullough </li></ul></ul><ul><ul><li>slides: </li></ul></ul><ul><ul><li>repo: http://esams.googlecode.com/svn/ </li></ul></ul>
    2. 2. Enterprise Addressing System <ul><li>mundane </li></ul><ul><li>insert, update, delete (retire) </li></ul><ul><li>useful </li></ul>
    3. 3. <ul><li>satisfy 80% of street address use cases </li></ul><ul><li>be the “system of record” </li></ul><ul><li>reduce the silo count </li></ul>We built it to...
    4. 4. We thought it should be... <ul><li>geospatial </li></ul><ul><li>web centric </li></ul><ul><li>based on open source </li></ul>
    5. 5. Agenda <ul><li>architecture </li></ul><ul><li>web client demonstration </li></ul><ul><li>extract - transform - load </li></ul><ul><li>messaging </li></ul>
    6. 6. Architecture/Deploy Virtualized Linux on Applogic Javascript Ext JS OpenLayers model view controller Web Client Httpd Python Django GeoDjango Web Server model view template map_db app_db RDBMS PostgreSQL/PostGIS json ajax Java Tomcat Geoserver Map Server maps map cache
    7. 7. Web Client Demonstration <ul><li>search </li></ul><ul><li>change request </li></ul><ul><li>address review </li></ul>
    8. 8. Extract - Transform - Load ETL app_db map_db Public Works parcels streets Assessor ownership Enterprise GIS transform
    9. 9. Extract - Transform - Load <ul><li>Feature Manipulation Engine </li></ul><ul><li>Python scripts </li></ul><ul><li>dev, qa, prod </li></ul><ul><li>two-phase commit </li></ul><ul><li>ssh </li></ul><ul><li>map cache reseed </li></ul>
    10. 10. Messaging Web Services Address System Web Server look up change notification Client System Web Server
    11. 11. Review <ul><li>architecture </li></ul><ul><li>web client </li></ul><ul><li>extract - transform - load </li></ul><ul><li>messaging </li></ul>
    12. 12. Questions gmail: p.e.mccullough slides: todo – url repo: todo - url
    13. 13. Credits <ul><li>City and County of San Francisco </li></ul><ul><ul><ul><li>Department of Technology </li></ul></ul></ul><ul><ul><ul><li>Department of Building Inspection </li></ul></ul></ul><ul><ul><ul><li>Assessors Office </li></ul></ul></ul><ul><ul><ul><li>Department of Public Works </li></ul></ul></ul><ul><li>Farallon Geographics </li></ul><ul><li>Open Source Projects </li></ul><ul><ul><ul><li>Ext JS / OpenLayers </li></ul></ul></ul><ul><ul><ul><li>Mozilla / Firefox / Firebug </li></ul></ul></ul><ul><ul><ul><li>EveryBlock </li></ul></ul></ul><ul><ul><ul><li>Python / Django / GeoDjango </li></ul></ul></ul><ul><ul><ul><li>GeoServer </li></ul></ul></ul><ul><ul><ul><li>PostgreSQL / PostGIS </li></ul></ul></ul><ul><ul><ul><li>Linux </li></ul></ul></ul>
    14. 14. the following slides are supplemental
    15. 15. Data Model
    16. 16. Feature: Simple, Adequate Data Model <ul><ul><li>parcel to address (many to many) </li></ul></ul><ul><ul><ul><li>apartments </li></ul></ul></ul><ul><ul><ul><li>timeshares </li></ul></ul></ul><ul><ul><ul><li>multi-story </li></ul></ul></ul><ul><ul><ul><li>condos </li></ul></ul></ul><ul><ul><ul><li>tenants in common </li></ul></ul></ul><ul><ul><li>mailing address </li></ul></ul><ul><ul><li>status (official, provisional ...) </li></ul></ul>
    17. 17. Feature: Address Lineage 150 change request Main Street 150 152 154 156
    18. 18. Feature: Address Point Table street based geo-coding falls short Add Constraint: point must be within a polygon Main Street 198 100 101 199

    ×