Introduction
Accela APO records must be kept synchronized with EAS addresses in near real time. Regardless of how we build this it is convenient to think of this as a sort of custom replication service. We've already done this successfully with DBIs AVS as described here and here. With Accela however, we are using an ESRI SDE table in an Oracle DB. While there are probably a number of ways to do this, it seems like the simplest approach is to use the ArcGIS rest API. I think we can do everything we need with query, add, and update.
Implementation
I have written most of this code which you can see here. I do not have access to an arcgis server yet so I still have lots of testing to do . However, I have tested the a fair bit of the code and you can see the log file output below.
Next Steps
Before we can continue with testing we need to do the following.
- clean up APO data model on arcgis server
- fix timestamp fields
- fix field name widths
- include address_x_parcel_id
- remove unnecessary fields
- rename some fields to improve clarity
- reload APO data using refactored model
- enable arcgis feature service
- provide user credentials for EAS user
- limit EAS user access to APO table
I'd also like to do the following.
- design review
- code review
- discuss strategy for cut-over from AVS to Accela (see this line) (currently hard coding timestamp)
JSON Example
2012-10-31 14:04:34,340 - XMIT_ACCELA - INFO - posting JSON 2012-10-31 14:04:34,340 - XMIT_ACCELA - INFO - host:accelaGis.sfgov.org 2012-10-31 14:04:34,340 - XMIT_ACCELA - INFO - port:80 2012-10-31 14:04:34,340 - XMIT_ACCELA - INFO - path:/easToAccelaDev/featureService/ 2012-10-31 14:04:34,340 - XMIT_ACCELA - INFO - url:/addFeatures 2012-10-31 14:04:34,341 - XMIT_ACCELA - INFO - user:TODO 2012-10-31 14:04:34,341 - XMIT_ACCELA - INFO - password:TODO 2012-10-31 14:04:34,341 - XMIT_ACCELA - INFO - json: 2012-10-31 14:04:34,341 - XMIT_ACCELA - INFO - { "geometry": { "y": 2110391.1163551975, "x": 6005506.037626389 }, "attributes": { "Y": null, "UNIT_TYPE_DESCRIPTION": null, "AXP_CREATE": null, "LOT_NUM": null, "ZIPCODE": null, "DISPOSITION_DESCRIPTION": null, "STREET_TYPE": null, "ADDRESS_BASE_ID": 483692, "AXPACTIVATE_CHANGE_REQUEST_ID": null, "ADDRESS_BASE_CHANGE": null, "FLOOR_DESCRIPTION": null, "ADD_ACTIVATE_CHANGE_REQUEST_I": null, "BLOCK_NUM": null, "BLK_LOT": null, "ADDRESS_BASE_CREATE": null, "BASE_ADDRESS_SUFFIX": null, "AXP_RETIRE": null, "ADD_RETIRE_CHANGE_REQUEST_ID": null, "AXP_LAST_CHANGE": null, "OBJECTID": null, "BASE_ADDRESS_NUM": null, "CNN": null, "X": null, "ADDRESS_BASE_FLG": null, "UNIT_NUM": null, "MAILABLE_FLG": null, "BASE_STREET_NAME": null, "ADDRESS_BASE_RETIRE": null, "SUB_ADDRESS_CREATE": null, "AXP_RETIRE_CHANGE_REQUEST_ID": null, "SUB_ADDRESS_ID": 725566, "ADD_UPDATE_CHANGE_REQUEST_ID": null, "SUB_ADDRESS_RETIRE": null, "STREET_SEGMENT_ID": null, "COMPOSITE_ADDRESS": null } }
Add Comment